Saat Anda menentukan ketinggian untuk fitur di peta 3D – seperti garis, poligon, model, atau penanda – ada beberapa faktor yang dapat memengaruhi penempatannya, baik dalam tampilan maupun dalam cara rendering tampilan berinteraksi dengan fitur tersebut. Dokumen ini membahas penggunaan 'AltitudeMode' pada peta 3D dan cara mengelola ketinggian untuk fitur.
Berikut cara menggunakan AltitudeMode dengan sejumlah jenis fitur:
Penanda: Marker3DElement, Marker3DInteractiveElement
Tentukan ketinggian di lokasi, dan juga ekstrusi.
Model: Model3DElement, Model3DInteractiveElement
Tentukan ketinggian pada titik anchor model, yang harus digunakan dengan orientasinya untuk penempatan yang tepat dalam tampilan.
Polyline: Polyline3DElement, Polyline3DInteractiveElement
Tentukan cara penerapan ketinggian ke titik posisi di sepanjang polyline.
Poligon: Polygon3DElement, Polygon3DInteractiveElement
Tentukan cara penerapan ketinggian untuk memosisikan titik di sepanjang poligon.
Cara Penggunaan Ketinggian di Lingkungan 3D
Saat menempatkan titik dalam tampilan 3D, posisi akhirnya dipengaruhi oleh keberadaan bangunan atau objek 3D yang diambil, seperti pohon. Penting untuk memahami dua konsep utama:
- Model Medan Digital (DTM): Model ini merepresentasikan elevasi "tanah kosong". Anggap saja sebagai bentuk alami tanah tanpa bangunan, pohon, atau struktur lainnya di atasnya. Semua area didukung oleh DTM, yang menjadi dasar elevasi globe (dihitung menggunakan EGM96).
- Model Permukaan Digital (DSM): Model ini merepresentasikan elevasi "permukaan atas", termasuk bangunan, pohon, dan struktur lainnya. Di area tempat fitur telah diambil (terutama lingkungan perkotaan tempat bangunan mendominasi tampilan), permukaan yang terlihat akan tampak lebih tinggi daripada medan dasar.
Perbedaan antara DTM dan DSM sangat penting untuk memahami cara berbagai mode ketinggian berinteraksi dengan Model Elevasi Digital (DEM) ini, karena penempatan fitur mungkin terhalang atau dipengaruhi oleh model permukaan. Anda dapat melihat perbedaannya dalam diagram di bawah:

Jika Fitur Tidak Memiliki Data Ketinggian
Jika Anda memiliki data yang tidak memiliki pengukuran ketinggian atau saat menggunakan data dari
layanan Google lain, seperti layanan Routes atau Places, Anda sering kali tidak akan
memiliki ketinggian yang diberikan dalam geometri yang ditampilkan. Dalam kasus tersebut, menempatkan
fitur dalam tampilan mengharuskan Anda memilih AltitudeMode dengan cermat:
- Menjepitnya ke permukaan tanah: Pendekatan paling sederhana, yaitu fitur akan otomatis menyesuaikan dengan medan. Mode ini menggunakan model DTM.
- Berikan ketinggian arbitrer + mode relatif: Anda dapat menetapkan ketinggian yang dipilih, lalu menggunakan RELATIVE_TO_GROUND (yang menempatkan fitur relatif terhadap model DTM) atau RELATIVE_TO_MESH (yang mengambangkannya di atas model DSM).
- Gunakan layanan lain untuk mendapatkan ketinggian: Untuk ketinggian DTM yang akurat di lokasi fitur, Anda dapat menggunakan layanan seperti Elevation API Google Maps Platform. Jika berupa garis atau poligon, Anda harus melakukannya untuk setiap titik yang membentuk garis atau poligon tersebut.
Apa arti opsi AltitudeMode dan kapan harus menggunakannya?
Ada empat opsi AltitudeMode yang dapat Anda tentukan saat menentukan fitur:
ABSOLUTE
Bayangkan sebuah pesawat terbang pada ketinggian tertentu di atas permukaan laut, misalnya 10.000 kaki. Ketinggiannya tetap, tidak peduli apakah pesawat terbang di atas gunung atau lembah.
Cara menggunakannya: Ketinggian objek dinyatakan relatif terhadap permukaan laut rata-rata (dihitung menggunakan EGM96). Koordinat ketinggian fitur ditafsirkan sebagai elevasi yang tepat di atas permukaan laut rata-rata.
Kapan harus menggunakannya: Untuk fitur dengan ketinggian yang diketahui dan akurat, seperti jalur penerbangan, objek yang terendam dengan kedalaman yang tepat, atau instrumen ilmiah titik tetap.
CLAMP_TO_GROUND
Bayangkan Anda meletakkan tikar piknik langsung di lereng bukit. Tidak peduli seberapa curam atau datar bukitnya, selimut selalu terbentang rata di permukaan yang terlihat.
Cara menggunakannya: Ketinggian objek dinyatakan sebagai ditempatkan langsung di permukaan tanah. Ikon tersebut akan tetap berada di permukaan tanah, mengikuti medan, terlepas dari nilai ketinggian yang diberikan. Koordinat ketinggian fitur diabaikan; fitur diproyeksikan langsung ke permukaan medan (DTM).
Kapan harus menggunakannya: Untuk fitur yang harus selalu sesuai dengan medan, seperti jalan, pagar, jalur, batas properti, atau dasar bangunan.
RELATIVE_TO_GROUND
Bayangkan balon udara yang tetap berada 100 meter di atas ketinggian permukaan tanah alami (DTM) di bawahnya. Jika permukaan tanah naik, balon akan naik bersamanya, mempertahankan jarak 100 meter dari "permukaan tanah".
Cara menggunakannya: Ketinggian objek dinyatakan relatif terhadap permukaan tanah (DTM). Koordinat ketinggian fitur ditafsirkan sebagai offset dari elevasi medan pada posisi horizontalnya.
Kapan harus menggunakannya: Untuk objek yang perlu mempertahankan ketinggian yang konsisten di atas medan alami, seperti menara komunikasi atau kabel udara di area pedesaan.
RELATIVE_TO_MESH
Ini seperti drone yang terbang pada ketinggian tetap di atas apa pun yang dilewatinya, baik itu tanah kosong, atap bangunan, atau puncak pohon. Model ini menyesuaikan dengan permukaan tertinggi yang terlihat (DSM).
Cara menggunakannya: Ketinggian objek dinyatakan sesuai dengan permukaan tanah+bangunan+permukaan air (DSM) tertinggi. Koordinat ketinggian fitur ditafsirkan sebagai offset dari elevasi DSM.
Kapan harus menggunakannya: Untuk objek yang perlu mengambang pada ketinggian tertentu di atas apa pun yang ada secara fisik (DTM, bangunan, air), berguna untuk penanda di atap atau fitur yang secara dinamis menyesuaikan dengan tampilan yang terlihat.
Untuk mengetahui detail selengkapnya, lihat dokumentasi untuk konstanta AltitudeMode.
Contoh visual dan penerapan praktis
Contoh ini menggunakan lokasi tertentu, Stonehenge, untuk menggambarkan pengaruh berbagai opsi AltitudeMode terhadap penempatan fitur. Contoh-contoh ini membahas penempatan penanda terlebih dahulu, lalu garis dan area, yang memiliki beberapa pertimbangan berbeda.
Penanda Posisi
Pertimbangkan penanda pin yang ditempatkan sebagai berikut:
const markerLocation = { lat: 51.1789, lng: -1.8262, altitude: 102.23 };
Anda dapat melihatnya sebagai pin putih dalam adegan di bawah:

Sekarang lihat gambar di bawah yang menunjukkan pin berbagai warna yang diposisikan menggunakan mode ketinggian yang berbeda.

Mari kita lihat bagaimana AltitudeMode yang berbeda memengaruhi penempatan penanda dalam urutan ketinggian menaik.
CLAMP_TO_GROUND (Pin Ungu)
Pin ini mengabaikan nilai ketinggian dan menempel pada elevasi tanah terdekat. Anda dapat melihatnya tepat di bawah pin putih, yang secara efektif "menempel" ke medan.
Secara teknis, mode ini mengabaikan ketinggian sebenarnya dan menjepit pin ke ketinggian DTM terdekat.
ABSOLUTE (Pin Putih)
Pin ini menggunakan nilai ketinggian yang tepat (102,23 m) untuk menempatkan penanda pada ketinggian tersebut di atas permukaan laut (EGM96), yang muncul di atas salah satu batu Stonehenge seperti yang ditentukan oleh ketinggian yang diberikan.
Secara teknis, mode ini menggunakan nilai ketinggian sebenarnya yang diberikan untuk menempatkan pin pada ketinggian yang ditentukan di atas permukaan laut, yang dalam contoh ini adalah lokasi Stonehenge, tetapi di atas salah satu batu.
RELATIVE_TO_GROUND (Pin Oranye)
Pin ini menggunakan permukaan tanah (DTM) sebagai dasarnya dan menempatkan dirinya 102,23 m di atas permukaan tanah tersebut, sehingga tampak mengambang di atas permukaan tanah alami yang berada di bawah batu di henge.
Secara teknis, mode ini menetapkan dasarnya ke level DTM sebenarnya di permukaan tanah, lalu menempatkan pin pada ketinggian 102,23 m di atasnya.
RELATIVE_TO_MESH (Pin Biru)
Pin ini menggunakan permukaan yang terlihat (DSM) sebagai dasarnya dan menempatkan dirinya 102,23 m di atas permukaan tersebut. Mode ini menyertakan tinggi batu dalam pengukurannya, sehingga posisinya sedikit lebih tinggi daripada pin oranye.
Secara teknis, mode ini menggunakan mesh (DSM) sebagai dasar dan menempatkan lokasi pada ketinggian yang ditentukan di atasnya. Karena DSM berada di bagian atas batu berdiri, pin ini menyertakan tinggi tambahan ini dalam pengukurannya saat menentukan tinggi relatifnya, sehingga posisinya sedikit lebih tinggi daripada pin RELATIVE_TO_GROUND.
Garis dan Area Posisi
Untuk garis dan area, ketinggian titik dalam fitur (baik ditentukan atau tidak) dan AltitudeMode yang digunakan sangatlah penting. Mari kita
periksa garis di sepanjang Stonehenge dengan ketinggian yang ditentukan berikut:
const lineCoords = [
{ lat: 51.1786, lng : -1.8266, altitude: 101.36 },
{ lat: 51.1787, lng : -1.8264, altitude: 101.18 },
{ lat: 51.178778, lng : -1.826354, altitude: 104.89 },
{ lat: 51.178815, lng : -1.826275, altitude: 107.55 },
{ lat: 51.178923, lng : -1.825980, altitude: 105.53 },
{ lat: 51.1791, lng : -1.8258, altitude: 100.29 },
{ lat: 51.1792, lng : -1.8257, altitude: 100.29 }
];
Anda dapat melihat garis ini direpresentasikan dalam gambar di bawah ini dalam warna putih, menggunakan pemosisian absolut.

Sekali lagi, gambar di bawah menunjukkan garis yang menggunakan mode ketinggian yang berbeda. Mari kita bahas satu per satu, dari yang terendah hingga yang tertinggi.

CLAMP_TO_GROUND (Garis Ungu)
Garis ini mengabaikan ketinggian yang ditentukan untuk setiap titik dan "menutupi" garis langsung di atas permukaan tanah (DTM). Ketinggian ini mengikuti medan, dengan mengabaikan keberadaan fitur apa pun seperti bangunan atau batu di atasnya.
Secara teknis, mode ini mengabaikan nilai ketinggian sebenarnya dan menempatkan garis di atas DTM, mengikuti medan di bawahnya dan mengabaikan mesh fitur di atasnya.
ABSOLUTE (Garis Putih)
Garis ini menggunakan ketinggian yang tepat untuk setiap titik, sehingga garis melewati beberapa batu. Garis ini dihubungkan oleh garis lurus di antara setiap titik, yang terkadang dapat membuatnya tampak melewati objek jika titiknya tidak cukup sering.
Secara teknis, mode ini mengikuti ketinggian yang ditentukan untuk setiap titik, menghubungkannya dengan garis lurus, yang berarti mode ini dapat melewati mesh (misalnya: batu) jika nilai ketinggiannya menentukan demikian. Skenario ini dibahas di bagian selanjutnya.
RELATIVE_TO_GROUND (Garis Oranye)
Garis ini menggunakan permukaan tanah alami (DTM) sebagai dasarnya dan menempatkan setiap titik pada ketinggian yang ditentukan di atas permukaan tanah tersebut.
Secara teknis, mode ini menggunakan DTM sebagai dasar dan menempatkan lokasi garis pada ketinggian yang tercantum relatif terhadapnya.
RELATIVE_TO_MESH (Garis Biru)
Garis ini menggunakan permukaan yang terlihat, yang mencakup bangunan dan batu, sebagai dasarnya. Kemudian, setiap titik ditempatkan pada ketinggian yang ditentukan di atas mesh tersebut, sehingga secara efektif mereplikasi bentuk garis dalam kaitannya dengan lanskap yang terlihat.
Secara teknis, mode ini menggunakan mesh (DSM) sebagai dasar dan menempatkan lokasi pada ketinggian yang ditentukan di atasnya, bergantung pada mesh, garis dapat berubah mengingat fitur yang berbeda di permukaan tanah.
Jika Ketinggian Tidak Ditentukan untuk Garis
Sekarang, mari kita pertimbangkan koordinat garis yang sama, tetapi tanpa ketinggian yang ditentukan:
const lineCoords = [
{ lat: 51.1786, lng : -1.8266 },
{ lat: 51.1787, lng : -1.8264 },
{ lat: 51.178778, lng : -1.826354 },
{ lat: 51.178815, lng : -1.826275 },
{ lat: 51.178923, lng : -1.825980 },
{ lat: 51.1791, lng : -1.8258 },
{ lat: 51.1792, lng : -1.8257 }
];
Dalam skenario ini, jika tidak ada ketinggian yang diberikan, garis sering kali muncul di lokasi yang serupa. Garis putih, oranye, dan ungu mungkin bergabung menjadi satu garis (oranye, karena biasanya digambar terakhir) karena semuanya ditetapkan secara default ke pemosisian di permukaan tanah yang serupa. Anda dapat melihatnya di bawah:

Garis biru (RELATIVE_TO_MESH) kembali menggunakan mesh (DSM) sebagai dasar. Karena tidak ada ketinggian yang ditentukan, titik-titik tersebut hanya dihamparkan langsung di atas mesh. Penting untuk diperhatikan bahwa alat ini tidak meletakkan garis pada mesh, tetapi menghubungkan titik yang ditentukan pada mesh dengan koneksi lurus. Meskipun hal ini mungkin terlihat dapat diterima dalam beberapa contoh, hal ini dapat menyebabkan masalah visibilitas saat tertutup oleh fitur lain. Masalah ini dibahas di bagian berikutnya.
Interaksi mesh dan garis. Sekarang kita dapat melihat polyline lain. Gambar ini berada di area yang sama, tetapi dengan cakupan permukaan yang lebih luas (atau lebih banyak detail pada DSM di atas DTM).
const lineCoords = [
{ lat: 51.188404, lng: -1.779059, altitude: 70.69 },
{ lat: 51.187955, lng: -1.780143, altitude: 77.25 },
{ lat: 51.187658, lng: -1.781552, altitude: 68.97 },
{ lat: 51.187376, lng: -1.782447, altitude: 99.02 },
{ lat: 51.186912, lng: -1.783692, altitude: 104.35 },
{ lat: 51.185855, lng: -1.788368, altitude: 86.91 },
];
Saat kita melihat representasi menggunakan metode (dan warna) yang sama seperti sebelumnya, kita mendapatkan tampilan ini:

Ungu adalah CLAMP_TO_GROUND, yang dapat Anda lihat di sepanjang permukaan tanah. Putih adalah ABSOLUTE, yang dapat Anda lihat bahwa garis lurus menghubungkan titik-titik yang diposisikan secara absolut dalam ruang. Dengan warna oranye dan biru sebagai versi relatif baik tentang PERMUKAAN (DTM) atau MESH (DSM), perhatikan bahwa garis biru sedikit berbeda bentuknya karena ketinggian fitur di bawahnya.
Sekali lagi, kita dapat melihat bahwa sifat pembuatan garis berarti garis tersebut melewati mesh karena titik-titik dihubungkan oleh garis lurus. Skenario ini mungkin menyebabkan masalah dalam melihat garis, sehingga Anda dapat menetapkan drawsOccludedSegments ke true untuk memastikan garis terlihat melalui pohon, seperti yang ditunjukkan secara lebih mendetail pada gambar berikut, tempat garis yang melewati mesh masih dapat dilihat.

Sifat pemosisian dalam ruang berarti bahwa titik-titik tersebut mungkin berada di dalam mesh dan juga garis yang menghubungkan titik-titik tersebut mungkin juga berada di dalam mesh, sehingga berpotensi menyebabkan artefak visual. Di bagian di bawah, kita dapat melihat bagaimana artefak tersebut dapat ditingkatkan jika memungkinkan.
Menyelesaikan masalah dalam interaksi antara garis dan medan
Dalam contoh lain, di area yang sama, kita dapat melihat beberapa artefak lain yang harus kita perhatikan saat menggunakan mode ketinggian tertentu.
Di sini kita memiliki area yang relatif datar yang sebagian besar berada di tingkat DTM, dengan detail tambahan terbatas di atasnya dalam mesh. Skenario ini juga akan terjadi di area yang tidak memiliki cakupan 3D di atas model medan. Mari kita lihat lokasi berikut, seperti yang ditentukan di bawah:
const lineCoords = [
{ lat: 51.194642, lng: -1.782636, altitude: 99.10 },
{ lat: 51.193974, lng: -1.783952, altitude: 99.86 },
{ lat: 51.192203, lng: -1.787175, altitude: 96.14 },
{ lat: 51.190024, lng: -1.790250, altitude: 105.92 },
{ lat: 51.187491, lng: -1.793580, altitude: 102.60 },
{ lat: 51.183690, lng: -1.798745, altitude: 95.69 },
];
Dan dapat dilihat pada gambar, dengan garis yang memiliki representasi warna yang sama seperti sebelumnya: (putih : ABSOLUTE, biru : RELATIVE_TO_MESH, ungu : CLAMP_TO_GROUND, oranye: RELATIVE_TO_GROUND).

Di sini kita dapat melihat sejumlah artefak, yang pertama adalah karena kurangnya cakupan permukaan, garis oranye (RELATIVE_TO_GROUND) dan biru (RELATIVE_TO_MESH) berada di lokasi yang (sebagian besar) sama (dengan garis biru ditampilkan karena digambar terakhir).
Kita juga dapat melihat bahwa garis ungu (CLAMP_TO_GROUND) mengikuti permukaan tanah dan dapat dilihat di bukit, sedangkan garis putih (ABSOLUTE) dapat dilihat menghilang ke dalam bukit karena hanya titik-titik yang terhubung dan garis lurus melewati permukaan tanah.
Anda dapat melihatnya secara khusus dalam gambar ini saat garis ungu telah disembunyikan.

Oleh karena itu, hal ini dapat menyebabkan beberapa artefak visual yang aneh, di mana garis dapat terlihat menghilang di bawah tanah (atau bahkan melalui mesh) karena garis di antara titik-titik tersebut hanya mengikuti jalur lurus. Anda mungkin dapat meningkatkan tampilan visual garis tersebut dengan menambahkan lebih banyak titik di antara garis menggunakan metode interpolasi. Pengaruhnya terhadap visual akan sekali lagi bergantung pada metode yang digunakan:
- Untuk Pengukuran Relatif (RELATIVE_TO_GROUND atau RELATIVE_TO_MESH): Saat menggunakan nilai ketinggian relatif, membuat lebih banyak titik di sepanjang garis atau poligon akan memungkinkan fitur ditempatkan pada tingkat yang lebih sesuai, sehingga lebih sesuai dengan profil ketinggian. Jika titik perantara ini tidak ada dalam data, Anda dapat menggunakan fungsi interpolasi, seperti fungsi Interpolate di library Geometri Google Maps Platform, untuk menambahkannya. Titik-titik baru ini kemudian dapat diberi nilai relatif yang akan ditempatkan di atas profil ketinggian yang relevan, lalu panjang garis yang menghubungkan titik-titik tersebut akan dibatasi dan representasi visualnya ditingkatkan.
- Untuk Fitur Absolut (ABSOLUTE): Untuk fitur ABSOLUTE, lebih banyak titik akan perlu memiliki nilai ketinggian aktual. Melakukan interpolasi di antara nilai absolut yang ada tidak akan memberikan titik yang secara akurat mencerminkan nilai apa pun di atas mesh, karena hanya akan menjadi rata-rata antara titik A dan titik B.
Ringkasan
Semoga dokumen ini telah memberikan ringkasan komprehensif tentang
opsi AltitudeMode di Photorealistic 3D Maps, yang menjelaskan bagaimana ABSOLUTE,
CLAMP_TO_GROUND, RELATIVE_TO_GROUND, dan RELATIVE_TO_MESH memengaruhi penempatan
dan rendering berbagai fitur seperti penanda, garis, dan poligon.
Memahami cara kerja mode ini bersama dengan Digital Terrain Model (DTM) dan Digital Surface Model (DSM) yang mendasarinya sangat penting untuk membuat representasi peta 3D yang akurat dan menarik secara visual dengan artefak visual minimum.
Kami harap Anda akan bereksperimen dengan mode ketinggian ini dalam project Anda sendiri untuk memanfaatkan potensi penuh pemetaan 3D dan menciptakan pengalaman yang menarik dan imersif bagi pengguna, serta memberikan masukan.
Kontributor
Matt Toon | Solutions Engineer, Geo Developer