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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 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 PGPolarDBADB PGLingdorm/HBase以及DLA。其中RDS PGPolarDB是事务型关系数据库,也可以做一些简单的分析。这两款数据库中的模型,Ganos的功能是最全面也是最丰富的。

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

 

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

image.png

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

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

 

 

二、如何使用Ganos

(一)创建Ganos扩展

image.png

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

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

image.png

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

 

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

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

Ø  矢量数据入库

主要依赖空间开源的工具,包括Ogr2ogrshp2pgsqlQGISpg_dump/pg_restore等。

Ø  栅格、遥感数据入库

1)Ganos提供入库接口ST_importFromST_createRast

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

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

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

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

Ø  轨迹数据入库

Ganos提供入库接口ST_makeTrajectory

支持轨迹点动态追加;

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

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

 

(三)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_mosaicFromST_mosaicTo对大范围的影像进行拼接镶嵌等操作再进行输出,达到管理PB级遥感影像管理的目的。

 

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

image.png

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

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

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

 

(五)Ganos与开源工具

image.png

如上图所示,Ganos无缝对接兼容PostGIS的各类GIS软件,显示和编辑包括GeoServerQGISuDigOpenJump等,这里重点介绍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.数据入库

Ø  矢量数据库入库

l  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”

l  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的街区编号,分别为121131212113144

 

(三)矢栅一体化查询

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_IntersectsST_Contains

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

Ø  Ganos Raster

ST_importFromST_createRastST_ValuesST_mosaicFromST_mosaicTo

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

Ø  Ganos Trajectory

ST_makeTrajectoryST_trajectorySpatialST_Intersects

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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3月前
|
消息中间件 存储 Kafka
Lindorm Ganos轨迹点快速聚合能力简介
本文介绍了Ganos时空数据库在Lindorm流引擎上的全新能力与最佳实践,帮助客户解决车辆网场景中轨迹点实时聚合生成轨迹线的能力。Lindorm Ganos实现了Lindorm宽表、流、计算等引擎在时空领域的打通,支持原生时空类型与多种时空算子,支持多种不同的时空索引,不仅可用于传统的周边查询,还面向了历史轨迹的查询分析、实时地理围栏查询、点面查询等更加复杂的业务需求。
|
关系型数据库 数据库 PostgreSQL
|
存储 SQL NoSQL
NoSQL“小钢炮”,Lindorm时空引擎Ganos轨迹处理实测
Lindorm作为一款阿里云推出的云原生超融合多模数据库,包含了流引擎、宽表引擎、对象引擎、搜索引擎等。最新发布的Lindorm已经深度融合了达摩院空天数据库引擎Ganos(Lindorm Ganos),可以一站式的解决海量轨迹场景的存储和各类查询需求,本文通过对Lindorm Ganos在常用的时空场景进行测试,用过程和实际的数据展示Lindorm Ganos的具备的能力和特性。
NoSQL“小钢炮”,Lindorm时空引擎Ganos轨迹处理实测
|
20天前
|
存储 并行计算 关系型数据库
使用 PolarDB 开源版 部署 PostGIS 支撑时空轨迹|地理信息|路由等业务
背景PolarDB 的云原生存算分离架构,,具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理;;PolarDB与计算算法结合,,将实现双剑合璧,推动业务数据的价值产出,将数据变成生产力。本文将介绍使用 PolarDB 开源版 部署 PostGIS 支撑时空轨迹|地理信息|路...
46 0
|
关系型数据库
|
存储 SQL NoSQL
轨迹数据处理“小钢炮”,Lindorm时空引擎Ganos实测
本文在Lindorm Ganos中对常用的时空场景进行测试,用过程和实际数据展示Lindorm Ganos具备的能力和特性
轨迹数据处理“小钢炮”,Lindorm时空引擎Ganos实测
|
SQL 分布式计算 Cloud Native
9.28直播预告|AnalyticDB for PostgreSQL功能发布 - 外表联邦分析&列存引擎增强
本次分享主要介绍云原生数据仓库ADB PG公共云近期发布的两项重要功能,外表联邦分析和列存引擎增强的技术解析,和最佳使用实践,欢迎大家观看直播。
1878 0
9.28直播预告|AnalyticDB for PostgreSQL功能发布 - 外表联邦分析&列存引擎增强
|
新零售 关系型数据库 调度
PostgreSQL技术周刊第12期:PostgreSQL 时空数据调度实践
PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。 PostgreSQL技术周刊会为大家介绍最新的PG技术与动态、预告活动、最热问答、直播教程等,欢迎大家订阅PostgreSQL技术周刊。
4083 0
|
关系型数据库 调度 数据库
德哥PG系列课程直播(第10讲):PostgreSQL 时空数据调度实践
知识点 近邻查询,拼车,空间热点消除 学习资料 1、滴滴打车派单系统思考 数据库设计与实现 - 每月投入6140元, 1天最多可盈利117亿 -_-! 背景:打车类应用,如果完全按调度系统来派单,而非抢单的话,调度系统要非常的健硕。
3129 0
|
物联网 关系型数据库 数据库
德哥PG系列课程直播(第9讲):PostgreSQL 时空业务实践
知识点 知识点:时空partial index,时空搜索。空间复合索引。 学习资料 1、空间复合索引加速空间搜索*背景:随着移动互联网的普及,空间数据已经成为大多数企业数据的标配,例如出行、快递、等。
4316 0