Fonction d'agrégation qui sérialise les lignes de géométrie MVT 3D en une tuile binaire Mapbox Vector Tile (MVT). Elle étend le format MVT standard en prenant en charge l'axe Z (altitude), ce qui permet de générer des tuiles vectorielles 3D directement dans PostgreSQL.
Syntaxe
-- Syntax 1: minimal form
bytea ST_AsMVT3D(anyelement set row)
-- Syntax 2: specify layer name
bytea ST_AsMVT3D(anyelement row, text name)
-- Syntax 3: specify layer name and tile extent
bytea ST_AsMVT3D(anyelement row, text name, integer extent)
-- Syntax 4: specify layer name, tile extent, and geometry column
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name)
-- Syntax 5: full form with Feature ID
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name, text feature_id_name)
Paramètres
| Paramètre | Type | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
row |
anyelement |
— | — | Ligne contenant au moins une colonne de géométrie 3D. |
name |
text |
Default |
— | Nom de la couche dans la tuile de sortie. |
extent |
integer |
4096 |
256–8192 |
Nombre de tuiles dans l'espace écran. |
geom_name |
text |
Première colonne de géométrie | — | Nom de la colonne de géométrie dans la ligne. |
feature_id_name |
text |
— | NULL ou négatif → ignoré |
Nom de la colonne Feature ID dans la ligne. Définissez cette valeur sur NULL ou sur une valeur négative pour omettre l'identifiant de fonctionnalité. |
Notes d'utilisation
ST_AsMVT3Dest une fonction d'agrégation. Utilisez-la avecSELECT ... FROMsur une table dérivée.Appelez ST_AsMVTGeom3D pour représenter les géométries 3D dans le système de coordonnées des tuiles et encoder les autres colonnes en tant que caractéristiques spatiales d'attributs non géométriques.
-
Combinez plusieurs couches avec
||ouSTRING_AGG:SELECT ST_AsMVT3D(layer1.*) || ST_AsMVT3D(layer2.*) AS tile;
Encodage de l'axe Z
ST_AsMVT3D étend l'ensemble de commandes MVT pour encoder l'altitude :
Encodage CommandID : utilise
MoveTo3D(5)etLineTo3D(6)pour encoder les séquences de coordonnées XYZ.Quantification de l'axe Z :
Valeur numérique = 7 × (z + 450), avec une plage d'altitude valide comprise entre −450 et 8848.
Pour la spécification complète, consultez vector-tile-spec.
L'image suivante illustre un scénario 3D à grande échelle rendu à l'aide de la technologie de tuiles MVT 3D.

Exemple
La requête suivante génère une tuile MVT 3D. ST_AsMVTGeom3D prépare les géométries 3D dans les coordonnées de la tuile ; ST_AsMVT3D sérialise ensuite le résultat en une tuile binaire.
WITH mvtgeom AS (
SELECT
ST_AsMVTGeom3D(
ST_Transform('SRID=4326; MULTIPOLYGON(((100 50 0, -100 50 1, -100 -50 2, 100 -50 3, 100 50 0)), ((0 0 0, 1 0 1, 2 2 2, 0 0 0)))'::geometry, 3857),
ST_TileEnvelope(1, 0, 0)
) AS geom,
'test' AS name
)
SELECT ST_AsMVT3D(mvtgeom.*) FROM mvtgeom;
Sortie attendue (MVT binaire en hexadécimal) :
st_asmvt3d
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
\x1a760a0764656661756c74125812020000180322500d8044a842b83116ff23d80105802400080f0d810481041d162e000e2e590e0f0dd920dc0405168024d70106c727f3160d0f0dc827f4160e1600f31615c72700080f0d0000001600cc1808c80300000f1a046e616d6522060a04746573742880207802
(1 row)
Rubriques connexes
ST_AsMVTGeom3D — préparer les géométries 3D pour une utilisation avec
ST_AsMVT3D