名稱

ST_HexagonGrid — 傳回一組六邊形和單元格索引,這些六邊形和索引完全覆蓋幾何參數的邊界。

概要

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 或僅使用逗號是等效的建構。

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)