ST_HexagonGrid — Returnerar en uppsättning hexagoner och cellindex som helt täcker gränserna för geometriargumentet.
setof record ST_HexagonGrid(float8 size, geometry bounds);
Börjar med konceptet med en hexagonbeläggning av planet. (Inte en hexagonbeläggning av jordklotet, detta är inte H3-beläggningsschemat.) För en given plan SRS och en given kantstorlek, med början vid SRS:ens ursprung, finns det en unik hexagonbeläggning av planet, Tiling(SRS, Size). Denna funktion svarar på frågan: vilka hexagoner i en given Tiling(SRS, Size) överlappar med en given gräns.
SRS för utdatahexagonerna är den SRS som tillhandahålls av begränsningsgeometrin.
Om man dubblar eller tripplar hexagonens kantstorlek genereras en ny parent tiling som passar med origin tilingen. Tyvärr är det inte möjligt att generera överordnade hexagonbeläggningar som barnbeläggningarna passar perfekt i.
Tillgänglighet: 3.1.0
För att göra en punktsammanfattning mot ett hexagonalt rutnät genererar du ett hexagonalt rutnät med punkternas utsträckning som gränser och ansluter sedan spatialt till det rutnätet.
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;
Om vi genererar en uppsättning hexagoner för varje polygongräns och filtrerar bort dem som inte korsar deras hexagoner, får vi till slut en tiling för varje polygon.
När stater läggs i plattor blir resultatet att varje stat täcks av en hexagon och att flera hexagoner överlappar varandra vid gränserna mellan staterna.
|
|
|
Nyckelordet LATERAL är underförstått för set-returning-funktioner när man hänvisar till en tidigare tabell i FROM-listan. Så CROSS JOIN LATERAL, CROSS JOIN eller helt enkelt , är likvärdiga constructs för det här exemplet. |
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)
ST_EstimatedExtent, ST_SetSRID, ST_SquareGrid, ST_TileEnvelope