PG Ganos时空场景开发实践 ——图贲

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: PG Ganos时空场景开发实践——图贲

内容简要:

一、认识Ganos

二、如何使用Ganos

三、进阶实战

 

 

一、认识Ganos

(一)Ganos是什么

Ganos是包含SQL + NoSQL云数据库的时空引擎。

Ganos取名于大地女神盖亚(Gaea) 和时间之神柯罗诺斯 (Chronos),代表“时空”结合。Ganos的使命是将时空地理信息处理融入公有云/专有云PaaS服务,成为一种普惠计算。

image.png

上图列举了Ganos的许多特性,这些特性有数据库本身的能力,更多的是Ganos赋能给数据库之后的能力。

 

(二)Ganos支持哪些产品

image.png

Ganos不是一个独立的产品,往往以赋能的方式嵌入在数据库产品中。

如上图所示, Ganos赋能的产品包括RDS PG、PolarDB、ADB PG、Lingdorm/HBase以及DLA。其中RDS PG和PolarDB是事务型关系数据库,也可以做一些简单的分析。这两款数据库中的模型,Ganos的功能是最全面也是最丰富的。

可以将Ganos理解为PostGIS计时的升级版本PostGIS++,完全兼容PostGIS,而其他几种数据库更多是面向大数据分析型的场景。

 

(三)Ganos中丰富的时空模型

image.png

相比PostGIS,Ganos在时空模型上进行了较多的扩充。

除了支持传统的几何模型、栅格模型和拓扑网络模型,还扩充支持了网格模型、时空轨迹模型以及点云模型。其中空间网格模型是Ganos3.0版本推出的新特性,编码标准遵循自然资源部地球空间网格编码规则,在这个规则基础之上设计和实现。

 

 

二、如何使用Ganos

(一)创建Ganos扩展

image.png

在PostgreSQL数据库中使用Ganos需要先创建Ganos的扩展。

上图列举了Ganos中的七大模型以及扩展语句,其中六个模型在上面已做过介绍,此处要额外补充的是矢量金字塔模型。它是在几何模型基础之上新增的一个扩展,是为了能够快速显示大规模空间几何数据(千万级以上)而设计的一种结构。矢量金字塔对空间几何数据创建稀疏索引,按规则对密集区域预处理,可以输出标准的mvt-pbf格式数据,通过Ganos提供的矢量金字塔,亿条空间几何记录可以实现分钟级预处理、秒级终端显示。

image.png

创建扩展之后,如上图所示,在数据库中可以通过\dx命令就能查询到所有已经创建的扩展,目前Ganos3.3版本。

 

(二)矢量、栅格、轨迹入库

创建Ganos扩展之后,接下来要解决数据入库,不同的数据类型有不同的入库方法:

Ø  矢量数据入库

主要依赖空间开源的工具,包括Ogr2ogr、shp2pgsql、QGIS、pg_dump/pg_restore等。

Ø  栅格、遥感数据入库

1)Ganos提供入库接口ST_importFrom、ST_createRast;

2)支持OSS、NAS等外部挂载入库,表示原始文件放在OSS或NAS中,将源数据入到数据库,金字塔数据可选择放入数据库,也可选择放入OSS或NAS中;

3)pg_dump/pg_restore时,外部数据不需要挪动;

4)入库时支持金字塔内建+外建随机组合;

5)批量文件并行入库,支持单幅超大影像并行入库。

Ø  轨迹数据入库

Ganos提供入库接口ST_makeTrajectory;

支持轨迹点动态追加;

支持点表抽取为轨迹对象。

Ganos与SuperMap、ArcGIS完成对接, 矢量数据与栅格/遥感数据可借助其平台直接入库。

 

(三)PG Ganos如何管理PB级遥感影像

1. PostgresSQL + Ganos + OSS组合

image.png

上文中提到,Ganos在云上以OSS存储,它是打通的。因此通过“PostgresSQL + Ganos + OSS”组合,可实现 PB级遥感影像的管理。源数据和部分金字塔数据可以存储在数据库内部,遥感原始数据存放在OOS中,由于OOS存储价格低廉,使得用户的使用成本也有所降低。

 

2. 遥感影像注册(入库)

image.png

只需要按照insertSQL语句直接写入到数据库,将OSS地址传给createrast接口即可。

 

3. 大范围影像拼接、镶嵌

将遥感影像数据注册入库之后,在Ganos也可以通过ST_mosaicFrom、ST_mosaicTo对大范围的影像进行拼接镶嵌等操作再进行输出,达到管理PB级遥感影像管理的目的。

 

(四)PG Ganos如何管理轨迹数据

image.png

如上图所示,Ganos管理轨迹数据主要通过轨迹构造、轨迹压缩和轨迹相似性判断。

在Ganos中有原生的轨迹模型叫Trajectory,在创建轨迹表时可直接用这个数据类型。轨迹构造的单独接口makeTrajectory有很多的重载版本,具体使用方式可在官网的用户手册里进行查看。

轨迹还提供一些轨迹压缩与轨迹相似性判断这些比较重要的接口。轨迹压缩是通过Compress压缩接口保留重要的轨迹特征点,因此压缩质量会更好。轨迹相似性目前主要支持Lcs算法以及Jaccard的这种路径匹配算法。

 

(五)Ganos与开源工具

image.png

如上图所示,Ganos无缝对接兼容PostGIS的各类GIS软件,显示和编辑包括GeoServer、QGIS、uDig、OpenJump等,这里重点介绍PGAdmin4。

Ganos团队对PGAdmin4进行了定制修改,目前能支持显示Ganos中的矢量和栅格数据,后续也会支持轨迹数据的直接显示。同时,在PGAdmin4中可以使用Ganos矢量金字塔功能,也就是说在PGAdmin4中可以直接显示上亿级的矢量数据,可以达到不切变、无障碍浏览效果。

image.png

三、进阶实战

(一)实战介绍

Ø  实战课题

1)如何通过Ganos快速分析城市结构、社会属性与新冠病毒传播的之间的关系;

2)如何在Ganos中通过轨迹数据追踪患者行程,并挖掘风险点。

Ø  实战技能

1)利用Ganos进行空间统计分析;

2)实现矢量、栅格一体化查询;

3)实现轨迹追踪;

4)实现跨区域时空查询。

Ø  实战目的

1)熟练使用Ganos;

2)学会多源数据融合处理;

3)实现时空场景快速呈现,减少开发成本。

 

(二)空间统计分析

1.数据准备

数据准备包含两个类型的数据:矢量数据与栅格数据。

image.png

矢量数据包含行政街区数据与患者案例数据。如上图所示,通过矢量数据可以看到案例患者的性别与年龄,确诊医院,所属街区,家庭住址等。

image.png

栅格数据是具有社会属性的数据,包括Ndvi监测,建筑密度,建筑高度值等 都以Tif文件形式存在。

 

2.数据入库

Ø  矢量数据库入库

ogr2ogr -nln hk_tpu -nlt MULTIPOLYGON -geomfield geom -f PostgreSQL

PG:“dbname=‘ganos_train_db’host=‘pgm-***.rds.aliyuncs.com'port='1921'

user='ganos_train' password='ganos@2021‘“ ”./data/hk_tpu_84.shp”

ogr2ogr -nln hk_cases …“./data/sick_cases.shp”

矢量数据是用Ogr2ogr进行入库,填写的是云上购买的RDS PG的访问参数。

image.png

Ø  栅格数据入库

l  首先,Tif文件上传至OSS;

l  其次,执行导入的SQL语句;

insert into hk_ndvi_rast values(1, st_importfrom('rbt', 'OSS://accessKey:accessSecret@oss-cn-beijing-internal.aliyuncs.com/bucket/data/ndvi_spot_84.tif'));

这里由于影像文件较小,采用的是Importfrom接口,可以将影像文件的所有像素值全部写入到数据库。

 

3.统计分析

image.png

如上图所示,假如要统计香港街区患者案例较多的街区编号,可以通过  st_contains空间查询接口,快速的得到案例排名前5的街区编号,分别为121、131、212、113、144。

 

(三)矢栅一体化查询

用Ganos可以进行矢量+栅格一体化查询,提高开发效率。例如查询街区编号为121区域的Ndvi监测总值、平均值,查询某某街区的建筑密度、建筑高度等。在以往的GIS方式中,上述查询通常需要五个步骤,如下图所示:

image.png

如今用Ganos一条SQL语句即可搞定,语句如下:

通过SY_Values接口传入一个栅格对象,接着再传入一个几何对象,指定栅格对象的查询波段,然后就可以统计几何对象范围内所有的像素值,同时计算它的平均值,极大提高开发效率。

 

在矢删一体化的基础上,可以分析城市结构、社会属性与新冠病毒传播的之间的关系,以下是通过一条SQL语句查询计算所有街区的ndvi平均值与案例数之间的关系。

image.png

NDVI值表示植被指数,当这个值过大或者过小时,不一定代表人群数多,往往是在中间值时,人口聚集最多。如上图所示,我们截取了前面几十条以及后面几十条数据,通过结果可以发现NDVI值在为0.2~0.27之间,它的案例数是最聚集的。

同样通过一条SQL语句,我们可以计算所有街区的建筑高度值与案例数之间的关系,如下所示:

image.png

可以看到,在建筑密度比较低的这些街区中,案例分布通常是个位数。在建筑密度比较高的这些街区中,案例数明显增加,最大值也是分布在建筑密度比较高的这些区域,由此可以反映出来建筑密度值越大,案例数量呈现聚集性。

 

(四)轨迹追踪

1.用点表构造轨迹表

image.png

我们可以将患者的案例形成轨迹,同时通过轨迹追踪患者的行程,挖掘一些潜在的风险点。

如上图所示,我们用案例编号查询行程,可以看到编号为105的案例在不同的时刻去过很多场所,监测时间记录不够详细,只具体到某一天。可以将监测点抽取为行程点形成轨迹,通过ST_makeTrajectory,把编号为105的案例聚合成一条轨迹写入到轨迹表里。

如果想把所有的患者案例聚合成轨迹,将这个查询语句直接改成Group By就可以实现。

 

 

2.轨迹追踪

形成轨迹表后可以进行轨迹追踪,需要经过下列语句:

Ø  轨迹空间显示

create table hk_case_traj_geom as select id,st_trajectoryspatial(traj) as geom from hk_case_traj;

Ø  轨迹追踪

select traj from hk_case_traj where id = 230;

例如我们查询编号为230的轨迹,可到轨迹表中输入相应编号进行查询,可以快速查询到该编号到过的场所与主要走向,如下方所示:

image.png

image.png

(五)时空查询

如果通过案例查询310区域,那么在案例表中会显示该区域曾出现过一个患者案例,如下图所示:

image.png

但我们拿到行程轨迹后,可以进行轨迹跨区域时空查询,包括时间空间的交织,挖掘潜在的风险点。实现语句如下:

select traj from hk_tpu a, hk_case_traj b where

st_intersects(b.traj,'2020-03-19

00:00:00'::timestamp,'2020-03-21

00:00:00'::timestamp, a.geom) and a.tpu = 310;

通过这种方式,可以查询到穿过310区域的患者轨迹有8条,影响风险等级评判。

 

(六)使用接口汇总

Ø  Ganos Geometry

ST_Intersects、ST_Contains

矢量接口:主要是空间关系的判断。

Ø  Ganos Raster

ST_importFrom、ST_createRast、ST_Values、ST_mosaicFrom、ST_mosaicTo

栅格接口:主要是入库、矢量栅格一体化查询以及拼接镶嵌。

Ø  Ganos Trajectory

ST_makeTrajectory、ST_trajectorySpatial、ST_Intersects

轨迹接口:主要是轨迹构造,轨迹的空间对象,以及轨迹的时空查询。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
SQL 存储 数据可视化
Ganos矢量快显功能上手系列2:增强的MVT能力
本文主要介绍Ganos新增的2D矢量动态切片函数及其使用方法。新增的矢量动态切片函数能够大幅提升可视化效率,有效解决小比例尺MVT显示耗时久的问题。和PostGIS相比,小比例尺MVT的可视化效率提升可达60%以上。
|
存储 算法 Cloud Native
Ganos地理网格引擎支撑无人机路径规划能力实践
随着新能源技术的迅猛发展,低空经济已经逐步成为新的战略性新兴产业,但不同于传统的地表活动,低空活动具有立体性、区域性、融合性等特点,这些特点对于如何安全引导低空活动的顺利开展带来了一系列需要解决的技术问题。Ganos地理网格引擎提供了基于网格的路径规划能力,可以使用DEM、DSM、倾斜摄影等数据构建复杂环境下的无人机路径规划应用。
|
9月前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源基础教程系列 6 开源插件扩展
1、当前环境已安装并支持哪些插件 2、AI外脑插件: vector 3、营销场景目标人群圈选插件: smlar 4、地理信息搜索插件: PostGIS 5、中文分词插件: pg_jieba 6、融合计算插件: duckdb_fdw 7、读写分离工具: pgpool-II
454 5
|
关系型数据库 分布式数据库 PolarDB
PolarDB Ganos的实时时空计算
PolarDB是阿里云自主研发的云原生关系型数据库,提供极致弹性、高性能、海量存储及安全可靠的数据库服务。PolarDB PostgreSQL版100%兼容PostgreSQL和Oracle语法,集成Ganos——新一代云原生时空数据库引擎,具备几何、栅格、轨迹等十大核心引擎能力,支持物理世界时空多模数据的混合存储与分析。本文介绍的Ganos实时电子围栏计算基于PolarDB PostgreSQL版,适用于交通物流、禁飞区管理、营销等多种场景,通过Flink实时计算实现高效的空间数据处理。
197 1
|
存储 SQL 数据可视化
Ganos三维引擎系列(一):倾斜摄影数据管理与可视化功能解析
本文介绍了阿里云多模态时空数据库Ganos三维引擎在倾斜摄影数据管理中的应用。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型用于存储带有语义的类BIM精细化三维模型,体网格模型用于存储地质体等非匀质“场”类三维模型,3D实景模型用于存储倾斜摄影、精白模等用于渲染的三维模型,三种存储结构都提供了原生数据类型、空间索引、分析算子、导入导出工具、可视化支撑等功能,为数字孪生类应用提供闭环的存算显能力,本文重点介绍基于3D实景模型开展倾斜摄影数据管理与可视化等功能。
|
存储 Cloud Native 关系型数据库
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
578 3
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)
|
SQL 关系型数据库 分布式数据库
用Ganos低代码实现免切片遥感影像浏览
本文介绍了一种基于PolarDB兼容PostgreSQL 14的高效栅格数据管理和可视化方案。推荐配置包括4核CPU、16GB内存、50GB磁盘等。通过创建扩展并上传影像至OSS,利用SQL语句完成数据导入、镶嵌、匀色及金字塔构建。重点介绍了使用ST_AsTile函数动态生成标准瓦片的方法,支持多种格式和增强方式。前端通过Python实现服务接口,实现实时、高效的数据展示。此方案具有实时性强、存储成本低等优点,适合快速可视化大量栅格数据。
189 0
|
Cloud Native 前端开发 关系型数据库
Ganos实时热力聚合查询能力解析与最佳实践
本文主要介绍Ganos实时热力聚合查询并动态输出热力瓦片能力,依托阿里云PolarDB PostgreSQL产品、ADB PostgreSQL和RDS PostgreSQL 三款数据库建设输出。
|
存储 数据可视化 数据管理
Ganos三维引擎系列(三):BIM数据管理与可视化功能解析
本文介绍了阿里云多模态时空数据库Ganos三维引擎在BIM数据管理中的应用。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型(SFMesh)用于存储带有语义的类BIM精细化三维模型,同时提供了空间索引、分析算子、导入工具、可视化支撑等功能,本文详细介绍表面网格模型应用于IFC格式的BIM数据管理与可视化等功能。