Name

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

Synopsis

setof record ST_SquareGrid(float8 size, geometry bounds);

描述

从平面的正方形平铺的概念开始。对于给定的平面SRS和给定的边大小,从SRS的原点开始,平面有一个唯一的正方形平铺,即平铺(SRS,SIZE)。此函数用于回答以下问题:给定平铺(SRS,大小)中的哪些栅格与给定边界重叠。

输出正方形的SRS是由边界几何体提供的SRS。

正方形的加倍或边缘大小会生成一个新的父平铺,该平铺与原始平铺完美匹配。墨卡托中的标准网络地图拼贴只是墨卡托平面中的2次方格网。

可用性:3.1.0

示例:为国家/地区生成1度栅格

网格将填充整个国家的边界,因此如果您只想要接触到国家的正方形,则必须在之后使用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

另请参阅

ST_TileEnvelope, ST_HexagonGrid , ST_EstimatedExtent , ST_SetSRID