3D Haritalar'daki yükseklik modları ve özellikleri

3D haritadaki özellikler (ör. çizgiler, poligonlar, modeller veya işaretçiler) için rakım belirttiğinizde, hem sahne içindeki yerleşimlerini hem de sahnenin oluşturulma şeklinin bu özellikle nasıl etkileşime girdiğini 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'i çeşitli özellik türleriyle nasıl kullanabileceğiniz aşağıda açıklanmıştır:

Altitude, 3D ortamlarda nasıl kullanılır?

3D sahneye yerleştirilen noktaların nihai konumu, yakalanan 3D binaların veya ağaç gibi nesnelerin varlığından etkilenir. İki temel kavramı anlamak çok önemlidir:

  • Dijital Arazi Modeli (DTM): "Çıplak toprak" rakımını temsil eder. Bunu, üzerinde bina, ağaç veya başka yapılar 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 temsil eder. Özelliklerin yakalandığı alanlarda (özellikle binaların görünümde baskın olduğu kentsel ortamlarda) görünür yüzey, taban araziden daha yüksek görünür.

DTM ve DSM arasındaki ayrım, farklı yükseklik modlarının bu Dijital Yükseklik Modelleri (DEM'ler) ile nasıl etkileşim kurduğunu anlamak açısından çok önemlidir. Çünkü özelliklerin yerleşimi, yüzey modeli tarafından gizlenebilir veya etkilenebilir. Aşağıdaki diyagramda farkları görebilirsiniz:

Dijital Arazi Modeli (DTM) ile Dijital Yüzey Modeli (DSM) arasındaki farkı gösteren 3D harita.

Özelliklerde rakım verileri eksik olduğunda

Yükseklik ölçümü olmayan verileriniz varsa veya Rotalar ya da Yerler hizmetleri gibi başka bir Google hizmetinden veri kullanıyorsanız döndürülen geometride genellikle yükseklik bilgisi sağlanmaz. Bu gibi durumlarda, özelliği sahneye yerleştirirken AltitudeMode dikkatli bir şekilde seçmeniz gerekir:

  • Yere sabitleme: Özelliğin otomatik olarak araziye uyum sağlayacağı en basit yaklaşımdır. Bu modda DTM modeli kullanılır.
  • Rastgele bir yükseklik + göreceli mod verin: Seçtiğiniz bir yüksekliği atayabilir ve ardından RELATIVE_TO_GROUND (özellikleri DTM modeline göre yerleştirir) veya RELATIVE_TO_MESH (özellikleri DSM modelinin üzerinde kaydırır) modunu kullanabilirsiniz.
  • Rakımı öğrenmek için başka bir hizmet kullanın: Özelliğin konumunda tam DTM rakımı için Google Haritalar Platformu Elevation API gibi bir hizmet kullanabilirsiniz. Çizgi veya poligon ise bunu çizgiyi veya poligonu oluşturan her nokta için yapmanız gerekir.

AltitudeMode seçenekleri ne anlama gelir ve ne zaman kullanılır?

Bir özellik tanımlarken belirtebileceğiniz dört AltitudeMode seçeneği vardır:

MUTLAK

Deniz seviyesinden belirli bir yükseklikte, örneğin 10.000 fit yükseklikte uçan bir uçak düşünün. Bir dağın veya vadinin üzerinden uçarken yüksekliği sabittir.

Kullanım şekli: Nesne yüksekliği, ortalama deniz seviyesine göre ifade edilir (EGM96 kullanılarak hesaplanır). Özelliğin rakım koordinatı, ortalama deniz seviyesinin üzerindeki kesin yükseklik olarak yorumlanır.

Kullanım zamanı: Uçuş rotaları, tam derinliği bilinen batık nesneler veya sabit noktalı bilimsel araçlar gibi bilinen ve kesin rakımlara sahip özellikler için.

CLAMP_TO_GROUND

Bir yamaca piknik örtüsü serdiğinizi 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 şekli: Nesne yüksekliği, doğrudan zemine yerleştirilmiş olarak 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 uyması gereken özellikler için.

RELATIVE_TO_GROUND

Altındaki doğal zemin yüksekliğinin (DTM) 100 metre üzerinde kalan bir sıcak hava balonu düşünün. Zemin yükselirse balon da onunla birlikte yükselir ve "çıplak toprak" ile arasındaki 100 metrelik mesafeyi korur.

Kullanım şekli: Nesne yüksekliği, zemin yüzeyine (DTM) göre ifade edilir. Özelliğin rakım koordinatı, yatay konumundaki arazi rakımından bir ofset olarak yorumlanır.

Kullanım alanları: Doğal arazinin üzerinde tutarlı bir yüksekliğin korunması gereken nesneler (ör. kırsal alanlardaki iletişim kuleleri veya havai hatlar) için kullanılır.

RELATIVE_TO_MESH

Bu, çıplak zemin, bina çatısı veya ağaç tepesi gibi üzerinden uçtuğu her şeyin üzerinde 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; zemin, bina ve su yüzeyinden (DSM) en yüksek olanına göre ifade edilir. Özelliğin rakım koordinatı, DSM yüksekliğinden bir ofset 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 kullanışlıdır.

Daha fazla bilgi için AltitudeMode sabitleri ile ilgili belgelere bakın.

Görsel örnekler ve pratik uygulamalar

Bu örneklerde, farklı seçeneklerin özellik yerleşimini nasıl etkilediğini göstermek için belirli bir konum (Stonehenge) kullanılmıştır. AltitudeMode Bu örneklerde önce işaretçilerin konumlandırılması, ardından birkaç farklı hususun dikkate alınması gereken çizgiler ve alanlar ele alınmaktadır.

Konum İşaretçileri

Aşağıdaki gibi yerleştirilmiş bir raptiye işaretçisi düşünün:

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

Aşağıdaki sahnede beyaz raptiye olarak görebilirsiniz:

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

Şimdi aşağıdaki resme bakın. Bu resimde, farklı yükseklik modları kullanılarak yerleştirilmiş çeşitli renklerde raptiyeler gösterilmektedir.

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

Farklı AltitudeMode değerlerinin, işaretçinin konumunu yükseltme sırasına göre nasıl etkilediğine bakalım.

CLAMP_TO_GROUND (Mor Raptiye)

Bu raptiye, rakım değerini yok sayar ve kendisini en yakın zemin yüksekliğine ekler. Beyaz raptiyenin hemen altında, araziye "sabitlenmiş" şekilde görebilirsiniz.

Teknik olarak bu mod, gerçek rakımı yok sayar ve raptiyeyi en yakın DTM yüksekliğine sabitler.

MUTLAK (Beyaz Raptiye)

Bu raptiye, işaretçiyi deniz seviyesinden (EGM96) bu yüksekliğe yerleştirmek için tam rakım değerini (102,23 m) kullanır ve sağlanan rakımına göre Stonehenge taşlarından birinin üzerinde görünür.

Teknik olarak bu mod, raptiyeyi deniz seviyesinden belirtilen yüksekliğe yerleştirmek için sağlanan gerçek rakım değerini kullanır. Bu örnekte, Stonehenge'in konumu ancak taşlardan birinin üst kısmıdır.

RELATIVE_TO_GROUND (Turuncu Raptiye)

Bu raptiye, zemini (DTM) taban olarak alır ve kendisini bu zemin seviyesinin 102,23 m yukarısına yerleştirir.Böylece, henge'deki taşın altındaki doğal zeminin üzerinde süzülüyormuş gibi görünür.

Teknik olarak bu mod, tabanını yerdeki gerçek DTM seviyesine ayarlar ve ardından raptiyeyi bunun 102,23 m yukarısına yerleştirir.

RELATIVE_TO_MESH (Mavi Raptiye)

Bu raptiye, görünür yüzeyi (DSM) taban olarak kullanır ve kendisini bu yüzeyin 102,23 m üzerine yerleştirir. Bu mod, taşın yüksekliğini ölçümüne dahil ederek turuncu raptiyeden biraz daha yüksek bir konuma hizalar.

Teknik olarak bu mod, taban olarak mesh'i (DSM) kullanır ve konumu, verilen rakımın üzerine yerleştirir. DSM, dikili taşın üst kısmında olduğundan bu raptiye, göreceli yüksekliğini belirlerken bu ekstra yüksekliği ölçümüne dahil eder ve RELATIVE_TO_GROUND raptiyesinden biraz daha yüksekte hizalar.

Konum Çizgileri ve Alanları

Çizgiler ve alanlar için hem özellikteki noktaların rakımı (belirtilmiş olsun veya olmasın) hem de kullanılan AltitudeMode çok önemlidir. Stonehenge boyunca aşağıdaki yüksekliklere sahip 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 çizginin aşağıdaki resimde mutlak konumlandırma kullanılarak beyaz renkle gösterildiğini görebilirsiniz.

Mutlak konumlandırma kullanılarak Stonehenge'in etrafına yerleştirilmiş beyaz bir çizginin gösterildiği 3D harita.

Aşağıdaki resimde, farklı yükseklik modları kullanan çizgiler gösterilmektedir. Şimdi her birini en düşükten en yükseğe doğru sırayla inceleyelim.

Farklı yükseklik modları kullanılarak Stonehenge'in etrafına yerleştirilmiş birden fazla renkli çizgiyi (mor, beyaz, turuncu, mavi) gösteren 3D harita.

CLAMP_TO_GROUND (Mor Çizgi)

Bu çizgi, her nokta için belirtilen rakımı yoksayar ve bunun yerine çizgiyi doğrudan alttaki zeminin (DTM) üzerine "örter". Araziyi takip eder ve üzerindeki bina veya taş gibi özelliklerin varlığını yok sayar.

Teknik olarak bu mod, gerçek rakım değerlerini yoksayar ve çizgiyi DTM'nin üzerine yerleştirir. Bu sırada, alttaki araziyi takip eder ve üzerindeki özelliklerin ağını yoksayar.

MUTLAK (Beyaz Çizgi)

Bu çizgi, her nokta için tam rakımı kullandığından bazı taşların üzerinden geçer. Noktalar 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 rakımı takip eder ve noktaları düz çizgilerle birleştirir. Bu, rakım değerleri gerektiriyorsa ağdan (örneğin, taşlar) geçebileceği anlamına gelir. Bu senaryoya ilerleyen bölümlerde değineceğiz.

RELATIVE_TO_GROUND (Turuncu Çizgi)

Bu çizgi, taban olarak doğal zemini (DTM) kullanır ve her noktayı bu zemin seviyesinin üzerinde belirtilen rakıma yerleştirir.

Teknik olarak bu mod, DTM'yi temel alır ve çizgi konumlarını, DTM'ye göre listelenen rakıma yerleştirir.

RELATIVE_TO_MESH (Mavi Çizgi)

Bu çizgi, binalar ve taşlar dahil olmak üzere görünür yüzeyi temel alır. Ardından, her noktayı bu ağın üzerinde belirtilen yüksekliğe yerleştirerek çizginin şeklini görünür manzaraya göre etkili bir şekilde kopyalar.

Teknik olarak bu mod, taban olarak ağı (DSM) kullanır ve konumları bunun üzerinde belirtilen rakıma yerleştirir. Ağa bağlı olarak çizgi, zemindeki farklı özelliklere göre değişebilir.

Çizgiler için yükseklik belirtilmediğinde

Şimdi, aynı çizgi koordinatlarını ele alalım ancak herhangi bir rakım belirtilmemiş olsun:

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

Rakım bilgisi sağlanmayan bu senaryoda, çizgiler genellikle benzer konumlarda görünür. Beyaz, turuncu ve mor çizgiler, varsayılan olarak benzer bir zemin seviyesi konumlandırmasına sahip oldukları için tek bir çizgi (genellikle en son çizildiği için turuncu) halinde birleşebilir. Bunu aşağıda görebilirsiniz:

Stonehenge'in etrafında birden fazla renkli çizginin (turuncu, mavi) gösterildiği 3D harita. Yükseklik verisi eksik olduğu için beyaz ve mor çizgiler birleşiyor.

Mavi çizgi (RELATIVE_TO_MESH) yine taban olarak mesh'i (DSM) kullanır. Yükseklik belirtilmediğinden, noktaları doğrudan ağın üzerine yerleştirir. Çizgiyi ağın üzerine yerleştirmediğini, ağdaki belirtilen noktaları düz bağlantılarla birleştirdiğini unutmayın. Bu, bazı örneklerde kabul edilebilir görünse de diğer özellikler tarafından kapsandığında görünürlük sorunlarına neden olabilir. Bu sorun bir sonraki bölümde ele alınmaktadır.

Ağların ve çizgilerin etkileşimi. Şimdi başka bir çoklu çizgiye bakabiliriz. Bu görüntü aynı bölgede ancak daha fazla zemin kapsamına sahip (veya DTM'nin üstündeki DSM hakkında daha fazla ayrıntı içeriyor).

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

Önceki yöntemleri (ve renkleri) kullanarak gösterimi incelediğimizde şu görünümü elde ederiz:

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

Mor renk, CLAMP_TO_GROUND'dur. Bu çizginin zemin boyunca ilerlediğini görebilirsiniz. Beyaz, MUTLAK'tır. Düz çizgilerin, uzayda mutlak olarak konumlandırılmış noktaları birleştirdiğini görebilirsiniz. Turuncu ve mavi, YÜZEY (DTM) veya ÖRGÜ (DSM) ile ilgili göreceli versiyonlardır. Mavi çizginin, aşağıdaki özelliklerin yüksekliği nedeniyle şekil olarak biraz farklı olduğuna dikkat edin.

Çizgi oluşturma işleminin doğası gereği, noktalar düz çizgilerle birbirine bağlandığı için çizginin ağın içinden geçtiğini görebiliriz. Bu senaryo, çizgilerin görünmesinde sorunlara neden olabilir. Bu nedenle, aşağıdaki resimde daha ayrıntılı olarak gösterildiği gibi, çizginin ağaçların arasından görülebilmesi için drawsOccludedSegments değerini true olarak ayarlayabilirsiniz. Bu resimde, ağdan geçen çizgiler hâlâ görülebilir.

Ağaçların arasından geçen çizgilerin gösterildiği 3D harita. "segments: true" değerinin engellenmesini göstermek için engellenen segmentler görünür hale getirilmiştir.

Uzayda konumlandırmanın doğası gereği, noktalar ve noktaları birleştiren çizgiler ağın içine düşebilir. Bu durum, görsel kusurlara neden olabilir. Aşağıdaki bölümde, bu tür yapıların mümkün olduğunda nasıl iyileştirilebileceğini görebiliriz.

Çizgiler ve arazi arasındaki etkileşimle ilgili sorunları çözme

Başka bir örnekte, aynı bölgede, belirli yükseklik modlarını kullanırken dikkat etmemiz gereken başka yapaylıklar görebiliriz.

Burada, çoğunlukla DTM seviyesinde olan ve üzerinde sınırlı sayıda ekstra ayrıntı bulunan nispeten düz bir alan var. Bu senaryo, arazi modelinin üzerinde 3D kapsamı olmayan bir bölgede de geçerli olur. Aşağıda belirtilen 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 },
];

Ayrıca, çizgiler daha önce olduğu gibi aynı renk gösterimine sahip olacak şekilde resimde görülebilir: (beyaz : ABSOLUTE, mavi : RELATIVE_TO_MESH, mor : CLAMP_TO_GROUND, turuncu: RELATIVE_TO_GROUND).

Nispeten düz bir arazide çeşitli renkli çizgiler (beyaz, mavi, mor, turuncu) gösteren ve çizgilerin zeminde kaybolduğu görsel kusurları vurgulayan 3D harita.

Burada bir dizi yapay öğe görebiliriz. Bunlardan ilki, yüzey kaplaması 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 şekilde 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 tepede kaybolduğunu görebiliriz.

Mor çizgi gizlendiğinde bunu bu resimde özellikle görebilirsiniz.

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

Bu nedenle, noktalar arasındaki çizgi düz bir yol izlediğinden çizginin yerin altında (hatta ağın içinden) kaybolduğu görülebilir ve bu da bazı garip görsel kusurlara yol açabilir. Bu tür bir çizginin görsel görünümünü, enterpolasyon yöntemi kullanarak çizgiler arasına daha fazla nokta ekleyerek iyileştirebilirsiniz. Bunun görseli nasıl etkileyeceği, yine kullanılan yönteme bağlı olacaktır:

  • Göreceli Ölçümler İçin (RELATIVE_TO_GROUND veya RELATIVE_TO_MESH): Göreceli yükseklik değerleri kullanırken bir çizgi veya poligon boyunca daha fazla nokta oluşturmak, özelliğin daha uygun bir seviyeye yerleştirilmesini sağlayarak yükseklik profiline daha iyi uyum sağlar. Verilerinizde bu ara noktalar yoksa bunları eklemek için Google Maps Platform Geometri kitaplığındaki Interpolate işlevi gibi bir interpolasyon işlevi kullanabilirsiniz. Bu yeni noktalara, ilgili yükseklik profilinin üzerine yerleştirilecek göreceli değerler verilebilir. Ardından, noktaları birleştiren tüm çizgilerin uzunluğu sınırlandırılır ve görsel temsil iyileştirilir.
  • Mutlak özellikler (ABSOLUTE) için: ABSOLUTE özelliklerde daha fazla noktanın gerçek rakım değerlerine sahip olması gerekir. Mevcut mutlak değerler arasında enterpolasyon yapmak, ağın üzerindeki herhangi bir değeri doğru şekilde yansıtan bir nokta vermez. Bu, yalnızca A ve B noktaları arasındaki ortalama değer olur.

Özet

Bu belgede, Fotoğraf Gerçekliğinde 3D Haritalar'daki AltitudeMode seçeneklerine dair kapsamlı bir genel bakış sunulmuştur. ABSOLUTE, CLAMP_TO_GROUND, RELATIVE_TO_GROUND ve RELATIVE_TO_MESH seçeneklerinin işaretçiler, çizgiler ve poligonlar gibi çeşitli özelliklerin yerleşimini ve oluşturulmasını nasıl etkilediği ayrıntılı olarak açıklanmıştır.

Bu modların, temel Dijital Arazi Modeli (DTM) ve Dijital Yüzey Modeli (DSM) ile nasıl çalıştığını anlamak, minimum görsel kusurla 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 ve geri bildirim sağlamak amacıyla kendi projelerinizde bu yükseklik modlarını denemenizi umuyoruz.

Katkıda bulunanlar

Matt Toon | Çözüm Mühendisi, Coğrafi Geliştirici