Name

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

Synopsis

setof record ST_SquareGrid(float8 size, geometry bounds);

Beschreibung

Beginnt mit dem Konzept einer quadratischen Kachelung der Ebene. Für eine gegebene planare SRS und eine gegebene Kantengröße gibt es, ausgehend vom Ursprung der SRS, ein einziges quadratisches Tiling der Ebene, Tiling(SRS, Size). Diese Funktion beantwortet die Frage, welche Gitter in einem gegebenen Tiling(SRS, Size) sich mit einer gegebenen Grenze überlappen.

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

Durch Verdoppelung der Größe des Quadrats oder der Kanten wird eine neue übergeordnete Kachel erzeugt, die perfekt zur ursprünglichen Kachel passt. Standard-Webmap-Kacheln in Mercator sind einfach Zweierpotenzen von quadratischen Gittern in der Mercator-Ebene.

Verfügbarkeit: 2.1.0

Beispiel: Ein Umgebungsrechteck Polygon erzeugen

Das Raster füllt die gesamten Grenzen des Landes aus. Wenn Sie also nur Quadrate haben wollen, die das Land berühren, müssen Sie anschließend mit ST_Intersects filtern.

WITH grid AS (
SELECT (ST_SquareGrid(1, ST_Transform(geom,4326))).*
FROM admin0 WHERE name = 'Canada'
)
  SELEcT ST_AsText(geom)
  FROM grid

Beispiel: Zählen von Punkten in Quadraten (unter Verwendung eines einfach geschnittenen Gitters)

Um eine Punktzusammenfassung anhand einer quadratischen Kachel zu erstellen, erzeugen Sie ein quadratisches Gitter, das die Ausdehnung der Punkte als Grenzen verwendet, und verbinden Sie es dann räumlich mit diesem Gitter. Beachten Sie, dass die geschätzte Ausdehnung von der tatsächlichen Ausdehnung abweichen kann, seien Sie also vorsichtig und stellen Sie zumindest sicher, dass Sie Ihre Tabelle analysiert haben.

SELECT COUNT(*), squares.geom
    FROM
    pointtable AS pts
    INNER JOIN
    ST_SquareGrid(
        1000,
        ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
    ) AS squares
    ON ST_Intersects(pts.geom, squares.geom)
    GROUP BY squares.geom

Beispiel: Zählen von Punkten in Quadraten unter Verwendung eines Rasters pro Punkt

Dies führt zum gleichen Ergebnis wie das erste Beispiel, ist aber bei einer großen Anzahl von Punkten langsamer

SELECT COUNT(*), squares.geom
    FROM
    pointtable AS pts
    INNER JOIN
    ST_SquareGrid(
        1000,
       pts.geom
    ) AS squares
    ON ST_Intersects(pts.geom, squares.geom)
    GROUP BY squares.geom