Name

ST_HexagonGrid — Gibt eine Menge von Sechsecken und Zellindizes zurück, die die Grenzen des Arguments Geometrie vollständig abdecken.

Synopsis

setof record ST_HexagonGrid(float8 size, geometry bounds);

Beschreibung

Beginnt mit dem Konzept einer Sechseckkachelung der Ebene. (Es handelt sich nicht um eine hexagonale Kachelung der Erdkugel, sondern um das H3 Kachelungsschema.) Für eine gegebene planare SRS und eine gegebene Kantengröße gibt es, ausgehend vom Ursprung der SRS, eine einzige hexagonale Kachelung der Ebene, Tiling(SRS, Size). Diese Funktion beantwortet die Frage, welche Sechsecke in einem gegebenen Tiling(SRS, Size) sich mit einer gegebenen Grenze überschneiden.

Die SRS für die Ausgangssechsecke ist die SRS, die durch die Begrenzungsgeometrie bereitgestellt wird.

Durch Verdoppelung oder Verdreifachung der Kantengröße des Sechsecks wird eine neue übergeordnete Kachel erzeugt, die zur ursprünglichen Kachel passt. Leider ist es nicht möglich, übergeordnete Sechseckkacheln zu erzeugen, in die die untergeordneten Kacheln perfekt hineinpassen.

Verfügbarkeit: 2.1.0

Beispiele: Verwendung der Feld-Version

Um eine Punktzusammenfassung anhand eines sechseckigen Kachels vorzunehmen, erstellen Sie ein Sechseckgitter, wobei Sie die Ausdehnung der Punkte als Grenzen verwenden, und verbinden Sie es dann räumlich mit diesem Gitter.

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;

Beispiel: Ein Umgebungsrechteck Polygon erzeugen

Wenn wir für jede Polygongrenze eine Reihe von Sechsecken erzeugen und diejenigen herausfiltern, die sich nicht mit ihren Sechsecken schneiden, erhalten wir ein Tiling für jedes Polygon.

Die Kachelung von Zuständen führt dazu, dass jeder Zustand von einem Sechseck abgedeckt wird und sich mehrere Sechsecke an den Grenzen zwischen den Zuständen überlappen.

[Note]

Das Schlüsselwort LATERAL wird für Funktionen mit Mengenrückgabe impliziert, wenn auf eine vorherige Tabelle in der FROM-Liste verwiesen wird. CROSS JOIN LATERAL, CROSS JOIN oder einfach nur , sind also gleichwertige Konstrukte für dieses Beispiel.

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)