《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)

本文涉及的产品
对象存储 OSS,20GB 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
对象存储 OSS,内容安全 1000次 1年
简介: 阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代

本文来源于阿里云社区电子书《阿里云产品四月刊》


Ganos H3 地理网格能力解析与最佳实践

关于 Ganos

Ganos  是阿里云数据库产品事业部联合阿里云飞天数据库与存储实验室联合共同研发的新一代云原生位置智能引擎,它将时空数据处理能力融入了云原生关系型数据库PolarDB、云原生多模数据库Lindorm、云原生数据仓库AnalyticDB 和云数据库RDS PG 等核心产品中。Ganos 目前拥有几何、栅格、轨迹、表面网格、体网格、3D  实景、点云、路径、地理网格、快显十大核心引擎,为数据库构建了面向新型多模多态时空数据  的存储、查询、分析、服务等一体化能力。

image.png

 

本文介绍的地理网格引擎能力,依托阿里云云原生关系型数据库 PolarDB 建设输出。

 

关于 Ganos H3 地理网格

地理网格是一种再现地球表面的多边形网格单元集合,可以用于表示地物在地理空间中  的位置信息,融合其他各类时空数据。

 

地理网格计算一般由粗到细,逐级地分割地球表面,将地球曲面用一定大小的多边形网  格进行近似模拟,其目标是将地理空间的定位和地理特征的描述一体化,并将误差范围

 

控制在网格单元的范围内。每个网格单元都会进行编码,网格与编码是一一对应的。三  维地理网格不只考虑经纬度,还把高度维纳入剖分和编码范围。

 

Ganos 地理网格引擎目前涵盖 GeoSOTH3 两种地理网格。GeoSOT 是我国提出的一套地球空间剖分理论,并在此基础上发展出的一种离散化、多尺度区域位置标识体系(关GeoSOT 网格的最佳实践可参考Ganos 地理网格引擎支撑无人机路径规划能力实践H3Uber 研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面。

 

H3   设计独特之处在于其采用六边形结构,相较于传统的四边形或三角形网格,六边形网格具有更均匀分布、邻居关系固定且无方向性等优点,这使得在进行空间数据分析、  路径规划、地理编码以及地理围栏等领域时,能够更加精确和高效地组织和查询地理空   间数据。

 

利用  Ganos  地理网格的函数可以将不同的空间范围转换为网格编码,可以求出网格编码的空间范围、层级和父子网格。Ganos   支持退化网格计算如下图),即充分利用网格的层级关系,用更精简的网格组合对空间范围进行表达。此外,Ganos   自研地理网格索引,可用于高效查询网格码以及加速聚合计算。

image.png

 

 

Ganos H3 地理网格能力解析

 

 

业务场景

 

H3 地理网格技术在诸多业务场景中得到广泛应用,主要包括:

 

  • 物流与出行服务:基于地理网格开展路线规划、区域覆盖分析、配送范围界定、热  点区域发现等功能建设;

 

  • 数据分析:基于地理网格开展人口密度分析、移动用户行为分析、地理市场细分等  大数据分析领域;

 

  • 物联网(IoT):面向智能城市、环境监测、资产追踪等需要实时监控的数据,基于  地理网格进行监测数据空间分布分析的场景;

 

  • 社交网络:基于地理网格构建面向位置服务(LBS)、好友位置分享、事件通知等 社交场景的应用;

 

  • 应急响应与公共服务:基于地理网格开展灾害分布分析、灾害预警热力、应急资源  分布、紧急救援区域划分等;

 

总之,H3   网格技术为企业和开发者提供了一种强大的工具,能够更好地管理和利用地理空间数据,提高与位置相关的决策效率和准确性。

 

能力解析

 

Ganos H3 地理网格包含网格输入/输出,网格父子关系判断,网格路径分析,网格查询等多种能力,地理网格还支持转为 Ganos Geometry 类型,与其它类型的空间数据进行联合分析。值得强调的是,Ganos H3  地理网格也支持退化,用更精简的网格组合对空间范围进行表达,降低用户因打码带来的数据库存储成本。

 

关于 Ganos H3 地理网格详细功能,可参见 Ganos 地理网格用户手册

 

 

最佳实践

下面我们使用真实场景数据来介绍如何使用 Ganos H3 进行空间点数据的入库、打码、查询到最终显示等功能。这里我们选择的测试数据是 Uber 发布的 2023 年纽约出租车位置数据集 FOIL 进行测试。FOIL 数据记录了纽约地区所有的出租车上下车的位置数据, 详细信息参考

image.png

 

数据导入

 

在使用 Ganos H3 前,需要先创建 GeomGrid 扩展,SQL 如下: CREATE EXTENSION Ganos_GeomGrid CASCADE;

GeomGrid 中提供了 h3grid 字段类型,用于表示 H3 编码。下面的 SQL 语句创建了一个带有 h3grid 类型的数据表 FOIL2013,这里字段 h3_lev13 代表我们使用的是第 13 层级的 H3 编码。H3 不同层级网格具有不同分辨率,用户可以可以更具具体业务需求灵活定义。H3 各个层级对应的空间分辨率请参考

 

-- 创建表用来保存 foil 点数据,h3_lev13 代表 13 级编码 CREATE TABLE FOIL2013 ( id text, lon float, lat float, h3_lev13 h3grid);

 

FOIL 文件是以 csv 文件格式保存的。用户可以通过编程方式从 CSV 中提取相关信息通SQL 入库,也可以通过 FDW 方式入库,这里我们使用 Ganos FDW 模块通过 FDW 方式实现数据快速入库。

 

首先我们把目标文件上传到 oss 指定目录,比如这里我们文件路径为:

endpoint:oss-cn-hangzhou-internal.aliyuncs.com bucket:dla-ganos-hz
path:FOIL/trip_data_1.csv

 

首先我们创建 Ganos FDW 扩展

 

CREATE EXTENSION ganos_fdw CASCADE;

 

 

然后我们需要创建一个 csvserver,负责管理 csv 文件,ak_id 和 ak_secret 就是用户的 OSS 连接 AK 的 id 和 secret 信息,format 为'CSV'代表管理的数据格式为 CSV。

CREATE SERVER csvserver FOREIGN DATA WRAPPER ganos_fdw OPTIONS ( datasource
'OSS://<ak_id>@oss-cn-hangzhou-internal.aliyuncs.com/dla-ganos-hz/FO IL/trip_data_1.csv', format 'CSV' );
CREATE USER MAPPING FOR CURRENT_USER SERVER csvserver OPTIONS (user
'<ak_id>', password '<ak_secret>');

 

FDW 服务创建成功后,我们就可以通过外表的形式,将 OSS 上的 csv 映射到数据库中作为一个普通表进行查询, 详细 SQL 语句如下。这里我们只选择 medallionpickup_longitudepickup_latitude 三列数据,映射的外表名称为 trip_data_1:

CREATE FOREIGN TABLE trip data 1 (
medallion va rchar ,
pickup_ longitude varchar,
pickup_ latitude
varchar)
SERVER csvserver OPTIONS ( layer 'trip_ data_ 1') ;

 

查询外表 trip_data_1:

 

SELECT * FROM trip_data_1;

 

 

 

结果如下:

image.png

 

然后将外表数据导入到前面我们创建的 FOIL3 表中:

INSERT INTO FOIL2013SELECT medallion as id ,cast (pickup_longitude as
double precision) as lon, cast(pickup_latitude as double precision) as lat FROM trip_data_1;

 

查询 FOIL2013,可以看到 CSV 上的信息已经成功导入到 FOIL2013 表格中,后面我们就可以根据经纬度等位置信息进行打码了。

 

SELECT * FROM FOIL2013;

 

 

image.png

 

 

《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(2)https://developer.aliyun.com/article/1554159

相关文章
|
5天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
|
19天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
60 3
|
30天前
|
域名解析 网络协议
非阿里云注册域名如何在云解析DNS设置解析?
非阿里云注册域名如何在云解析DNS设置解析?
|
23天前
|
运维 Cloud Native 持续交付
云原生技术解析:从IO出发,以阿里云原生为例
【10月更文挑战第24天】随着互联网技术的不断发展,传统的单体应用架构逐渐暴露出扩展性差、迭代速度慢等问题。为了应对这些挑战,云原生技术应运而生。云原生是一种利用云计算的优势,以更灵活、可扩展和可靠的方式构建和部署应用程序的方法。它强调以容器、微服务、自动化和持续交付为核心,旨在提高开发效率、增强系统的灵活性和可维护性。阿里云作为国内领先的云服务商,在云原生领域有着深厚的积累和实践。
51 0
|
30天前
|
监控 网络协议 数据挖掘
阿里云国际云解析DNS如何开启/关闭流量分析?
阿里云国际云解析DNS如何开启/关闭流量分析?
|
3天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
14 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
66 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
52 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
59 0
|
1月前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
80 0

推荐镜像

更多