名称

ST_SquareGrid — 返回一组完全覆盖几何参数边界的网格正方形和单元格索引。

大纲

setof record ST_SquareGrid(float8 size, geometry bounds);

描述

从平面正方形格网的概念开始。对于给定的平面 SRS 和给定的边缘尺寸,从 SRS 的原点开始,存在一个独特的平面方形格网,Tiling(SRS, Size)。此函数回答了以下问题:给定 Tiling(SRS, Size) 中的哪些网格与给定边界重叠。

输出正方形的 SRS 是边界几何的 SRS。

正方形的加倍或边缘大小会生成与原始格网完美契合的新父格网。墨卡托中的标准网络地图格网只是墨卡托平面中的两个平方网格的幂。

可用性:3.1.0

示例

Generating a 1 degree grid for a country.

网格将填充国家/地区的整个边界,因此如果您只想接触国家/地区的方块,则必须随后使用 ST_Intersects 进行过滤。

Code
WITH grid AS (
SELECT (ST_SquareGrid(1, ST_Transform(geom, 4326))).*
FROM admin0 WHERE name = 'Canada'
)
  SELEcT geom
  FROM grid

Counting points in squares (using single chopped grid).

要针对方形格网进行点聚合,请使用点的范围作为边界生成方形网格,然后在空间上连接到该网格。请注意,估计范围可能与实际范围有所不同,因此请务必谨慎,至少确保您已分析了表。

Code
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;

Counting points in squares using set of grid per point.

这会产生与第一个示例相同的结果,但对于大量点来说会变慢

Code
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;