3D Haritalar'daki Yükseklik Modlarını ve Özelliklerini Anlama

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 nasıl etkileşimde bulunduğu konusunda 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:

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 gösterir. 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:

Dijital arazi modeli (DTM) ile dijital yüzey modeli (DSM) arasındaki farkı gösteren bir 3D harita.

Ö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 bulunduğu konumda hassas DTM yüksekliği elde etmek 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, örneğin 10.000 feet'te 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 hassas yüksekliklere sahip özellikler için.

CLAMP_TO_GROUND

Doğrudan bir yamaç üzerine piknik örtüsü sermeyi düşünün. Tepe 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 gibidir. En yüksek görünür yüzeye (DSM) göre ayarlanır.

Nasıl kullanılır?: 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 dinamik olarak uyum sağlayan ö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 belirli bir konum (Stonehenge) kullanılmaktadır. Bu örneklerde önce konumlandırma işaretçileri, ardından da birkaç farklı hususu dikkate almanız gereken çizgiler ve alanlar ele alınmaktadır.

Konum İşaretçileri

Şu şekilde yerleştirilmiş bir raptiye işaretçisini ele alalım:

const markerLocation = { lat: 51.1789, lng: -1.8262, altitude: 102.23 };

Bunu aşağıdaki sahnede beyaz iğne olarak görebilirsiniz:

İşaretçinin varsayılan yerleşimini gösteren beyaz raptiye işaretli bir 3D harita sahnesi.

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

Farklı yükseklik modları kullanılarak yerleştirilmiş birden fazla raptiyenin (beyaz, mor, turuncu, mavi) gösterildiği 3D harita sahnesi. Tüm raptiyeler Stonehenge'in etrafında ortalanmıştır.

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 iğne, yükseklik değerini göz ardı eder ve en yakın yer seviyesine tutunur. Bu pimi, beyaz iğnenin hemen altında görebilirsiniz. Bu pim, araziye "sıkıştırılmış" durumdadır.

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 seviyesinin (EGM96) 102,23 metre üzerinde bir yüksekliğ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.

Bu mod, teknik olarak pimi deniz seviyesinden belirtilen yüksekliğe yerleştirmek için sağlanan gerçek yükseklik değerini kullanır. Bu örnekte, Stonehenge'in konumu ancak taşlardan birinin tepesi kullanılır.

RELATIVE_TO_GROUND (Turuncu Pin)

Bu iğne, taban olarak zemini (DTM) alır ve bu zemin seviyesinin 102,23 metre ü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 üzerine yerleştirilir. Bu mod, ölçümüne taşın yüksekliğini de dahil ederek taşı turuncu iğneden biraz daha yüksekte gösterir.

Bu mod, teknik olarak taban olarak ağı (DSM) kullanır ve konumu bunun üzerinde belirli bir yükseklikte yerleştirir. DSM, ayakta duran taşın en üstünde olduğundan bu iğne, göreceli yüksekliğini belirlerken bu ek yüksekliği ölçümüne dahil eder ve RELATIVE_TO_GROUND iğnesinden biraz daha yüksekte olacak şekilde hizalar.

Konum çizgileri ve alanları

Ç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 }
];

Bu satırın, aşağıdaki resimde mutlak konumlandırma kullanılarak beyaz renkte gösterildiğini görebilirsiniz.

Mutlak konumlandırma kullanılarak Stonehenge'in etrafına yerleştirilmiş beyaz bir çizgiyi gösteren 3D harita.

Aşağıdaki resimde, farklı yükseklik modları kullanılarak oluşturulan çizgiler gösterilmektedir. Şimdi bunları en düşükten en yükseğe doğru sırayla inceleyelim.

Farklı yükseklik modları kullanılarak Stonehenge çevresinde konumlandırılmış birden fazla renkli çizginin (mor, beyaz, turuncu, mavi) gösterildiği bir 3D harita.

CLAMP_TO_GROUND (Mor Çizgi)

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.

Bu mod, teknik olarak gerçek yükseklik değerlerini göz ardı eder ve çizgiyi, alttaki araziyi takip ederek ve üzerindeki özelliklerin ağını göz ardı ederek DTM'nin üzerine yerleştirir.

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 belirtilen yüksekliği takip eder ve bunları düz çizgilerle birleştirir. Bu nedenle, yükseklik değerleri gerektiriyorsa ağdan (örneğin, taşlar) geçebilir. Bu senaryo, sonraki bir bölümde ele alınmıştır.

RELATIVE_TO_GROUND (Turuncu Çizgi)

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 olarak kullanır ve çizgi konumlarını buna göre listelenen yükseklikte yerleştirir.

RELATIVE_TO_MESH (Mavi Çizgi)

Bu çizgi, binalar ve taşlar dahil olmak üzere görünür yüzeyi taban olarak 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 verilmediği için ç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:

Stonehenge çevresinde birden fazla renkli çizginin (turuncu, mavi) gösterildiği 3 boyutlu bir harita. Yükseklik verisi olmadığı için beyaz ve mor çizgiler birleşiyor.

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, 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ınmaktadı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 },
];

Aynı yöntemler (ve renkler) kullanılarak oluşturulan gösterimi gördüğümüzde şu görünümü elde ederiz:

Ağaçların ve farklı yüksekliklerin bulunduğu bir arazi üzerinde birden fazla renkli çizginin (mor, beyaz, turuncu, mavi) gösterildiği 3D harita.

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 alttaki ö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 belirtebiliriz. 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 drawsOccludedSegmentstrue olarak ayarlayabilirsiniz. Bu durumda, ağdan geçen çizgiler görünmeye devam eder.

Ağaçların arasından geçen çizgileri gösteren 3D harita. Segmentlerin tıkanmasını göstermek için tıkanan segmentler görünür hale getirilmiştir: doğru.

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 daha önce olduğu gibi aynı renk gösterimine sahiptir: (beyaz : ABSOLUTE, mavi : RELATIVE_TO_MESH, mor : CLAMP_TO_GROUND, turuncu: RELATIVE_TO_GROUND).

Nispeten düz bir arazide çeşitli renklerde çizgiler (beyaz, mavi, mor, turuncu) gösteren bir 3D harita. Çizgilerin yerin altına girdiği yerlerde görsel yapaylıklar vurgulanıyor.

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.

Mutlak ve ağa göre çizgilerin görsel yapaylıklarını gösteren, mor çizginin gizlendiği, beyaz ve mavi çizgilerin bir tepede kaybolduğu 3D harita.

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ı garip görsel öğelere yol açabilir. Bir 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:

  • Bağıl ölçümler için (RELATIVE_TO_GROUND veya RELATIVE_TO_MESH): Bağıl yükseklik değerleri kullanılı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 Platform 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, Geo Geliştirici