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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: 阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代

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


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

对象打码

 

数据入库后,我们可以对点数据进行打码。Ganos H3 提供了多种编码方式,比如通过指定经纬度、标准 H3 字符串、Integer 类型 H3 编码、二进制类型 H3 编码,以及直接Point 类型转换为H3 等方式。详细内容请参考文档:ST_H3FromTextST_H3FromIntST_AsH3GridST_H3FromLatLng 等。

 

这里我们使用的是 ST_H3FromLatLng 函数,用户通过指定将经纬度和目标层级可以直接获得 H3 编码。比入下面 SQL 语句就是从 FOIL 表中的 latlon 字段,生成第 13级的 H3 编码,并保存在 h3_lev13 列中,并通过 ST_AsText 函数查询具体 h3 编码。

 

-- Level 13UPDATE FOIL2013 SET h3_lev13 = ST_H3FromLatLng(lat,lon,13);-- 查询 SELECT id,lon,lat,ST_AsText(h3_lev13) as h3 FROM FOIL2013 LIMIT 100;

 

查询结果如下图:

 

 

image.png

 

网格聚合

 

使用网格的一个典型场景就是对空间数据按照格网码进行空间聚合统计分析,从而获取  热力图等专题地图信息。比如下面我们就是根据 h3_lev13 列中的 h3 编码,从 FOIL23 表格中统计出每个网格内的点数量(count(*)):

-- 按 照 h3_lev13 进 行 统 计 CREATE TABLE h3_count_lev13 ASSELECT ST_AsText(h3_lev13) AS h3code,count(*) FROM FOIL2013 GROUP BY h3_lev13;-- 查 询 统 计 结 果 SELECT ST_AsText(h3_lev13), ST_AsText(geometry),count FROM h3_count_lev13 order by count desc;

 

输出结果:

 

 

image.png

 

网格查询

 

Ganos H3 提供了多种基于 H3 编码的操作,比如下面我们可以通过 ST_GridDistance 方法获取 FOIL23 中所有的与空间位置(40.71481749,-73.99100368)对应格网的距离小于 10 的格网点:

SELECT
FROM
foi1201 3WHEREST GridDi stance (ST_ H3F romLatLng(40.71481749, - 73.9910036
8, 13) , h3 lev13) <10;

 

输出结果如下:

image.png

 

 

 

 

网格可视化

 

Ganos 支持像几何数据一样可视化 H3 网格,即可以把 H3 网格转化为矢量瓦片,再由前端渲染查看。Ganos 提供了原生 H3 网格 MVT 函数和索引,用户可以很便捷地查询和可视化 H3 网格及其包含的统计信息。值得一提的是,Ganos 支持可视化动态生成的H3 网格,比如用户想可视化层级为 10H3 网格,但是表格中并没有保存层级为 10 H3 网格,此时可以使用 ST_AsMVTST_AsMVTGeom(ST_H3FromLatLng(lat, lon, 10), ...)的命令来动态生成层级为 10H3 网格的可视化结果,但是在效率上会不如事先保存 H3 网格,因此下面主要介绍如何可视化保存在表格中的 H3 网格。

 

创建 H3 网格的索引 SQL 指令如下(创建索引对可视化并不是必须的,但能有效提升可视化效率):

 

CREATE INDEX ON h3_count_lev13 USING GIST(h3_lev13);

 

 

下面的 SQL 指令是根据 H3 网格获取编号为(14,4826,6157)的矢量瓦片,该指令和获取基于矢量数据的矢量瓦片的指令基本一致。

SELECT
ST_ AsMVT (tile)
FROM
( SELECT
ST_ AsMVTGeom(h3_ lev13,
ST_ Transform(ST_ TileEnvelope (14,
4826,
6157),4326) ) AS grid,
count
FROM h3_ count_ lev13
WHERE h3_ lev13 && ST Transform(ST_ TileEnvelope (14
4826,
6157),4326) ) AS tile;

 

下面的动图展示了在前端实时渲染在数据库端动态查询 H3 网格的矢量瓦片的结果,网格的颜色是根据网格对应的统计值动态决定的。

 

前端部分只需要一个 Python 脚本和一个 HTML 文件,启动时只需要运行该 Python 脚本和打开浏览器输入 localhost:5100 即可看到结果。Python 脚本会根据用户鼠标在地图上的位置和缩放层级自动生成相应的 SQL 查询发送给数据库,然后将数据库的查询

 

结果显示在网页上。前端的具体代码见附录部分。


 

技术优势

相比 pg-h3 等开源产品,Ganos H3 具有如下技术优势:

 

  • 支持更加丰富的打码方式,比如用户可以直接将 Ganos 的点、线、面类型转换为H3 编码

 

  • Ganos H3 在打码效率和格网查询效率上都进行了大量性能优化。

 

  • Ganos H3 支持与其他 Ganos 模型实现联合查询分析,比支持将几何(geometry) 类型直接转换为 h3 编码,或者使用 h3 与栅格(raster)模型进行基于格网的像素统计等。

 

  • Ganos H3 基于 PolarDB 底层的多态分层存储,可以实现基于 OSS 的海量数据点的打码与存储,显著降低存储成本。

 

总结

本文重点介绍了 Ganos H3 地理网格的相关能力,并基于一个最佳实践介绍了如何使用

 

H3    地理网格进行矢量数据的聚合、空间关系判断与可视化。地理网格是移动对象相关应用场景的重要支撑,它与轨迹、矢量、栅格等数据类型融合之后可以带来十分巨大的    业务价值与想象空间。Ganos    作为全球首个支持移动对象(MOD)的数据库,相关能力已经在交通、物流、出行、汽车等多个客户侧得到有效验证。相较于传统中间键或业    务代码实现的方式,Ganos  从数据库系统最底层为大规模移动对象提供时空处理框架, 计算效率与综合成本均有大规模改善。未来 Ganos 还将提供更多高效的面向移动对象的场景的库内原生分析能力,推动相关领域的空间信息应用全面走向在线化


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

相关文章
|
4天前
|
存储 Cloud Native 关系型数据库
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)
|
1天前
|
存储 关系型数据库 Java
LDO产品的基础知识解析
低压降稳压器 (LDO)是一种用于调节较高电压输入产生的输出电压的简单方法。在大多数情况下,低压降稳压器都易于设计和使用。然而,如今的现代应用都包括各种各样的模拟和数字系统,而有些系统和工作条件将决定哪种LDO最适合相关电路,因此,现在我们需要关注这些决定性因素。 压降电压VDO,是指为实现正常稳压,输入电压VIN必须高出所需输出电压VOUT(nom) 的最小压差。 如果 VIN 低于此值,线性稳压器将以压降状态工作,不再调节所需的输出电压。在这种情况下,输出电压 VOUT(dropout)将等于 VIN 减去压降电压的值 以调节后电压为 3.3V 的 TPS799 等 LDO 为例:当
18 6
|
2天前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
5 0
|
3天前
|
存储 关系型数据库 Java
LDO产品的基础知识解析
低压降稳压器 (LDO)是一种用于调节较高电压输入产生的输出电压的简单方法。在大多数情况下,低压降稳压器都易于设计和使用。然而,如今的现代应用都包括各种各样的模拟和数字系统,而有些系统和工作条件将决定哪种LDO最适合相关电路,因此,现在我们需要关注这些决定性因素。 压降电压VDO,是指为实现正常稳压,输入电压VIN必须高出所需输出电压VOUT(nom) 的最小压差。 如果 VIN 低于此值,线性稳压器将以压降状态工作,不再调节所需的输出电压。在这种情况下,输出电压 VOUT(dropout)将等于 VIN 减去压降电压的值 以调节后电压为 3.3V 的 TPS799 等 LDO 为例:当
7 0
|
12天前
|
机器学习/深度学习 缓存 算法
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
|
14天前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
23 3
|
6天前
|
Java 数据库连接 Spring
Spring 整合 MyBatis 底层源码解析
Spring 整合 MyBatis 底层源码解析
|
5天前
|
NoSQL Java Redis
【源码解析】自动配置的这些细节都不知道,别说你会 springboot
【源码解析】自动配置的这些细节都不知道,别说你会 springboot
|
12天前
|
存储 NoSQL 算法
Redis(四):del/unlink 命令源码解析
Redis(四):del/unlink 命令源码解析
|
14天前
|
XML Java 数据格式
深度解析 Spring 源码:揭秘 BeanFactory 之谜
深度解析 Spring 源码:揭秘 BeanFactory 之谜
19 1

热门文章

最新文章

推荐镜像

更多