3D 지도의 고도 모드 및 기능

3D 지도에서 선, 다각형, 모델, 마커와 같은 지형지물의 고도를 지정할 때 장면 내에서 지형지물의 배치와 장면의 렌더링이 지형지물과 상호작용하는 방식에 영향을 미칠 수 있는 몇 가지 요소가 있습니다. 이 문서에서는 3D 지도에서 'AltitudeMode'를 사용하는 방법과 지형지물의 고도를 관리하는 방법을 설명합니다.

여러 특성 유형에서 AltitudeMode를 사용하는 방법은 다음과 같습니다.

3D 환경에서 고도가 사용되는 방식

3D 장면에 포인트를 배치할 때 최종 위치는 캡처된 3D 빌딩이나 나무와 같은 객체의 존재에 영향을 받습니다. 두 가지 핵심 개념을 이해하는 것이 중요합니다.

  • 디지털 지형 모델 (DTM): '지표면' 고도를 나타냅니다. 건물, 나무 또는 기타 구조물이 없는 땅의 자연스러운 형태라고 생각하면 됩니다. 모든 영역은 지구의 고도 (EGM96을 사용하여 계산됨)의 기반이 되는 DTM에 의해 뒷받침됩니다.
  • 디지털 표면 모델 (DSM): 건물, 나무, 기타 구조물을 포함한 '상단 표면' 고도를 나타냅니다. 지형지물이 캡처된 지역 (특히 건물이 시야를 지배하는 도시 환경)에서는 보이는 표면이 기본 지형보다 높게 표시됩니다.

DTM과 DSM의 차이는 다양한 고도 모드가 이러한 디지털 고도 모델 (DEM)과 상호작용하는 방식을 이해하는 데 중요합니다. 지형지물의 배치가 표면 모델에 의해 가려지거나 영향을 받을 수 있기 때문입니다. 아래 다이어그램에서 차이점을 확인할 수 있습니다.

디지털 지형 모델 (DTM)과 디지털 표면 모델 (DSM)의 차이를 보여주는 3D 지도입니다.

특성에 고도 데이터가 없는 경우

고도 측정값이 없는 데이터가 있거나 Routes 또는 Places 서비스와 같은 다른 Google 서비스의 데이터를 사용하는 경우 반환된 도형에 고도가 제공되지 않는 경우가 많습니다. 이러한 경우 장면에 지형지물을 배치하려면 AltitudeMode를 신중하게 선택해야 합니다.

  • 지면에 고정: 지형지물이 지형에 자동으로 맞춰지는 가장 간단한 방법입니다. 이 모드는 DTM 모델을 사용합니다.
  • 임의 고도 + 상대 모드 지정: 선택한 고도를 할당한 다음 RELATIVE_TO_GROUND (DTM 모델을 기준으로 지형지물을 배치함) 또는 RELATIVE_TO_MESH (DSM 모델 위에 지형지물을 배치함)를 사용할 수 있습니다.
  • 다른 서비스를 사용하여 고도 가져오기: 지형지물 위치의 정확한 DTM 고도를 확인하려면 Google Maps Platform Elevation API와 같은 서비스를 사용하면 됩니다. 선 또는 다각형인 경우 선 또는 다각형을 구성하는 각 지점에 대해 이 작업을 수행해야 합니다.

AltitudeMode 옵션의 의미와 사용 시기

특성을 정의할 때 지정할 수 있는 AltitudeMode 옵션은 네 가지입니다.

ABSOLUTE

해발 10,000피트와 같은 특정 고도에서 비행하는 비행기를 상상해 보세요. 산 위를 날든 계곡 위를 날든 높이는 고정되어 있습니다.

사용 방법: 객체 고도는 평균 해수면 (EGM96을 사용하여 계산)을 기준으로 표현됩니다. 지형지물의 고도 좌표는 평균 해수면 위의 정확한 고도로 해석됩니다.

사용 시기: 비행 경로, 정확한 깊이의 수중 물체, 고정점 과학 기기와 같이 고도가 정확하게 알려진 지형지물에 사용합니다.

CLAMP_TO_GROUND

언덕에 피크닉 담요를 바로 펼친다고 생각해 보세요. 언덕의 경사도와 관계없이 담요는 항상 보이는 표면에 평평하게 놓입니다.

사용 방법: 객체 고도는 지면에 직접 배치된 것으로 표현됩니다. 제공된 고도 값과 관계없이 지형을 따라 지상에 유지됩니다. 지형지물의 고도 좌표는 무시되며 지형 표면 (DTM)에 직접 투영됩니다.

사용 시기: 도로, 울타리, 산책로, 부지 경계, 건물 기초와 같이 항상 지형에 맞춰야 하는 지형지물에 사용합니다.

RELATIVE_TO_GROUND

자연 지반 고도 (DTM)가 무엇이든 그 위로 100m를 유지하는 열기구를 상상해 보세요. 지면이 올라가면 풍선도 함께 올라가 '지면'에서 100m 간격을 유지합니다.

사용 방법: 객체 고도는 지표면(DTM)을 기준으로 표현됩니다. 지형지물의 고도 좌표는 수평 위치의 지형 고도에서 오프셋으로 해석됩니다.

사용 시기: 농촌 지역의 통신 타워나 가공선과 같이 자연 지형 위에서 일정한 높이를 유지해야 하는 객체에 사용합니다.

RELATIVE_TO_MESH

이는 맨땅, 건물 지붕, 나무 꼭대기 등 비행하는 대상 위로 고정된 높이에서 비행하는 드론과 같습니다. 가장 높은 가시 표면 (DSM)에 맞게 조정됩니다.

사용 방법: 객체 고도는 지면+건물+해수면 (DSM) 중 가장 높은 지점을 기준으로 표현됩니다. 지형지물의 고도 좌표는 DSM 고도의 오프셋으로 해석됩니다.

사용 시기: 물리적으로 존재하는 대상 (DTM, 건물, 물) 위에 특정 높이로 떠 있어야 하는 객체의 경우 지붕의 마커나 보이는 장면에 동적으로 조정되는 지형지물에 유용합니다.

자세한 내용은 AltitudeMode 상수 문서를 참고하세요.

시각적 예시 및 실제 적용 사례

이 예에서는 특정 위치인 스톤헨지를 사용하여 다양한 AltitudeMode 옵션이 지형지물 배치에 미치는 영향을 보여줍니다. 이 예에서는 먼저 마커를 배치하는 방법을 다룬 다음, 몇 가지 다른 고려사항이 있는 선과 영역을 다룹니다.

위치 마커

다음과 같이 배치된 핀 마커를 생각해 보세요.

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

아래 장면에서 흰색 핀으로 표시됩니다.

마커의 기본 배치를 보여주는 흰색 핀 마커가 있는 3D 지도 장면

이제 아래 이미지를 살펴보세요. 다양한 고도 모드를 사용하여 배치된 다양한 색상의 핀이 표시됩니다.

스톤헨지를 중심으로 다양한 고도 모드를 사용하여 배치된 여러 핀 (흰색, 보라색, 주황색, 파란색)을 보여주는 3D 지도 장면입니다.

고도가 높아지는 순서대로 다양한 AltitudeMode가 마커의 위치에 어떤 영향을 미치는지 살펴보겠습니다.

CLAMP_TO_GROUND (보라색 핀)

이 핀은 고도 값을 무시하고 가장 가까운 지면 고도에 연결됩니다. 흰색 핀 바로 아래에 표시되어 지형에 효과적으로 '고정'됩니다.

기술적으로 이 모드는 실제 고도를 무시하고 핀을 가장 가까운 DTM 높이에 고정합니다.

ABSOLUTE (흰색 핀)

이 핀은 정확한 고도 값 (102.23m)을 사용하여 해발 고도 (EGM96)에 마커를 배치하며, 제공된 고도에 따라 스톤헨지 돌 중 하나 위에 표시됩니다.

기술적으로 이 모드는 실제 제공된 고도 값을 사용하여 해발 지정된 높이에 핀을 배치합니다. 이 예시에서는 스톤헨지의 위치이지만 돌 중 하나의 상단에 있습니다.

RELATIVE_TO_GROUND (주황색 핀)

이 핀은 지면 (DTM)을 기준으로 삼아 지면에서 102.23m 위에 배치되며, 헨지의 돌 아래에 있는 자연 지면 위에 떠 있는 것처럼 보입니다.

기술적으로 이 모드는 지면의 실제 DTM 수준으로 기준을 설정한 다음 그 위 102.23m에 핀을 배치합니다.

RELATIVE_TO_MESH (파란색 핀)

이 핀은 가시 표면 (DSM)을 기반으로 사용하며 해당 표면에서 102.23m 위에 배치됩니다. 이 모드는 측정에 돌의 높이를 포함하여 주황색 핀보다 약간 높게 정렬합니다.

기술적으로 이 모드는 메시 (DSM)를 기본으로 사용하고 그 위에 지정된 고도에 위치를 배치합니다. DSM은 입석의 상단에 있으므로 이 핀은 상대 높이를 결정할 때 이 추가 높이를 측정에 포함하여 RELATIVE_TO_GROUND 핀보다 약간 높게 정렬합니다.

위치 선 및 영역

선과 영역의 경우 지형지물 내 지점의 고도 (지정 여부와 관계없음)와 사용 중인 AltitudeMode가 모두 중요합니다. 다음과 같이 지정된 고도를 사용하여 스톤헨지를 따라 선을 살펴보겠습니다.

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

이 선은 아래 이미지에서 절대 위치 지정을 사용하여 흰색으로 표시됩니다.

절대 위치 지정을 사용하여 스톤헨지 주변에 배치된 흰색 선을 보여주는 3D 지도

아래 이미지는 다양한 고도 모드를 사용하는 선을 다시 보여줍니다. 가장 낮은 수준부터 가장 높은 수준까지 차례로 살펴보겠습니다.

다양한 고도 모드를 사용하여 스톤헨지 주변에 배치된 여러 색상의 선 (보라색, 흰색, 주황색, 파란색)을 보여주는 3D 지도입니다.

CLAMP_TO_GROUND (보라색 선)

이 선은 각 지점에 지정된 고도를 무시하고 대신 기본 지면 (DTM) 위에 직접 선을 '덮습니다'. 지형을 따르며 건물이나 돌과 같은 지형지물의 존재를 무시합니다.

기술적으로 이 모드는 실제 고도 값을 무시하고 기본 지형을 따라 DTM 위에 선을 드레이프하고 그 위의 지형지물 메시를 무시합니다.

절대적 (흰색 선)

이 선은 각 지점의 정확한 고도를 사용하므로 선이 일부 돌 위를 지나갑니다. 각 지점 사이의 직선으로 연결되어 있으며, 지점이 충분히 자주 표시되지 않으면 객체를 통과하는 것처럼 보일 수 있습니다.

기술적으로 이 모드는 각 지점에 지정된 고도를 따르고 직선으로 연결합니다. 즉, 고도 값에 따라 메시 (예: 돌)를 통과할 수 있습니다. 이 시나리오는 이후 섹션에서 다룹니다.

RELATIVE_TO_GROUND (주황색 선)

이 선은 자연 지면 (DTM)을 기준으로 사용하며 각 지점을 해당 지면 수준보다 지정된 고도에 배치합니다.

기술적으로 이 모드는 DTM을 기반으로 사용하고 선 위치를 DTM을 기준으로 나열된 고도에 배치합니다.

RELATIVE_TO_MESH (파란색 선)

이 선은 건물과 돌을 포함한 가시적인 표면을 기준으로 사용합니다. 그런 다음 각 지점을 해당 메시 위의 지정된 고도에 배치하여 보이는 지형과 관련하여 선의 모양을 효과적으로 복제합니다.

기술적으로 이 모드는 메시 (DSM)를 기반으로 사용하고 그 위에 지정된 고도에 위치를 배치합니다. 메시가 지상의 다양한 지형지물에 따라 선이 변경될 수 있습니다.

선에 고도가 지정되지 않은 경우

이제 동일한 선 좌표를 고려하되 고도를 지정하지 않습니다.

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

고도가 제공되지 않는 이 시나리오에서는 선이 비슷한 위치에 표시되는 경우가 많습니다. 흰색, 주황색, 보라색 선은 모두 기본적으로 유사한 지면 수준 위치로 설정되므로 단일 선 (일반적으로 마지막에 그려지는 주황색)으로 병합될 수 있습니다. 아래에서 확인할 수 있습니다.

스톤헨지 주변에 여러 색상의 선 (주황색, 파란색)이 표시된 3D 지도입니다. 고도 데이터가 부족하여 흰색과 보라색 선이 병합되어 있습니다.

파란색 선 (RELATIVE_TO_MESH)은 다시 메시 (DSM)를 기준으로 사용합니다. 고도가 지정되지 않았으므로 점이 메시 바로 위에 오버레이됩니다. 메시 위에 선을 배치하는 것이 아니라 메시의 지정된 점을 직선으로 연결한다는 점에 유의해야 합니다. 일부 예에서는 이 방법이 허용될 수 있지만 다른 기능으로 가려지면 공개 상태 문제가 발생할 수 있습니다. 이 문제는 다음 섹션에서 다룹니다.

메시와 선의 상호작용 이제 다른 다중선을 살펴보겠습니다. 이 이미지는 동일한 영역에 있지만 지면 범위가 더 넓습니다 (또는 DTM 위에 DSM에 대한 세부정보가 더 많음).

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

이전과 동일한 방법 (및 색상)을 사용하여 표현을 보면 다음과 같은 뷰가 표시됩니다.

나무와 다양한 고도가 있는 지형 위에 여러 색상의 선 (보라색, 흰색, 주황색, 파란색)이 표시된 3D 지도입니다.

보라색은 CLAMP_TO_GROUND로, 지면을 따라 표시됩니다. 흰색은 ABSOLUTE로, 공간에 절대적으로 배치된 점을 직선으로 연결하는 것을 볼 수 있습니다. 주황색과 파란색은 표면 (DTM) 또는 메시 (DSM)에 관한 상대적인 버전이며, 아래 지형지물의 높이로 인해 파란색 선의 형태가 약간 다릅니다.

다시 한번 선 생성의 특성으로 인해 점이 직선으로 연결되면서 선이 메시를 통과한다는 점에 유의하세요. 이 시나리오에서는 선을 보는 데 문제가 발생할 수 있으므로 drawsOccludedSegments를 true로 설정하여 나무를 통해 선이 보이도록 할 수 있습니다. 다음 이미지에서 더 자세히 볼 수 있듯이 메시를 통과하는 선이 계속 표시됩니다.

나무를 통과하는 선을 보여주는 3D 지도. 가려진 세그먼트가 표시되어 세그먼트 가림이 true로 표시됩니다.

공간 내 위치 지정의 특성상 점이 메시 내에 속할 수 있고 점을 연결하는 선도 메시에 속할 수 있으므로 시각적 아티팩트가 발생할 수 있습니다. 아래 섹션에서는 가능한 경우 이러한 아티팩트를 개선하는 방법을 알아봅니다.

선과 지형 간 상호작용 문제 해결

또 다른 예로, 같은 영역에서 특정 고도 모드를 사용할 때 주의해야 할 다른 아티팩트를 볼 수 있습니다.

여기에는 주로 DTM 수준에 있는 비교적 평평한 영역이 있으며, 메시에서 그 위에 추가 세부정보가 제한되어 있습니다. 이 시나리오는 지형 모델 위에 3D 커버리지가 없는 지역에도 적용됩니다. 아래에 지정된 다음 위치를 살펴보겠습니다.

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

이미지에서 볼 수 있듯이 선은 이전과 동일한 색상 표현을 갖습니다(흰색: ABSOLUTE, 파란색: RELATIVE_TO_MESH, 보라색: CLAMP_TO_GROUND, 주황색: RELATIVE_TO_GROUND).

비교적 평평한 지형에 다양한 색상의 선 (흰색, 파란색, 보라색, 주황색)이 표시된 3D 지도로, 선이 땅속으로 사라지는 시각적 아티팩트를 강조합니다.

여기에서 여러 아티팩트를 볼 수 있습니다. 첫 번째는 표면 커버가 없기 때문에 주황색 (RELATIVE_TO_GROUND)과 파란색(RELATIVE_TO_MESH) 선이 (대부분) 같은 위치에 있다는 것입니다 (파란색 선은 마지막에 그려진 대로 표시됨).

또한 보라색 (CLAMP_TO_GROUND) 선은 지면을 따라 언덕에 표시되는 반면, 흰색 (ABSOLUTE) 선은 점만 연결되고 직선이 지면을 통과하므로 언덕으로 사라지는 것을 볼 수 있습니다.

이 이미지에서 보라색 선이 숨겨져 있을 때 이를 구체적으로 확인할 수 있습니다.

절대선과 메시 기준선의 시각적 아티팩트를 보여주는 3D 지도입니다. 흰색과 파란색 선이 언덕으로 사라지고 보라색 선은 숨겨져 있습니다.

따라서 지점 간의 선이 직선 경로를 따르기 때문에 선이 지면 아래로 (또는 메시를 통해) 사라지는 것처럼 보이는 이상한 시각적 아티팩트가 발생할 수 있습니다. 보간 방법을 사용하여 선 사이에 점을 더 추가하면 이러한 선의 시각적 표시를 개선할 수 있습니다. 이것이 시각적 표시에 미치는 영향은 다시 한번 사용되는 방법에 따라 달라집니다.

  • 상대 측정 (RELATIVE_TO_GROUND 또는 RELATIVE_TO_MESH): 상대 고도 값을 사용할 때 선 또는 다각형을 따라 더 많은 점을 만들면 지형지물을 더 적절한 수준에 배치하여 고도 프로필에 더 잘 맞출 수 있습니다. 데이터에 이러한 중간 지점이 없는 경우 Google Maps Platform Geometry 라이브러리의 Interpolate 함수와 같은 보간 함수를 사용하여 추가할 수 있습니다. 그런 다음 이러한 새 포인트에 관련 고도 프로필 위에 배치될 상대 값을 지정할 수 있으며, 포인트를 연결하는 선의 길이가 제한되고 시각적 표현이 개선됩니다.
  • 절대 지형지물 (ABSOLUTE): ABSOLUTE 지형지물의 경우 더 많은 지점에 실제 고도 값이 있어야 합니다. 기존 절대 값 사이를 보간하면 메시 위의 값을 정확하게 반영하는 지점이 제공되지 않습니다. 이는 단순히 지점 A와 지점 B 사이의 평균이기 때문입니다.

요약

이 문서에서는 ABSOLUTE, CLAMP_TO_GROUND, RELATIVE_TO_GROUND, RELATIVE_TO_MESH가 마커, 선, 다각형과 같은 다양한 지형지물의 배치 및 렌더링에 미치는 영향을 자세히 설명하면서 사실적인 3D 지도에서 AltitudeMode 옵션에 대한 포괄적인 개요를 제공했습니다.

이러한 모드가 기본 디지털 지형 모델 (DTM) 및 디지털 표면 모델 (DSM)과 함께 작동하는 방식을 이해하는 것은 시각적 아티팩트를 최소화하면서 정확하고 시각적으로 매력적인 3D 지도 표현을 만드는 데 매우 중요합니다.

자체 프로젝트에서 이러한 고도 모드를 실험하여 3D 매핑의 잠재력을 최대한 활용하고 사용자에게 몰입감 넘치는 매력적인 경험을 제공하고 의견을 보내주시기 바랍니다.

참여자

맷 툰 | 솔루션 엔지니어, Geo 개발자