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
| Parameter | Tipe | Default | Nilai valid | Deskripsi |
|---|---|---|---|---|
row | anyelement | — | — | Baris yang berisi setidaknya satu kolom geometri 3D. |
name | text | Default | — | Nama layer dalam tile output. |
extent | integer | 4096 | 256–8192 | Jumlah tile dalam ruang layar. |
geom_name | text | Kolom geometri pertama | — | Nama kolom geometri dalam baris. |
feature_id_name | text | — | NULL atau negatif → diabaikan | Nama kolom Feature ID dalam baris. Atur ke NULL atau nilai negatif untuk menghilangkan Feature ID. |
Catatan penggunaan
ST_AsMVT3Dadalah fungsi agregat. Gunakan bersamaSELECT ... FROMpada tabel turunan.Panggil
ST_AsMVTGeom3Duntuk merepresentasikan geometri 3D dalam sistem koordinat tile dan meng-encode kolom lain sebagai fitur spasial dari atribut non-geometris.Gabungkan beberapa layer dengan
||atauSTRING_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)danLineTo3D(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.

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