Tous les produits
Search
Centre de documentation

ApsaraDB RDS:ST_AsMVT3D

Dernière mise à jour :Sep 02, 2026

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_AsMVT3D est une fonction d'agrégation. Utilisez-la avec SELECT ... FROM sur 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 || ou STRING_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) et LineTo3D(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.

image..png

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