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

Starts with the concept of a hexagon tiling of the plane. (Not a hexagon tiling of the globe; for H3 use the h3-pg extension.) For a given planar SRS, and a given edge size, starting at the origin of the SRS, there is one unique hexagonal tiling of the plane, Tiling(SRS, Size). This function answers the question: what hexagons in a given Tiling(SRS, Size) overlap with a given bounds.

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)