PostGIS bucket抽稀结合mvt
2023-02-01 本文已影响0人
YGIS
参考文章 基于PostGis实现空间点抽稀
由于Cesium渲染mvt功能刚做出来,性能不好,此外设备点空间分布不均匀,渲染卡顿加上密集分布在效果上需要优化,在postGIS生成mvt时加入了抽稀的操作。
结合mvt的Envelope计算width_bucket,由于希望抽稀点有业务属性,没有选择计算中心点st_centroid,而是选取集合中第一个点,联合原表带出其他属性。
select a.geom,a.count,b.sensorname from (
select
--用于分组
width_bucket(st_x(geom),st_xmin(ST_TileEnvelope(Z,X,Y)),st_xmax(ST_TileEnvelope(Z,X,Y)),20) as grid_x,
width_bucket(st_y(geom),st_ymin(ST_TileEnvelope(Z,X,Y)),st_ymax(ST_TileEnvelope(Z,X,Y)),20) as grid_y,
--集合&选点&统计
ST_GeometryN(st_collect(geom),1) as geom,
count(geom)
from camera
where st_intersects(geom,ST_TileEnvelope(Z,X,Y))
group by grid_x,grid_y) a,
camera b
where a.geom&&b.geom;
效果
原数据
分30桶
分20桶
后续可能要优化下效率。