PG+POSTGIS地图空间位置网格聚合算法
目录
PG,Postgresql数据库的简称,POSGIS是空间函数扩展支持插件集成了很多数据库级别的空间查询和空间图形数据处理能力。
PG核心分包函数WIDTH_BUCKET
WIDTH_BUCKET的原理是将对应的经度、纬度范围值划分为多少份,二这个参数就是地图四至。比如高德地图,它的可见范围,从西至东(经度范围),从南至北(纬度范围),正确的四至是一个数组表示的值如,[minX,minY,maxX,MaxY]。
这里我们的四至(extent)假设为:[30.431278,117.057442,32.614617,119.235188]
如果我们要将四至分为x,y轴都分为20等分,那么就如下面的SQL语句:
SELECT
width_bucket(st_x(geom), 117.057442 ,119.235188 ,20) grid_x,
width_bucket(st_y(geom), 30.431278 , 32.614617, 20) grid_y,
count(*),
st_centroid(st_collect(geom)) geom,
array_agg(gid) gids
from tpoint
where
st_x(geom) between 117.057442 and 119.235188
and
st_y(geom) between 30.431278 and 32.614617
GROUP BY grid_x,grid_y
如何测试请看我开源中国上的文章:Postgesql 空间点聚合查询实验
聚合点的归类过程演示
规则分布过程,取网格中心点:
不规则过程,取包含点的中心位置:
网格聚合,综合全图展示效果:
空间聚合效果展示
期望效果:
真实效果:
大规模空间数据方案
云数据库HybridDB for PostgreSQL(ApsaraDB HybridDB for PostgreSQL)是一种在线MPP大规模并行处理数据仓库服务。云数据库HybridDB for PostgreSQL基于Greenplum Database开源数据库项目,并由阿里云深度扩展,支持OSS外部表、JSON数据类型、HyperLogLog预估分析等功能特性。通过符合SQL2008标准查询语法及OLAP分析聚合函数,提供灵活的混合分析能力。支持行存储和列存储混合模式,提高分析性能,同时支持数据压缩技术,降低存储成本。并提供在线扩容、性能监测等服务,用户无需进行复杂的大规模MPP集群运维管理,让DBA、开发人员及数据分析师专注于如何通过SQL提高企业的生产力,创造核心价值。
上一篇: 动态查询输出数据