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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 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

相关文章
重学Java基础篇—ThreadLocal深度解析与最佳实践
ThreadLocal 是一种实现线程隔离的机制,为每个线程创建独立变量副本,适用于数据库连接管理、用户会话信息存储等场景。
96 5
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
213 12
融合DNS技术产品和生态
本文介绍了阿里云在互联网基础资源领域的最新进展和解决方案,重点围绕共筑韧性寻址、赋能新质生产展开。随着应用规模的增长,基础服务的韧性变得尤为重要。阿里云作为互联网资源的践行者,致力于推动互联网基础资源技术研究和自主创新,打造更韧性的寻址基础服务。文章还详细介绍了浙江省IPv6创新实验室的成立背景与工作进展,以及阿里云在IPv6规模化部署、DNS产品能力升级等方面的成果。此外,阿里云通过端云融合场景下的企业级DNS服务,帮助企业构建稳定安全的DNS系统,确保企业在数字世界中的稳定运行。最后,文章强调了全链路极致高可用的企业DNS解决方案,为全球互联网基础资源的创新提供了中国标准和数字化解决方案。
投资回报与预算考量:CRM产品报价全解析
在当今竞争激烈的商业环境中,CRM系统已成为企业不可或缺的工具。它能有效管理客户信息、提升销售效率、优化服务并增强忠诚度。选择合适的CRM需考虑功能、用户数量、定制需求、技术支持及数据安全等因素,确保在预算内实现最大价值。企业在挑选时应明确需求、比较产品、评估长期回报,并考虑扩展性。最适合自己业务需求的CRM才是最佳选择。
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
5月前
|
PHP命名空间深度解析及其最佳实践####
本文深入探讨了PHP中引入命名空间的重要性与实用性,通过实例讲解了如何定义、使用及别名化命名空间,旨在帮助开发者有效避免代码冲突,提升项目的模块化与可维护性。同时,文章还涉及了PHP-FIG标准,引导读者遵循最佳实践,优化代码结构,促进团队协作效率。 ####
64 1
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
186 29
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

推荐镜像

更多