Mengonversi geometri 3D ke dalam sistem koordinat tile yang diperlukan oleh ST_AsMVT3D untuk menghasilkan output Mapbox Vector Tile (MVT). Fungsi ini memperluas ST_AsMVTGeom dengan dukungan sumbu-z, mempertahankan nilai koordinat z selama transformasi koordinat.
Sintaksis
geometry ST_AsMVTGeom3D(
geometry geom,
box2d bounds,
integer extent = 4096,
integer buffer = 256,
boolean clip_geom = true
);Parameter
| Parameter | Tipe | Deskripsi | Bawaan | Nilai valid |
|---|---|---|---|---|
geom | geometry | Objek geometri 3D yang akan ditransformasi. | — | — |
bounds | box2d | Batas persegi panjang tile dalam sistem referensi koordinat (CRS) target, tidak termasuk buffer. Gunakan ST_TileEnvelope untuk menghasilkan nilai ini. | — | — |
extent | integer | Ukuran tile dalam ruang koordinat tile, sebagaimana didefinisikan oleh spesifikasi MVT. | 4096 | 256–8192 |
buffer | integer | Ukuran buffer dalam ruang koordinat tile untuk pemotongan geometri. | 256 | 1–4096 |
clip_geom | boolean | Menentukan apakah geometri 3D harus dipotong sesuai batas tile. | true | — |
Deskripsi
ST_AsMVTGeom3D menyiapkan geometri 3D untuk digunakan dengan ST_AsMVT3D. Fungsi ini mentransformasikan koordinat geometri ke dalam ruang tile dan memotong geometri sesuai batas tile jika parameter clip_geom bernilai true.
Perilaku utama:
Melakukan transformasi data sumbu-z bersamaan dengan koordinat x dan y, sehingga geometri 3D tetap utuh selama proses konversi tile.
Memerlukan batas tile dalam CRS yang sama dengan geometri input agar transformasi dan pemotongan geometri berjalan tepat. Gunakan
ST_TileEnvelopeuntuk menghasilkan batas tersebut.Tidak mendukung objek poligon 3D yang memiliki ring interior.
Contoh
Transformasi string garis 3D ke dalam ruang koordinat tile
Contoh berikut mentransformasikan string garis 3D dari SRID 4326 ke Web Mercator (SRID 3857), lalu mengonversinya ke dalam ruang koordinat tile untuk tile (1, 0, 0).
SELECT ST_AsText(
ST_AsMVTGeom3D(
ST_Transform('SRID=4326; LINESTRING(-10 -10 30, -10 -20 30)'::geometry, 3857),
ST_TileEnvelope(1, 0, 0)
)
) AS geom;Output yang diharapkan:
geom
------------------------------------------------------------------------------------
MULTILINESTRING Z ((3868.44444444444 4324.7197219642 30,3868.44444444444 4352 30))
(1 row)Hasilkan tile MVT 3D menggunakan ST_AsMVT3D
Contoh berikut menunjukkan kueri lengkap pembuatan tile menggunakan CTE. Geometri dari tabel ditransformasikan ke dalam ruang koordinat tile dan diagregasikan ke dalam format biner MVT untuk tile (12, 513, 412).
WITH mvtgeom AS (
SELECT ST_AsMVTGeom3D(
ST_Transform(geom, 3857),
ST_TileEnvelope(12, 513, 412),
extent => 4096,
buffer => 256
) AS geom
FROM your_3d_table
WHERE geom && ST_Transform(ST_TileEnvelope(12, 513, 412), 4326)
)
SELECT ST_AsMVT3D(mvtgeom.*)
FROM mvtgeom;Ganti your_3d_table dengan nama tabel Anda yang berisi data geometri 3D.
Lihat juga
ST_AsMVT3D — mengagregasikan geometri tile ke dalam format biner MVT
ST_AsMVTGeom — fungsi PostGIS 2D yang diperluas oleh fungsi ini
ST_TileEnvelope — menghasilkan kotak batas tile