ST_AsMVTGeom — Transforme une géométrie dans l'espace de coordonnées d'une tuile MVT.
geometry ST_AsMVTGeom(
geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true)
;
Transforme une géométrie dans l'espace de coordonnées d'une tuile MVT (Mapbox Vector Tile), en l'ajustant aux limites de la tuile si nécessaire. La géométrie doit être dans le système de coordonnées de la carte cible (en utilisant ST_Transform si nécessaire). Il s'agit généralement de Web Mercator (SRID:3857).
La fonction tente de préserver la validité de la géométrie et la corrige si nécessaire. Cela peut entraîner l'effondrement de la géométrie résultante à une dimension inférieure.
Les limites rectangulaires de la tuile dans l'espace de coordonnées de la carte cible doivent être fournies, afin que la géométrie puisse être transformée et coupée si nécessaire. Les limites peuvent être générées à l'aide de ST_TileEnvelope.
Cette fonction est utilisée pour convertir la géométrie dans l'espace de coordonnées de la tuile requis par ST_AsMVT.
geom
est la géométrie à transformer, dans le système de coordonnées de la carte cible.
bounds
est la limite rectangulaire de la tuile dans l'espace de coordonnées de la carte, sans tampon.
extent
est la taille de l'étendue de la tuile dans l'espace de coordonnées de la tuile tel que défini par la spécification MVT. La valeur par défaut est 4096.
buffer
est la taille du tampon dans l'espace de coordonnées de la tuile pour le découpage de la géométrie. La valeur par défaut est 256.
clip_geom
est un booléen qui contrôle si les géométries sont découpées ou encodées telles quelles. La valeur par défaut est true.
Disponibilité : 2.4.0
A partir de la version 3.0, Wagyu peut être choisi au moment de la configuration pour découper et valider les polygones MVT. Cette bibliothèque est plus rapide et produit des résultats plus corrects que la bibliothèque par défaut de GEOS, mais elle peut mettre de côté de petits polygones. |
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)))
Exemple canonique d'une tuile Web Mercator utilisant les limites calculées d'une tuile pour interroger et découper la géométrie.
SELECT ST_AsMVTGeom( ST_Transform( geom, 3857 ), ST_TileEnvelope(12, 513, 412), extent = > 4096, buffer = > 64) AS geom FROM data WHERE geom && ST_TileEnvelope(12, 513, 412, margin = > (64.0 / 4096))