ST_SquareGrid — 返回一组网格正方形和单元格索引,这些正方形和索引完全覆盖几何参数的边界。
setof record ST_SquareGrid(
float8 size, geometry bounds)
;
从平面正方形平铺的概念开始。对于给定的平面 SRS 和给定的边长,从 SRS 的原点开始,平面只有一个唯一的正方形平铺,Tiling(SRS, Size)。此函数回答以下问题:给定 Tiling(SRS, Size) 中的哪些网格与给定边界重叠。
输出正方形的 SRS 是由边界几何图形提供的 SRS。
将正方形的边长加倍会生成一个新的父平铺,该平铺与原始平铺完美匹配。墨卡托投影中的标准 Web 地图平铺只是墨卡托平面中 2 的幂的平方网格。
可用性:3.1.0
网格将填充整个国家/地区的边界,因此如果您只想使用与国家/地区接触的正方形,则必须在之后使用 ST_Intersects 进行过滤。
WITH grid AS ( SELECT (ST_SquareGrid(1, ST_Transform(geom,4326))).* FROM admin0 WHERE name = 'Canada' ) SELEcT ST_AsText(geom) FROM grid
要针对正方形平铺执行点汇总,请使用点的范围作为边界生成一个正方形网格,然后将空间连接到该网格。请注意,估计范围可能与实际范围有所偏差,因此请谨慎,并且至少要确保您已分析过表格。
SELECT COUNT(*), squares.geom FROM pointtable AS pts INNER JOIN ST_SquareGrid( 1000, ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857) ) AS squares ON ST_Intersects(pts.geom, squares.geom) GROUP BY squares.geom
这会产生与第一个示例相同的结果,但对于大量点来说会较慢
SELECT COUNT(*), squares.geom FROM pointtable AS pts INNER JOIN ST_SquareGrid( 1000, pts.geom ) AS squares ON ST_Intersects(pts.geom, squares.geom) GROUP BY squares.geom