Ganos 4.3新特性:获取栅格象元空间范围

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 栅格数据具备了空间信息,因此每一个象元都具备了空间属性以及数值属性数据。获取栅格象元的空间属性以及数值属性,对于进行矢栅多模融合分析具有十分重要的意义。

1. 简介

栅格数据具备了空间信息,因此每一个象元都具备了空间属性以及数值属性数据。获取栅格象元的空间属性以及数值属性,对于进行矢栅多模融合分析具有十分重要的意义。

1.1 GanosBase


GanosBase(简称Ganos)是阿里云智能研发的新一代时空数据库引擎,采用了平台即服务、多模融合、计算下推和云原生全新处理架构,为政府、企事业单位、泛互联网客户提供移动对象、空间/时空、遥感多模态数据混合存储、查询与分析服务。

GanosBase已嵌入到RDS PG、PolarDB PG、ADB PG、Lindorm等云原生数据库产品中,本文所介绍的功能特性包含在RDS PG/PolarDB/ADBPG中。


1.2 新增函数

Ganos 4.3 中新增了将栅格象元转换为空间几何对象以及数值的系列函数,包括:

1.2.1 ST_PixelAsPolygon

返回栅格中指定象元所代表的空间范围,以矩形的方式返回geometry对象。

1.2.2 ST_PixelAsPoint

返回栅格中指定象元所代表的空间范围,以点的方式进行返回,可以指定代表的点位左上角点或中心点。

1.2.3 ST_PixelAsCentroid

返回栅格中指定象元所代表的空间范围,以中心点的方式进行返回几何对象

1.2.4 ST_PixelAsPolygons

返回栅格对象中所有象元的空间和属性信息。返回的结果包括象元在栅格对象中的行号,列号,波段号,像素值以及对应的空间多边形范围。

1.2.5 ST_PixelAsPoints

返回栅格对象中所有象元的空间和属性信息。返回的结果包括象元在栅格对象中的行号,列号,波段号,像素值以及对应的空间点信息。空间点可以指定象元的左上角点或中心点。

1.2.6 ST_PixelAsCentroid

返回栅格对象中所有象元的空间和属性信息。返回的结果包括象元在栅格对象中的行号,列号,波段号,像素值以及对应的象元空间范围中心点信息。

2. 实战步骤

本案例中,已知全国的气象温度数据(栅格)以及设备的空间位置分布情况(矢量),需要查找温度在一定范围的设备信息,来演示Ganos矢量和栅格进行统一分析能力。此案例也可以扩展为根据DEM来查找高程在一定范围内的设备等场景。

数据包括:

  • 全国的气温netcdf数据
  • 全国的设备点信息 shapefile格式

空间参考均为WGS84.


2.1 数据入库

借助于Ganos的能力,可以将netcdf与shapefile数据快速导入到数据库中:

2.1.1 温度数据入库

-- 创建Ganos Raster扩展CREATE EXTENSION GANOS_RASTER CASCADE;-- 创建温度表CREATETABLE temperature(id integer, rast raster);-- 导入netcdf温度数据,需要设置空间参考为4326INSERTINTO temperature 
VALUES(1, ST_SetSrid(ST_ImportFrom('chunk_table','OSS://<id>:<key>@<endpoint>/bucket/path/file.nc'),4326));-- 可以查看元数据信息select st_metadata(rast)from temperature where id =1;----------{"attributes":{"id":"237a4cc5-1b8a-4938-a4e1-ca62766056fb","name":"","type":"normal","version":1.1,"storage":{"mode":"internal","location":"chunk_table","md5":"","endian":"ndr","compress":"lz4","compressQuality":75,"fileSystem":"null","chunking":{"enable":true,"chunkHeight":256,"chunkWidth":256,"chunkBand":1,"rowChunksDimension":5,"columnChunksDimension":9,"bandChunksDimension":1},"cellType":"16bsi","interleaving":"bsq"},"description":"","width":2101,"height":1237,"bands":1,"pyramid":{"resample":"near","level":0,"table":""},"overview":{"table":"","column":"","pyramidLevel":1},"referenceOriginPoint":{"type":"Raster","ulp":{"row":0,"column":0,"band":0},"rrp":{"row":0,"column":0,"band":0},"wrp":{"x":0,"y":0,"z":0}}},"spatialReference":{"valid":true,"srid":4326,"refLocation":"upperleft","affline":{"upperleftx":72.985,"upperlefty":54.09500183179541,"scalex":0.03,"scaley":-0.03000000148143583,"skewx":0.0,"skewy":0.0},"gcps":{"count":0}},"bands":{"b0":{"nodata":{"valid":true,"value":-32767.0},"colorInterpretation":"Undefined","metadata":{"long_name":"Maximum temperature of 2 meters","NETCDF_VARNAME":"TEM_Max_2m","Spatial_resolution":"3km*3km","time":"202105012330","units":"°C *10"},"histogram":{"approximate":true}}},"metaData":{"TEM_Max_2m#long_name":"Maximum temperature of 2 meters","TEM_Max_2m#Spatial_resolution":"3km*3km","TEM_Max_2m#time":"202105012330","TEM_Max_2m#units":"°C *10"}}


2.1.2 设备数据入库

Ganos支持将OSS上的shapefile通过fdw的方式导入到数据库中

--创建Ganos fdw扩展CREATE EXTENSION ganos_fdw;
--创建Shapefile的fdw表select ST_RegForeignTables('OSS://<id>:<key>@<endpoint>/bucket/path/file.shp'));--数据入库到数据库中并创建空间索引CREATETABLE devices ASSELECT*from<foreign_table_name>;CREATE INDEX idx_devices_geom ON devices USING Gist(geom);


2.2 提取温度范围

此案例中最核心的功能是将基于栅格的温度转换为矢量空间范围并进行分析计算。转换的思路是将每个符合温度要求的象元的空间范围进行合并,最终获得整体空间范围,具体的SQL为:

-- 查找温度大于 27 °C 且小于28 °C 象元为例WITH tmp AS(SELECT(ST_PixelAsPolygons(rast)).*FROM temperature 
WHERE id =1)SELECT ST_Union(geom)FROM tmp 
WHERE value >=270AND value <279;

当然这样的写法对于栅格分辨率较高时,由于需要处理每个像素值,性能较低。

可以通过配合 ST_Reclassify 函数先将无效的数据处理为Nodata值降低数据处理量,具体参见ST_Reclassify函数:


-- 先执行重分类操作With tmp As(SELECT ST_Reclassify(rast,'[{"band":0,"remap":{"(-100,270,280, 1000]":"0,1,0"}, "nodata":false, "nodataValue":0}]','{"chunktable":"reclass_chunk_table"}')AS rast
from temperature 
where id =1),-- 再返回空间范围tmp2 AS(SELECT(ST_PixelAsPolygons(rast)).*FROM tmp)SELECT ST_Union(geom)FROM tmp2;


2.3 空间叠加分析

将步骤2.2 中获得的空间范围与设备表做一个空间包含关系判断,获得符合要求的设备信息:

WITH tmp AS(SELECT(ST_PixelAsPolygons(rast)).*FROM temperature WHERE id =1),tmp2 AS(SELECT ST_Union(geom)as geom
FROM tmp 
WHERE value >=270AND value <279)SELECTcount(*)-- 可以选择任何的列信息,此处以计算数量为例FROM devices, tmp2
WHERE ST_Contains(tmp2.geom, devices.geom);-- 最终结果count-------1879


3. 总结


利用Ganos的时空栅格存储、计算和分析能力,将复杂矢量栅格多模融合分析功能转化为简单的Geo-SQL语句,使得过去必须借助于GIS软件的专业的时空数据处理流程能在数据库内实现,简化用户的程序逻辑,降低开发复杂度与维护成本, 使云GIS能力赋能行业用户。


关于TST


TST团队(Team of Spatio-Temporal kernel)由来自数据库、计算机图形图像、3S等不同领域技术专家构成,是怀揣共同梦想——让80%行业用到时空云计算、迸发着活力和激情的一群创业者。团队主攻云上时空内核引擎技术架构、算法、系统平台研发与应用,致力于将时空信息处理嵌入到PaaS云计算基础设施,使之成为新一代数字框架的基础维度普惠到更多用户。欢迎加入!

目录
相关文章
|
存储 Cloud Native 关系型数据库
Ganos矢量栅格数据快速入库方法简介
本文介绍了Ganos提供的矢量、栅格数据高效入库方法,帮助用户快速理解云原生数据库空间数据的写入方案,以便更好的使用Ganos矢栅数据的处理能力。
|
前端开发 关系型数据库 定位技术
用Ganos低代码实现免切片遥感影像浏览(一)
本文介绍了使用PolarDB-PG数据库配合Ganos时空数据库引擎,不借助第三方工具仅利用SQL语句快速管理与展示遥感影像数据的一种方法。Ganos共提供两种影像免切浏览的方法,一种使用窗口范围获取影像数据展示,另一种通过固定瓦片范围获取影像数据展示,本文详细介绍第一种方法并提供了前后端实操代码帮助用户可以快速理解Ganos Raster的使用细节。
|
存储 SQL 数据可视化
Ganos矢量快显功能上手
本文介绍了由阿里巴巴独立研发的多模态时空数据库组件Ganos的2D和3D矢量快显功能。其中,2D矢量快显功能可用于对亿级规模2D矢量数据的高效可视化。Ganos的2D矢量快显快显功能解决了传统切片方案切片时间长和切片存储开销大两大痛点,并且支持局部更新,相较于现有系统,在效率、存储开销以及功能丰富性上都有很大提升。本文以实例的形式介绍了如何创建和更新2D矢量金字塔,以及如何返回切片等功能。通过参考本文,用户可以很快上手体验这一功能。Ganos的3D矢量可视化功能通过对2D矢量切片进行扩展,使其能够支持Geometry3D数据的可视化,可用于可视化大范围3D场景。
|
9月前
|
Cloud Native 前端开发 关系型数据库
Ganos实时热力聚合查询能力解析与最佳实践
本文主要介绍Ganos实时热力聚合查询并动态输出热力瓦片能力,依托阿里云PolarDB PostgreSQL产品、ADB PostgreSQL和RDS PostgreSQL 三款数据库建设输出。
|
存储 关系型数据库 Serverless
Ganos三维引擎系列(二):可视域与阴影率分析
本文介绍了基于阿里云多模态时空数据库Ganos三维引擎构建可视域分析与阴影率分析的应用方法。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型用于存储带有语义的类BIM的精细化三维模型,体网格模型用于存储地质体等非匀质“场”类三维模型,3D实景模型用于存储倾斜摄影、精白模等用于渲染的三维模型,三种存储结构都提供了原生数据类型、空间索引、分析算子、导入导出工具、可视化支撑等功能,为数字孪生类应用提供闭环的存算显能力。
|
存储 达摩院 Cloud Native
基于Ganos轨迹引擎的运输车辆到达性分析
本文介绍了由阿里巴巴达摩院数据库与存储实验室研发的多模态时空数据库Ganos轨迹引擎在运输车辆位置分析中的应用场景。Ganos通过在数据库中原生内置移动对象的存储、检索与分析能力,打造了全球首个移动对象数据库,为交通、物流、出行、生活服务类客户提供海量轨迹数据的分析挖掘能力。通过阅读本文,用户可以更好的理解Ganos轨迹模型的存储结构与轨迹引擎的相关能力,助力业务开发走向便捷。
|
存储 机器学习/深度学习 算法
Ganos轨迹采样点常用处理方法解析
本文介绍了Ganos轨迹引擎的采样点处理能力,包含轨迹过滤、轨迹切分、轨迹重采样和轨迹简化等,帮助用户快速掌握移动对象的预处理方法,提升业务开发的便捷性。
|
存储 关系型数据库 数据库
Ganos全空间数据多态分层存储能力解析与最佳实践
本文介绍了Ganos与云原生关系型数据库PolarDB-PG联合打造的全空间数据多态分层存储能力与最佳实践。多态分层存储将OSS对象存储直接作为PolarDB-PG数据库的一种存储介质,可以与块存储联合使用,它支持用户将整库、单表、子分区表甚至是表内的一个LOB字段存储在OSS上,达到存储降本的目的,同时保持了增删改查的全部透明,并通过多级缓存保障了性能的最少衰减。多态分层存储是一种兼顾成本、性能与易用性的全空间数据管理方案,可极大程度降低业务开发的复杂度与云资源使用成本。
|
2月前
|
SQL 人工智能 自然语言处理
PolarDB-PG AI最佳实践 1:基础能力实践
Polar_AI 是 PolarDB 数据库的 AI 扩展,集成了先进的人工智能模型和算法,使数据库能够执行机器学习和自然语言处理任务。它支持 PostgreSQL 及 Oracle 兼容版本,通过标准 SQL 轻松调用 AI 模型,具备简单易用、灵活可定制、无缝数据融合、数据安全和高性能等优势。用户可以通过 SQL 快速实现文本转向量、情感分类等功能,并能自定义扩展 AI 模型。
|
1月前
|
SQL 人工智能 关系型数据库
PolarDB-PG AI最佳实践 2 :PolarDB AI X EAS实现自定义库内模型推理最佳实践
PolarDB通过POLAR_AI插件支持使用SQL调用AI/ML模型,无需专业AI知识或额外部署环境。结合阿里云EAS在线模型服务,可轻松部署自定义模型,在SQL中实现如文本翻译等功能。