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;
如果我們為每個多邊形邊界產生一組六邊形,並濾除那些不與其六邊形相交的六邊形,我們最終會得到每個多邊形的平鋪。
平鋪狀態會導致每個狀態的六邊形覆蓋率,並且多個六邊形在狀態之間的邊界重疊。
![]() |
|
當在 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)