Name

ST_AsMVTGeom — Transforme une géométrie dans l'espace de coordonnées d'une tuile MVT.

Synopsis

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

Description

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

[Note]

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.

Exemples

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))