Memahami Mode dan Fitur Ketinggian di Peta 3D

Saat Anda menentukan ketinggian untuk fitur di peta 3D – seperti garis, poligon, model, atau penanda – ada beberapa faktor yang dapat memengaruhi penempatannya, baik dalam adegan maupun dalam cara rendering adegan 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:

Cara Penggunaan Ketinggian di Lingkungan 3D

Saat menempatkan titik dalam adegan 3D, posisi akhirnya dipengaruhi oleh keberadaan bangunan atau objek 3D yang diambil seperti pohon. Anda harus memahami dua konsep utama:

  • Model Medan Digital (DTM): Ini mewakili elevasi "tanah kosong". Anggap saja sebagai bentuk alami lahan tanpa bangunan, pohon, atau struktur lain di atasnya. Semua area didasari oleh DTM, yang membentuk dasar elevasi bola dunia (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 Ketinggian Digital (DEM) ini, karena penempatan fitur mungkin terhalang atau dipengaruhi oleh model permukaan. Anda dapat melihat perbedaannya dalam diagram di bawah:

Peta 3D yang menunjukkan perbedaan antara Model Medan Digital (DTM) dan Model Permukaan Digital (DSM).

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 Rute atau Tempat, Anda sering kali tidak akan memiliki ketinggian yang diberikan dalam geometri yang ditampilkan. Dalam kasus tersebut, penempatan fitur dalam adegan mengharuskan Anda memilih AltitudeMode dengan cermat:

  • Menempelkannya ke tanah: Pendekatan paling sederhana, di mana fitur akan otomatis menyesuaikan dengan medan. Mode ini menggunakan model DTM.
  • Memberikan 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 menempatkannya di atas model DSM).
  • Menggunakan layanan lain untuk mendapatkan ketinggian: Untuk mendapatkan 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.

Apa arti opsi AltitudeMode dan kapan menggunakannya?

Ada empat opsi AltitudeMode yang dapat Anda tentukan saat menentukan fitur:

ABSOLUT

Bayangkan sebuah pesawat terbang di ketinggian tertentu di atas permukaan laut, misalnya 10.000 kaki. Ketinggiannya tetap, tidak peduli apakah 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 menggunakannya: Untuk fitur dengan ketinggian yang diketahui dan presisi, seperti jalur penerbangan, objek yang terendam dengan kedalaman yang tepat, atau instrumen ilmiah titik tetap.

CLAMP_TO_GROUND

Bayangkan meletakkan selimut piknik langsung di lereng bukit. Terlepas dari seberapa curam atau datarnya bukit, selimut selalu terbentang rata di permukaan yang terlihat.

Cara menggunakannya: Ketinggian objek dinyatakan sebagai ditempatkan langsung di tanah. Objek 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 apa pun elevasi permukaan alami (DTM) di bawahnya. Jika permukaan tanah naik, balon akan naik bersamanya, dengan mempertahankan jarak 100 meter dari "tanah kosong".

Cara menggunakannya: Ketinggian objek dinyatakan relatif terhadap permukaan tanah (DTM). Koordinat ketinggian fitur ditafsirkan sebagai offset dari elevasi medan di posisi horizontalnya.

Kapan harus menggunakannya: Untuk objek yang perlu mempertahankan ketinggian yang konsisten di atas medan alami, seperti menara komunikasi atau saluran listrik 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. Fitur ini menyesuaikan dengan permukaan yang paling terlihat (DSM).

Cara menggunakannya: Ketinggian objek dinyatakan relatif terhadap permukaan tanah+bangunan+air tertinggi (DSM). Koordinat ketinggian fitur ditafsirkan sebagai offset dari elevasi DSM.

Kapan 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 menyesuaikan secara dinamis ke adegan yang terlihat.

Untuk mengetahui detail selengkapnya, lihat dokumentasi untuk konstanta AltitudeMode.

Contoh visual dan penerapan praktis

Contoh ini menggunakan lokasi tertentu, Stonehenge, untuk menggambarkan bagaimana opsi AltitudeMode yang berbeda memengaruhi penempatan fitur. Contoh ini pertama-tama mencakup penanda pemosisian, lalu garis dan area, yang memiliki beberapa pertimbangan yang 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 di adegan di bawah:

Adegan peta 3D dengan penanda pin putih, yang menggambarkan penempatan penanda default.

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

Adegan peta 3D yang menampilkan beberapa pin (putih, ungu, oranye, biru) yang diposisikan menggunakan mode ketinggian yang berbeda, semuanya berpusat di sekitar Stonehenge.

Mari kita lihat bagaimana perbedaan AltitudeModememengaruhi penempatan penanda dalam urutan menaik elevasi.

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 mengapit 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 yang sebenarnya diberikan untuk menempatkan pin pada ketinggian yang ditentukan di atas permukaan laut, yang dalam contoh ini adalah lokasi Stonehenge, tetapi di atas salah satu batunya.

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 mengapung di atas permukaan tanah alami yang berada di bawah batu di henge.

Secara teknis, mode ini menetapkan dasarnya ke tingkat DTM sebenarnya di tanah, lalu menempatkan pin 102,23 m di atasnya.

RELATIF TERHADAP 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, menyelaraskannya sedikit lebih tinggi daripada pin oranye.

Secara teknis, mode ini menggunakan mesh (DSM) sebagai dasar dan menempatkan lokasi pada ketinggian tertentu di atasnya. Karena DSM berada di atas batu yang berdiri, pin ini menyertakan ketinggian ekstra ini dalam pengukurannya saat menentukan ketinggian relatifnya, sehingga sedikit lebih tinggi daripada pin RELATIVE_TO_GROUND.

Memosisikan Garis dan Area

Untuk garis dan area, ketinggian titik dalam fitur (baik ditentukan atau tidak) dan AltitudeMode yang digunakan sangat 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 ditampilkan dalam gambar di bawah dengan warna putih, menggunakan penentuan posisi absolut.

Peta 3D yang menampilkan garis putih di sekitar Stonehenge menggunakan penentuan posisi absolut.

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

Peta 3D yang menampilkan beberapa garis berwarna (ungu, putih, oranye, biru) yang diposisikan di sekitar Stonehenge menggunakan mode ketinggian yang berbeda.

CLAMP_TO_GROUND (Garis Ungu)

Garis ini mengabaikan ketinggian yang ditentukan untuk setiap titik dan "menutupi" garis langsung di atas permukaan tanah (DTM). Jalur ini mengikuti medan, dan mengabaikan keberadaan fitur seperti bangunan atau bebatuan di atasnya.

Secara teknis, mode ini mengabaikan nilai ketinggian sebenarnya dan menempatkan garis di atas DTM, mengikuti medan di bawahnya dan mengabaikan jaring fitur di atasnya.

ABSOLUTE (Garis Putih)

Garis ini menggunakan ketinggian yang tepat untuk setiap titik, sehingga garis melewati beberapa batu. Garis ini dihubungkan dengan 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 dapat melewati jaring (misalnya: batu) jika nilai ketinggiannya ditentukan. Skenario ini dibahas di bagian selanjutnya.

RELATIVE_TO_GROUND (Jalur 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 dapat bergabung menjadi satu garis (oranye, karena biasanya digambar terakhir) karena semuanya secara default memiliki posisi di tingkat dasar yang serupa. Anda dapat melihatnya di bawah ini:

Peta 3D yang menampilkan beberapa garis berwarna (oranye, biru) di sekitar Stonehenge, dengan garis putih dan ungu yang bergabung karena kurangnya data ketinggian.

Garis biru (RELATIVE_TO_MESH) kembali menggunakan mesh (DSM) sebagai dasarnya. Karena tidak ada ketinggian yang ditentukan, titik-titik tersebut hanya ditumpuk langsung di atas mesh. Penting untuk diperhatikan bahwa perintah ini tidak meletakkan garis di mesh, tetapi menghubungkan titik yang ditentukan pada mesh dengan koneksi lurus. Meskipun mungkin terlihat dapat diterima dalam beberapa contoh, hal ini dapat menyebabkan masalah visibilitas saat ditutupi 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 detail yang lebih banyak 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 akan mendapatkan tampilan ini:

Peta 3D yang menampilkan beberapa garis berwarna (ungu, putih, oranye, biru) di atas medan dengan pepohonan dan berbagai ketinggian.

Ungu adalah CLAMP_TO_GROUND, yang dapat Anda lihat di sepanjang permukaan tanah. Putih adalah ABSOLUT, yang dapat Anda lihat bahwa garis lurus menghubungkan titik-titik yang diposisikan secara absolut dalam ruang. Dengan oranye dan biru menjadi versi relatif baik tentang SURFACE (DTM) atau MESH (DSM), perhatikan garis biru sedikit berbeda bentuknya karena ketinggian fitur di bawahnya.

Sekali lagi kita dapat mencatat bahwa sifat pembuatan garis berarti garis melewati mesh saat titik-titik dihubungkan bersama oleh garis lurus. Skenario ini dapat menyebabkan masalah dalam melihat garis, sehingga Anda dapat menyetel drawsOccludedSegments ke true untuk memastikan garis terlihat melalui pepohonan, seperti yang ditunjukkan secara lebih mendetail pada gambar berikut, di mana garis yang melewati mesh masih dapat dilihat.

Peta 3D yang menampilkan garis yang melewati pepohonan, dengan segmen yang tertutup dibuat terlihat untuk menggambarkan oklusi segmen: benar.

Sifat penempatan di ruang berarti bahwa titik-titik tersebut mungkin berada dalam mesh dan garis yang menghubungkan titik-titik tersebut juga mungkin berada dalam mesh, yang 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 },
];

Seperti yang terlihat pada gambar, garis memiliki representasi warna yang sama seperti sebelumnya: (putih : ABSOLUTE, biru : RELATIVE_TO_MESH, ungu : CLAMP_TO_GROUND, oranye: RELATIVE_TO_GROUND).

Peta 3D yang menampilkan berbagai garis berwarna (putih, biru, ungu, oranye) di atas medan yang relatif datar, yang menyoroti artefak visual saat garis menghilang ke dalam tanah.

Di sini kita dapat melihat sejumlah artefak, yang pertama adalah karena tidak adanya penutup permukaan, garis oranye (RELATIVE_TO_GROUND) dan biru (RELATIVE_TO_MESH) berada di (sebagian besar) lokasi yang 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.

Peta 3D yang menampilkan garis putih dan biru yang menghilang ke dalam bukit, dengan garis ungu tersembunyi, yang menggambarkan artefak visual garis absolut dan relatif terhadap mesh.

Oleh karena itu, hal ini dapat menyebabkan beberapa artefak visual yang aneh, di mana garis dapat dilihat menghilang di bawah tanah (atau bahkan melalui mesh) karena garis di antara titik-titik hanya mengikuti jalur lurus. Anda mungkin dapat meningkatkan tampilan visual garis tersebut dengan menambahkan lebih banyak titik di antara garis menggunakan metode interpolasi. Namun, hal ini akan memengaruhi tampilan visual, yang sekali lagi akan 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 level yang lebih tepat, sehingga lebih sesuai dengan profil elevasi. Jika titik perantara ini tidak ada dalam data Anda, Anda dapat menggunakan fungsi interpolasi, seperti fungsi Interpolate di library Geometri Google Maps Platform, untuk menambahkannya. Titik baru ini kemudian dapat diberi nilai relatif yang akan ditempatkan di atas profil elevasi yang relevan, lalu panjang garis yang menghubungkan titik-titik akan dibatasi dan representasi visual ditingkatkan.
  • Untuk Fitur Absolut (ABSOLUTE): Untuk fitur ABSOLUTE, lebih banyak titik akan memerlukan nilai ketinggian sebenarnya. Menginterpolasi antara nilai absolut yang ada tidak akan memberikan titik yang secara akurat mencerminkan nilai 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 Peta 3D Fotorealistik, 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 Model Medan Digital (DTM) dan Model Permukaan Digital (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 proyek Anda sendiri untuk mengoptimalkan potensi pemetaan 3D dan menciptakan pengalaman yang menarik dan imersif bagi pengguna Anda serta memberikan masukan.

Kontributor

Matt Toon | Solutions Engineer, Geo Developer