ST_AsMVTGeom — Transformiert eine Geometrie in den Koordinatenraum einer MVT-Kachel.
geometry ST_AsMVTGeom(
geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true)
;
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
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. |
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)