3D haritadaki özellikler (ör. çizgiler, poligonlar, modeller veya işaretçiler) için yükseklik belirttiğinizde, hem sahne içinde hem de sahnenin oluşturulmasının bu özellikle etkileşim kurma biçiminde yerleşimlerini etkileyebilecek çeşitli faktörler vardır. Bu belgede, 3D haritada "AltitudeMode" kullanımı ve özelliklerin yüksekliğinin nasıl yönetileceği açıklanmaktadır.
AltitudeMode simgesini çeşitli özellik türleriyle nasıl kullanabileceğiniz aşağıda açıklanmıştır:
İşaretçiler: Marker3DElement, Marker3DInteractiveElement
Konumda rakımı ve ekstrüzyonu belirtin.
Modeller: Model3DElement, Model3DInteractiveElement
Modelin sabit noktasında bir yükseklik belirtin. Bu yükseklik, sahnede doğru konumlandırma için yönüyle birlikte kullanılmalıdır.
Çoklu çizgiler: Polyline3DElement, Polyline3DInteractiveElement
Yüksekliğin, çoklu çizgi üzerindeki konum noktalarına nasıl uygulanacağını belirtin.
Poligonlar: Polygon3DElement, Polygon3DInteractiveElement
Yüksekliğin, bir poligon boyunca konum noktalarına nasıl uygulanacağını belirtin.
3D ortamlarda yükseklik nasıl kullanılır?
3 boyutlu bir sahnede nokta yerleştirirken bu noktaların son konumu, yakalanan 3 boyutlu binaların veya ağaç gibi nesnelerin varlığından etkilenir. İki temel kavramı anlamak çok önemlidir:
- Dijital Arazi Modeli (DTM): Bu, "çıplak arazi" yüksekliğini temsil eder. Bunu, üzerinde bina, ağaç veya başka bir yapı bulunmayan arazinin doğal şekli olarak düşünebilirsiniz. Tüm alanlar, dünyanın yüksekliğinin temelini oluşturan DTM ile desteklenir (EGM96 kullanılarak hesaplanır).
- Dijital Yüzey Modeli (DSM): Binalar, ağaçlar ve diğer yapılar dahil olmak üzere "üst yüzey" yüksekliğini gösterir. Özelliklerin yakalandığı alanlarda (özellikle binaların manzaraya hakim olduğu kentsel ortamlarda) görünür yüzey, temel araziden daha yüksek görünür.
Özelliklerin yerleşimi yüzey modeli tarafından gizlenebileceği veya etkilenebileceği için, farklı yükseklik modlarının bu Dijital Yükseklik Modelleri (DEM'ler) ile nasıl etkileşime girdiğini anlamak için DTM ile DSM arasındaki ayrım çok önemlidir. Farkları aşağıdaki şemada görebilirsiniz:

Özelliklerde Yükseklik Verisi Olmadığında
Yükseklik ölçümü içermeyen verileriniz varsa veya Rotalar ya da Yerler gibi başka bir Google hizmetinden gelen verileri kullanıyorsanız döndürülen geometride genellikle yükseklik bilgisi yer almaz. Bu gibi durumlarda, özelliği sahneye yerleştirmek için AltitudeMode dikkatli bir şekilde seçmeniz gerekir:
- Yere sabitleme: En basit yaklaşımdır. Bu yaklaşımda özellik, araziye otomatik olarak uyum sağlar. Bu modda DTM modeli kullanılır.
- Rastgele bir yükseklik ve göreli mod atayın: Belirli bir yükseklik atayabilir, ardından RELATIVE_TO_GROUND (özellikleri DTM modeline göre yerleştirir) veya RELATIVE_TO_MESH (özellikleri DSM modelinin üzerinde yüzer) kullanabilirsiniz.
- Yükseklik elde etmek için başka bir hizmet kullanma: Özelliğin konumunda hassas DTM yüksekliği için Google Maps Platform Elevation API gibi bir hizmet kullanabilirsiniz. Çizgi veya poligon söz konusuysa bunu, çizgiyi ya da poligonu oluşturan her nokta için yapmanız gerekir.
AltitudeMode seçenekleri ne anlama geliyor ve ne zaman kullanılıyor?
Bir özelliği tanımlarken belirtebileceğiniz dört AltitudeMode seçeneği vardır:
MUTLAK
Deniz seviyesinden belirli bir yükseklikte (ör. 10.000 fit) uçan bir uçak düşünün. İster dağın ister vadinin üzerinde uçuyor olsun yüksekliği sabittir.
Nasıl kullanılır?: Nesne yüksekliği, ortalama deniz seviyesine göre ifade edilir (EGM96 kullanılarak hesaplanır). Özelliğin yükseklik koordinatı, ortalama deniz seviyesinin üzerindeki kesin yükseklik olarak yorumlanır.
Ne zaman kullanılır?: Uçuş rotaları, tam derinliğe sahip batık nesneler veya sabit noktalı bilimsel araçlar gibi bilinen ve kesin rakımlara sahip özellikler için.
CLAMP_TO_GROUND
Doğrudan bir yamaç üzerine piknik örtüsü sermeyi düşünün. Yamaç ne kadar dik veya düz olursa olsun battaniye her zaman görünür yüzeyde düz durur.
Kullanımı: Nesne yüksekliği, doğrudan yere yerleştirilmiş şekilde ifade edilir. Sağlanan yükseklik değerinden bağımsız olarak, araziyi takip ederek zemin seviyesinde kalırlar. Özelliğin yükseklik koordinatı yoksayılır ve doğrudan arazi yüzeyine (DTM) yansıtılır.
Ne zaman kullanılır?: Yollar, çitler, patikalar, mülk sınırları veya binaların tabanı gibi her zaman araziye uygun olması gereken özellikler için.
RELATIVE_TO_GROUND
Doğal zemin yüksekliği (DTM) ne olursa olsun 100 metre yukarıda kalan bir sıcak hava balonu hayal edin. Zemin yükseldiğinde balon da yükselir ve "çıplak toprak" ile arasındaki 100 metrelik mesafeyi korur.
Nasıl kullanılır? Nesne yüksekliği, yer yüzeyine (DTM) göre ifade edilir. Özelliğin yükseklik koordinatı, yatay konumundaki arazi yüksekliğinden sapma olarak yorumlanır.
Ne zaman kullanılır?: Doğal arazinin üzerinde tutarlı bir yüksekliğe sahip olması gereken nesneler (ör. kırsal alanlardaki iletişim kuleleri veya havai hatlar) için.
RELATIVE_TO_MESH
Bu, çıplak zemin, bina çatısı veya ağacın tepesi gibi neyin üzerinde uçtuğuna bakılmaksızın sabit bir yükseklikte uçan bir drone'a benzer. En yüksek görünür yüzeye (DSM) göre ayarlanır.
Kullanım şekli: Nesne yüksekliği, yer+bina+su yüzeyinin (DSM) en yüksek noktasına göre ifade edilir. Özelliğin yükseklik koordinatı, DSM yüksekliğinden sapma olarak yorumlanır.
Ne zaman kullanılır?: Fiziksel olarak mevcut olan her şeyin (DTM, binalar, su) üzerinde belirli bir yükseklikte durması gereken nesneler için kullanılır. Çatılardaki işaretçiler veya görünür sahneye göre dinamik olarak ayarlanan özellikler için faydalıdır.
Daha fazla bilgi için AltitudeMode sabitleri ile ilgili belgelere bakın.
Görsel örnekler ve pratik uygulamalar
Bu örneklerde, farklı AltitudeMode seçeneklerinin özellik yerleşimini nasıl etkilediğini göstermek için Stonehenge adlı belirli bir konum kullanılmaktadır. Bu örneklerde önce konumlandırma işaretçileri, ardından da birkaç farklı hususu olan çizgiler ve alanlar ele alınmaktadır.
Konum İşaretçileri
Şu şekilde yerleştirilmiş bir raptiye işaretçisi düşünün:
const markerLocation = { lat: 51.1789, lng: -1.8262, altitude: 102.23 };
Bunu aşağıdaki sahnede beyaz iğne olarak görebilirsiniz:

Şimdi de farklı yükseklik modları kullanılarak yerleştirilmiş çeşitli renklerdeki raptiyelerin gösterildiği aşağıdaki resme bakın.

Farklı AltitudeMode değerlerinin, işaretçinin yüksekliğe göre artan sırada konumunu nasıl etkilediğine bakalım.
CLAMP_TO_GROUND (Purple Pin)
Bu pin yükseklik değerini dikkate almaz ve kendini en yakın zemin yüksekliğine bağlar. Bu noktayı, beyaz raptiyenin hemen altında, araziye "sıkıştırılmış" şekilde görebilirsiniz.
Bu mod, teknik olarak gerçek rakımı göz ardı eder ve pimi en yakın DTM yüksekliğine sabitler.
ABSOLUTE (Beyaz Yaka İğnesi)
Bu iğne, işaretçiyi deniz seviyesinden (EGM96) 102,23 metre yükseğe yerleştirmek için tam rakım değerini kullanır.Bu işaretçi, sağlanan rakım bilgisine göre Stonehenge taşlarından birinin üzerinde görünür.
Teknik olarak, bu mod, pimi deniz seviyesinden belirtilen yüksekliğe yerleştirmek için gerçek verilen yükseklik değerini kullanır; bu örnekte bu, Stonehenge'in konumudur, ancak taşlardan birinin tepesidir.
RELATIVE_TO_GROUND (Orange Pin)
Bu iğne, taban olarak zemini (DTM) alır ve bu zemin seviyesinin 102,23 m üzerine yerleşir.Böylece, Stonehenge'deki taşın altında bulunan doğal zeminin üzerinde yüzüyormuş gibi görünür.
Bu mod, teknik olarak tabanını yerdeki gerçek DTM seviyesine ayarlar ve pimi bunun 102,23 metre üzerine yerleştirir.
RELATIVE_TO_MESH (Mavi Pin)
Bu iğne, taban olarak görünür yüzeyi (DSM) kullanır ve bu yüzeyin 102,23 m üzerinde yer alır. Bu mod, ölçümüne taşın yüksekliğini de dahil eder ve taşı turuncu raptiyeden biraz daha yüksekte hizalar.
Teknik olarak bu mod, taban olarak örgü (DSM) kullanır ve konumu bunun üzerinde belirli bir yükseklikte yerleştirir. DSM ayakta duran taşın tepesinde olduğundan, bu pim, göreceli yüksekliğini belirlerken bu ekstra yüksekliği ölçümüne dahil eder ve onu RELATIVE_TO_GROUND piminden biraz daha yükseğe hizalar.
Çizgileri ve Alanları Konumlandırma
Çizgiler ve alanlar için hem özelliğin içindeki noktaların yüksekliği (belirtilmiş olsun veya olmasın) hem de kullanılan AltitudeMode önemlidir. Stonehenge boyunca aşağıdaki yüksekliklerin belirtildiği bir çizgiyi inceleyelim:
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 }
];
Aşağıdaki resimde bu çizginin mutlak konumlandırma kullanılarak beyaz renkle temsil edildiğini görebilirsiniz.

Aşağıdaki görselde bir kez daha farklı yükseklik modları kullanılarak çizgilerin nasıl çizildiği gösterilmektedir. Şimdi bunları en düşükten en yükseğe doğru sırayla inceleyelim.

CLAMP_TO_GROUND (Purple Line)
Bu çizgi, her nokta için belirtilen yüksekliği yoksayar ve bunun yerine çizgiyi doğrudan alttaki arazi (DTM) üzerine "örtülür". Araziyi takip eder ve üzerindeki binalar veya taşlar gibi unsurları dikkate almaz.
Teknik olarak bu mod, gerçek yükseklik değerlerini yoksayar ve çizgiyi DTM'nin üzerine yerleştirir. Bu işlemde, alttaki arazi takip edilir ve üzerindeki özelliklerin ağı yoksayılır.
ABSOLUTE (Beyaz Çizgi)
Bu çizgide her nokta için tam yükseklik kullanıldığından çizgi, taşların bir kısmının üzerinden geçiyor. Her nokta arasında düz çizgilerle bağlanır. Noktalar yeterince sık değilse bazen nesnelerin içinden geçiyormuş gibi görünebilir.
Teknik olarak bu mod, her nokta için belirlenen yüksekliği takip eder ve bunları düz çizgilerle birbirine bağlar, yani yükseklik değerleri gerektiriyorsa ağın (örneğin: taşlar) içinden geçebilir. Bu senaryo, sonraki bir bölümde ele alınmıştır.
RELATIVE_TO_GROUND (Orange Line)
Bu çizgi, doğal zemini (DTM) taban olarak kullanır ve her noktayı bu zemin seviyesinin üzerinde belirtilen yüksekliğe yerleştirir.
Bu mod, teknik olarak DTM'yi temel alır ve çizgi konumlarını buna göre listelenen yükseklikte yerleştirir.
RELATIVE_TO_MESH (Mavi Çizgi)
Bu çizgi, temel olarak binalar ve taşlar dahil olmak üzere görünür yüzeyi kullanır. Ardından her noktayı bu ağın üzerinde belirtilen yüksekliğe yerleştirerek hattın şeklini görünür manzara ile ilişkili olarak etkili bir şekilde kopyalar.
Teknik olarak bu mod, taban olarak örgü (DSM) kullanır ve konumları bunun üzerinde belirtilen yüksekliğe yerleştirir. Çizgi, yerdeki farklı özellikler nedeniyle örgüye bağlı olarak değişebilir.
Çizgiler İçin Yükseklik Belirtilmediğinde
Şimdi aynı satır koordinatlarını yükseklik belirtmeden ele alalım:
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 }
];
Bu senaryoda, yükseklik bilgisi sağlanmadığında çizgiler genellikle benzer konumlarda görünür. Beyaz, turuncu ve mor çizgiler, benzer bir zemin seviyesi konumlandırmasına ayarlandıkları için tek bir çizgide (genellikle en son çizildiği için turuncu) birleşebilir. Bu durumu aşağıda görebilirsiniz:

Mavi çizgi (RELATIVE_TO_MESH) yine taban olarak ağı (DSM) kullanır. Yükseklik belirtilmediği için noktalar doğrudan ağın üzerine yerleştirilir. Bu aracın, çizgiyi ağın üzerine yerleştirmediğini, ancak ağ üzerindeki belirtilen noktaları düz bağlantılarla birleştirdiğini unutmayın. Bu durum bazı örneklerde kabul edilebilir görünse de diğer özelliklerle kaplandığında görünürlük sorunlarına neden olabilir. Bu sorun, bir sonraki bölümde ele alınmıştır.
Örgülerin ve çizgilerin etkileşimi. Şimdi başka bir çoklu çizgiye bakabiliriz. Bu görüntü aynı bölgede yer alıyor ancak daha fazla yer kapsamına (veya DTM'nin üstündeki DSM'de daha fazla ayrıntıya) sahip.
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 },
];
Temsilin daha önceki yöntemler (ve renkler) kullanılarak yapıldığını gördüğümüzde şu görünümü elde ederiz:

Mor renk, CLAMP_TO_GROUND'u (YERE_SABİTLE) gösterir. Bu renk, yer boyunca ilerlerken görülebilir. Beyaz, MUTLAK'tır. Uzayda mutlak olarak konumlandırılmış noktaları düz çizgilerin birleştirdiğini görebilirsiniz. Turuncu ve mavi, YÜZEY (DTM) veya AĞ (DSM) ile ilgili göreceli versiyonlar olduğundan, mavi çizginin aşağıdaki özelliklerin yüksekliği nedeniyle şekil olarak biraz farklı olduğunu unutmayın.
Çizgi oluşturmanın doğası gereği, noktalar düz çizgilerle birbirine bağlandığından çizginin ağdan geçtiğini tekrar belirtmek isteriz. Bu senaryo, çizgilerin görünmesiyle ilgili sorunlara neden olabilir. Bu nedenle, aşağıdaki resimde daha ayrıntılı olarak gösterildiği gibi, çizgilerin ağaçların arasından görünmesini sağlamak için drawsOccludedSegments özelliğini true olarak ayarlayabilirsiniz. Bu durumda, ağdan geçen çizgiler görünmeye devam eder.

Uzaydaki konumlandırmanın doğası gereği noktalar ağın içine düşebilir ve noktaları birbirine bağlayan çizgiler de ağın içine düşerek görsel yapaylıklara neden olabilir. Aşağıdaki bölümde, bu tür öğelerin mümkün olduğunda nasıl iyileştirilebileceğini görebiliriz.
Çizgiler ve arazi arasındaki etkileşimde sorunları çözme
Başka bir örnekte, aynı bölgede belirli yükseklik modlarını kullanırken dikkat etmemiz gereken başka yapay nesneler de görebiliriz.
Burada, ağda üzerinde sınırlı sayıda ek ayrıntı bulunan ve çoğunlukla DTM düzeyinde olan nispeten düz bir alan görüyoruz. Bu senaryo, arazi modelinin üzerinde 3D kapsamı olmayan bir alanda da geçerli olur. Aşağıda belirtildiği gibi şu konuma göz atalım:
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 },
];
Resimde görüldüğü gibi, çizgiler öncekiyle aynı renk gösterimine sahiptir: (beyaz : ABSOLUTE, mavi : RELATIVE_TO_MESH, mor : CLAMP_TO_GROUND, turuncu: RELATIVE_TO_GROUND).

Burada bir dizi eser görüyoruz. Bunlardan ilki, yüzey kaplamasının olmaması nedeniyle turuncu (RELATIVE_TO_GROUND) ve mavi (RELATIVE_TO_MESH) çizgilerin (çoğunlukla) aynı konumda olmasıdır (mavi çizgi en son çizildiği için gösterilir).
Ayrıca, mor (CLAMP_TO_GROUND) çizginin zemini takip ettiğini ve tepede görülebildiğini, beyaz (ABSOLUTE) çizginin ise yalnızca noktalar bağlandığı ve düz çizgiler zeminden geçtiği için tepenin içinde kayboluyormuş gibi göründüğünü de görebiliriz.
Bu durumu, özellikle mor çizgi gizlendiğinde bu resimde görebilirsiniz.

Bu nedenle, noktalar arasındaki çizgi düz bir yolu takip ettiğinden çizginin yerin altında (hatta ağın içinden) kaybolduğu görülebilir ve bu durum bazı tuhaf görsel öğelere yol açabilir. Enterpolasyon yöntemi kullanarak çizgiler arasına daha fazla nokta ekleyerek bu tür bir çizginin görsel gösterimini iyileştirebilirsiniz. Bunun görseli nasıl etkileyeceği, kullanılan yönteme bağlıdır:
- Göreceli ölçümler için (RELATIVE_TO_GROUND veya RELATIVE_TO_MESH): Göreceli yükseklik değerleri kullanırken bir çizgi veya çokgen boyunca daha fazla nokta oluşturmak, özelliğin yükseklik profiline daha iyi uyacak şekilde daha uygun bir seviyede yerleştirilmesini sağlar. Bu ara noktalar verilerinizde yoksa bunları eklemek için Google Haritalar Platformu Geometri kitaplığındaki Interpolate işlevi gibi bir enterpolasyon işlevi kullanabilirsiniz. Bu yeni noktalara, ilgili yükseklik profilinin üzerine yerleştirilecek göreceli değerler verilebilir. Ardından, noktaları birleştiren herhangi bir çizginin uzunluğu sınırlandırılır ve görsel gösterim iyileştirilir.
- Mutlak Özellikler (ABSOLUTE) İçin: MUTLAK özellikler için daha fazla noktanın gerçek yükseklik değerlerine sahip olması gerekir. Mevcut mutlak değerler arasında enterpolasyon yapmak, yalnızca A noktası ile B noktası arasındaki ortalama olacağından, ağın üzerindeki herhangi bir değeri doğru şekilde yansıtan bir nokta vermez.
Özet
Umarız bu belge, ABSOLUTE, CLAMP_TO_GROUND, RELATIVE_TO_GROUND ve RELATIVE_TO_MESH'in işaretçiler, çizgiler ve poligonlar gibi çeşitli özelliklerin yerleştirilmesini ve oluşturulmasını nasıl etkilediğini ayrıntılı olarak açıklayarak Fotogerçekçi 3D Haritalar'daki AltitudeMode seçenekleri hakkında kapsamlı bir genel bakış sunmuştur.
Bu modların, temel Dijital Arazi Modeli (DTM) ve Dijital Yüzey Modeli (DSM) ile birlikte nasıl çalıştığını anlamak, minimum görsel yapaylıkla doğru ve görsel olarak ilgi çekici 3D harita temsilleri oluşturmak için çok önemlidir.
3D haritalamanın tüm potansiyelini ortaya çıkarmak, kullanıcılarınız için ilgi çekici ve sürükleyici deneyimler oluşturmak amacıyla kendi projelerinizde bu yükseklik modlarını deneyeceğinizi ve geri bildirimde bulunacağınızı umuyoruz.
Katkıda bulunanlar
Matt Toon | Çözüm Mühendisi, Coğrafi Geliştirici