All Products
Search
Document Center

ApsaraDB RDS:ST_AsMVT3D

Last Updated:Mar 29, 2026

Fungsi agregat yang melakukan serialisasi baris geometri MVT 3D ke dalam tile biner Mapbox Vector Tile (MVT). Fungsi ini memperluas format MVT standar dengan dukungan sumbu-z (elevasi), sehingga memungkinkan pembuatan tile vektor 3D secara langsung di PostgreSQL.

Sintaks

-- Sintaks 1: bentuk minimal
bytea ST_AsMVT3D(anyelement set row)

-- Sintaks 2: tentukan nama layer
bytea ST_AsMVT3D(anyelement row, text name)

-- Sintaks 3: tentukan nama layer dan extent tile
bytea ST_AsMVT3D(anyelement row, text name, integer extent)

-- Sintaks 4: tentukan nama layer, extent tile, dan kolom geometri
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name)

-- Sintaks 5: bentuk lengkap dengan Feature ID
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name, text feature_id_name)

Parameter

ParameterTipeDefaultNilai validDeskripsi
rowanyelementBaris yang berisi setidaknya satu kolom geometri 3D.
nametextDefaultNama layer dalam tile output.
extentinteger40962568192Jumlah tile dalam ruang layar.
geom_nametextKolom geometri pertamaNama kolom geometri dalam baris.
feature_id_nametextNULL atau negatif → diabaikanNama kolom Feature ID dalam baris. Atur ke NULL atau nilai negatif untuk menghilangkan Feature ID.

Catatan penggunaan

  • ST_AsMVT3D adalah fungsi agregat. Gunakan bersama SELECT ... FROM pada tabel turunan.

  • Panggil ST_AsMVTGeom3D untuk merepresentasikan geometri 3D dalam sistem koordinat tile dan meng-encode kolom lain sebagai fitur spasial dari atribut non-geometris.

  • Gabungkan beberapa layer dengan || atau STRING_AGG:

    SELECT ST_AsMVT3D(layer1.*) || ST_AsMVT3D(layer2.*) AS tile;

Encoding sumbu-z

ST_AsMVT3D memperluas kumpulan perintah MVT untuk meng-encode elevasi:

  • Encoding CommandID: menggunakan MoveTo3D(5) dan LineTo3D(6) untuk meng-encode urutan koordinat XYZ.

  • Kuantisasi sumbu-z: Nilai numerik = 7 × (z + 450), dengan rentang elevasi valid −450 hingga 8.848.

Untuk spesifikasi lengkap, lihat vector-tile-spec.

Gambar berikut menunjukkan skenario 3D skala besar yang dirender menggunakan teknologi tile MVT 3D.

image..png

Contoh

Kueri berikut menghasilkan tile MVT 3D. ST_AsMVTGeom3D menyiapkan geometri 3D ke dalam koordinat tile; ST_AsMVT3D kemudian melakukan serialisasi hasilnya ke dalam tile biner.

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;

Output yang diharapkan (MVT biner dalam heksadesimal):

                                                                         st_asmvt3d
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 \x1a760a0764656661756c74125812020000180322500d8044a842b83116ff23d80105802400080f0d810481041d162e000e2e590e0f0dd920dc0405168024d70106c727f3160d0f0dc827f4160e1600f31615c72700080f0d0000001600cc1808c80300000f1a046e616d6522060a04746573742880207802
(1 row)

Topik terkait

  • ST_AsMVTGeom3D — siapkan geometri 3D untuk digunakan dengan ST_AsMVT3D