Name

ST_AsMVTGeom — Transformiert eine Geometrie in den Koordinatenraum einer MVT-Kachel.

Synopsis

geometry ST_AsMVTGeom(geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true);

Beschreibung

Transformiert eine Geometrie in den Koordinatenraum einer MVT-Kachel (Mapbox Vector Tile) und beschneidet sie gegebenenfalls auf die Kachelgrenzen. Die Geometrie muss im Koordinatensystem der Zielkarte liegen (ggf. mit ST_Transform). Üblicherweise ist dies Web Mercator (SRID:3857).

Die Funktion versucht, die Gültigkeit der Geometrie zu erhalten, und korrigiert sie gegebenenfalls. Dies kann dazu führen, dass die Ergebnisgeometrie auf eine niedrigere Dimension kollabiert.

Die rechteckigen Grenzen der Kachel im Koordinatenraum der Zielkarte müssen angegeben werden, damit die Geometrie transformiert und bei Bedarf beschnitten werden kann. Die Begrenzungen können mit ST_TileEnvelope erzeugt werden.

Diese Funktion wird verwendet, um die Geometrie in den von ST_AsMVT benötigten Kachelkoordinatenraum zu konvertieren.

geom ist die zu transformierende Geometrie, im Koordinatensystem der Zielkarte.

bounds ist die rechteckige Begrenzung der Kachel im Kartenkoordinatenraum, ohne Puffer.

extent ist die Größe der Kachelausdehnung im Kachelkoordinatenraum, wie in der MVT-Spezifikation definiert. Der Standardwert ist 4096.

buffer ist die Puffergröße im Kachelkoordinatenraum für das Clipping der Geometrie. Der Standardwert ist 256.

clip_geom ist ein boolescher Wert, der bestimmt, ob Geometrien abgeschnitten oder unverändert kodiert werden. Der Standardwert ist true.

Verfügbarkeit: 2.4.0

[Note]

Ab 3.0 kann zum Ausschneiden und Validieren von MVT-Polygonen bei der Konfiguration Wagyu gewählt werden. Diese Bibliothek ist schneller und liefert genauere Ergebnisse als die standardmäßige GEOS-Bibliothek, sie kann aber kleine Polygone verwerfen.

Beispiele

SELECT ST_AsText(ST_AsMVTGeom(
        ST_GeomFromText('POLYGON ((0 0, 10 0, 10 5, 0 -5, 0 0))'),
        ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)),
        4096, 0, false));
                              st_astext
--------------------------------------------------------------------
 MULTIPOLYGON(((5 4096,10 4091,10 4096,5 4096)),((5 4096,0 4101,0 4096,5 4096)))
                

Canonical example for a Web Mercator tile using a computed tile bounds to query and clip geometry. This assumes the data.geom column has srid of 4326.


SELECT ST_AsMVTGeom(
            ST_Transform( geom, 3857 ),
            ST_TileEnvelope(12, 513, 412), extent =
> 4096, buffer =
> 64) AS geom
  FROM data
  WHERE geom && ST_Transform(ST_TileEnvelope(12, 513, 412, margin =
> (64.0 / 4096)),4326)