Name

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

Synopsis

setof record ST_HexagonGrid(float8 size, geometry bounds);

描述

从平面六边形格网的概念开始。(不是地球仪的六边形格网,这不是H3格网方案。)对于给定的平面 SRS 和给定的边缘大小,从 SRS 的原点开始,有一种独特的平面六边形格网,Tiling(SRS, Size)。此函数回答了以下问题:给定 Tiling(SRS, Size) 中的哪些六边形与给定边界重叠。

输出六边形的 SRS 是边界几何体提供的 SRS。

将六边形的边缘尺寸加倍或三倍会生成与原始格网相匹配的新父格网。不幸的是,不可能生成子格网完全适合内部的父六边形格网。

可用性:3.1.0

示例:计算六边形中的点

要针对六边形格网进行点聚合,请使用点的范围作为边界生成六边形网格,然后在空间上连接到该网格。

SELECT COUNT(*), hexes.geom
FROM
    ST_HexagonGrid(
        10000,
        ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
    ) AS hexes
    INNER JOIN
    pointtable AS pts
    ON ST_Intersects(pts.geom, hexes.geom)
GROUP BY hexes.geom;

示例:为面生成六边形覆盖范围

如果我们为每个多边形边界生成一组六边形并过滤掉那些不与其六边形相交的六边形,我们最终会得到每个多边形的格网。

州切片提供每个州的六边形的覆盖范围,多个六边形与州边界重叠。

[Note]

当引用 FROM 列表中的先前表时,LATERAL关键字隐含在返回集合的函数中。因此,CROSS JOIN LATERAL、CROSS JOIN 或简单的 CROSS JOIN LATERAL 是本示例的等效构造。

SELECT admin1.gid, hex.geom
FROM
    admin1
    CROSS JOIN
    ST_HexagonGrid(100000, admin1.geom) AS hex
WHERE
    adm0_a3 = 'USA'
    AND
    ST_Intersects(admin1.geom, hex.geom)