지역을 다루는 방법

지역(Regions)은 강력한 KML 기능으로 성능의 저하 없이 매우 큰 데이터세트를 Google 어스에 추가할 수 있게 해 줍니다. 데이터는 사용자의 시야에 들어오고 화면의 특정 부분을 차지하는 경우에만 로드되고 표시됩니다. 지역을 사용하면 데이터에 별도의 정밀도를 제공하여 데이터가 세부정보를 보여주기에 충분히 큰 화면의 한 영역을 채우는 경우에만 정밀한 세부정보가 로드되도록 할 수 있습니다.

주요 개념

모든 지점에는 지역이 포함됩니다. 지역은 위치표시의 도형이나 오버레이의 이미지에 대한 표시 여부에 영향을 미칩니다. 지역은 각 도형이나 오버레이의 추려내기 및 정밀도 동작을 정의합니다. 지역은 KML 계층구조를 통해 상속되며 계층구조에서 하위 구조로 정의된 지점의 표시 여부에 영향을 미칩니다.

이 섹션에서는 지역을 이해하는 데 필요한 아래의 주요 개념에 대해 설명합니다.

상속

KML의 일부 클래스는 '기본' 클래스로부터 파생됩니다. 파생된 클래스는 기본 클래스의 모든 요소를 상속하며 자체적인 특정 요소 중 일부를 추가합니다. 이는 개체 지향 시스템에서 흔히 사용되는 기술입니다. 편의를 위해 이 섹션에서는 파생된 클래스를 모두 나열하는 대신 기본 클래스를 참조합니다. 예를 들면 다음과 같습니다.

  • 지점(Feature)이란 문서(Document), 폴더(Folder), 지면 오버레이(GroundOverlay), 네트워크 링크(NetworkLink), 사진 오버레이(PhotoOverlay), 위치표시(Placemark) 및 화면 오버레이(ScreenOverlay)와 같은 지점에서 파생된 모든 KML 요소를 의미합니다.
  • 도형(Geometry)이란 KML에 사용되는 위치 지점(Point), 다각형(Polygon), 선형 링(LinearRing), 유도선(LineString), 모델(Model) 및 다중 도형(MultiGeometry)과 같은 모든 도형 요소를 의미합니다.
  • 오버레이(Overlay)란 지면 오버레이, 사진 오버레이 및 화면 오버레이에서 파생된 요소를 의미합니다.

KML 요소 내의 상속 관계를 보여주는 그림을 보려면 KML 참조문서를 확인하세요.

경계 상자

지역에는 사용자 데이터의 경계 상자를 정의하는 <LatLonAltBox>가 있습니다. 경계 상자는 개체 모음이나 데이터 위치 지점을 포괄하는 양입니다. 지면 오버레이의 <LatLonBox>와 유사하게 지역의 <LatLonAltBox>에는 북쪽, 남쪽, 동쪽, 서쪽 경계가 있습니다. 지역에 의해 포함된 데이터가 3D이거나 고도가 2D인 경우 지역의 <LatLonAltBox>에도 마찬가지로 최소 고도인 <minAltitude>와 최대 고도인 <maxAltitude>가 포함되어야 합니다.

이 경계 상자와 연결된 개체는 (1) 지역이 시야 내에 들어오는 경우, (2) <LatLonAltBox>의 투영된 화면 크기가 LOD(정밀도)에 설명된 것처럼 지역의 지정된 픽셀 범위 내에 속하는 경우에 표시됩니다. 두 조건이 모두 충족되는 경우 지역이 '활성' 상태가 되었다고 합니다.

LOD(정밀도)

지역과 관련된 두 번째 중요한 개념은 LOD(정밀도)입니다. 컴퓨터 화면의 공간은 제한되어 있으므로 데이터를 적절히 표시할 수 있는 충분한 픽셀이 존재하는 경우에만 많은 양의 데이터가 로드되도록 설정하는 것이 가장 효율적입니다. 지역이 상대적으로 화면의 작은 부분만 차지하는 경우(예: 사용자가 먼 거리에서 지역을 보고 있거나 평지를 비스듬히 보고 있는 경우) 사용자(KML 작성자)는 LOD 메커니즘을 통해 최대 해상도 데이터를 좀 더 낮은 해상도의 데이터세트로 대체하도록 지정할 수 있습니다. 해상도가 낮은 데이터세트는 로드 속도가 빠르며, 화면의 작은 부분만 차지하므로 사용자가 차이를 느낄 수 없습니다.

지역에서 <minLodPixels> 및 <maxLodPixels> 요소는 화면의 영역을 제곱픽셀 단위로 지정할 수 있도록 해줍니다. 화면에 투영되는 데이터를 표시하려면 이 데이터가 <minLodPixels>보다는 크고 <maxLodPixels>보다는 작은 화면 영역을 차지해야 합니다. 지역의 투영 크기가 이러한 제한을 초과하는 경우 지역이 비활성화되며 더 이상 표시되지 않습니다.

데이터를 무제한의 크기로 활성화하려 하는 특수한 경우에는 <maxLodPixels>에 기본값인 -1을 지정합니다.

예 1: 지면 오버레이의 지역

먼저 지면 수준에서 2D 오버레이에 지역을 생성하는 간단한 예를 살펴보겠습니다. 이 예에서는 1991년 당시 캘리포니아 마운틴 뷰의 일부 지역을 보여주는 과거 데이터가 포함된 지면 오버레이가 사용됩니다. 사용자가 지역을 확대하면 오버레이가 나타납니다. 다음은 오버레이가 처음 표시될 때의 모습입니다. 예로 사용된 파일에는 오버레이를 눈에 띄게 할 수 있도록 하얀색 유도선도 포함되어 있습니다.

이 예에서는 <minLodPixels>이 128입니다. 즉, 지면 오버레이가 화면에서 128제곱픽셀을 차지하는 경우에만 시야에 보이게 됩니다. 이 예에서는 <maxLodPixels>로 기본값인 -1을 사용하므로 사용자가 이 각도에서 화면을 확대해도 오버레이는 계속 보입니다. 이 오버레이에 사용된 이미지의 크기는 256제곱픽셀입니다.

사용자가 화면을 확대하면 이미지가 다음과 같이 나타납니다.

다음은 기울어진 이미지가 <minLodPixels> 값보다 작은 공간을 소비하여 더 이상 표시되지 않게 되기 직전에 어떤 모습인지 보여줍니다.

데이터가 평면이고 지면 수준에 있으므로 이 데이터의 <LatLonAltBox>에는 <minAltitude>와 <maxAltitude> 요소를 포함하지 않아도 됩니다. 지역의 <LatLonAltBox>에 있는 데이터의 경계 상자는 아래의 KML 파일에 표시된 것처럼 지면 오버레이 <LatLonBox>의 경계와 동일합니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Flat Region</name>
<Region>
<LatLonAltBox>
<north>37.430419921875</north>
<south>37.41943359375</south>
<east>-122.080078125</east>
<west>-122.091064453125</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
</Lod>
</Region>
<GroundOverlay>
<name>Mountain View DOQQ</name>
<Icon>
<href>files/image.JPEG</href>
</Icon>
<LatLonBox>
<north>37.430419921875</north>
<south>37.41943359375</south>
<east>-122.080078125</east>
<west>-122.091064453125</west>
</LatLonBox>
</GroundOverlay> </Document> </kml>

또한 KML 파일 내에서는 지역에 의해 표시 여부가 영향을 받는 이미지나 도형이 이 지역과 동급입니다.

KML 파일을 충분히 살펴보았으므로 이제 다음 링크를 클릭하여 오버레이를 Google 어스에 로드합니다. 그런 다음 여러 시점을 테스트해보고 화면 영역이 어느 정도 필요한지에 따라 지역이 화면에 보였다가 안 보이게 되는 과정을 지켜봅니다. 화면을 충분히 멀리 기울이거나 많이 축소하면 <minLodPixels> 요구사항을 충족하기에 너무 작은 화면 공간을 차지하게 되므로 오버레이가 사라집니다.

Google 어스에서 예 보기(historicOverlay.kmz)

고도

예 2: 3D 모델의 지역

다음 예에서는 지면 수준에서 3D 개체를 포함하는 지역을 생성하는 방법을 보여줍니다. 이 지역의 <LatLonAltBox>에는 건물의 높이에 해당하는 300 미터의 <maxAltitude>가 포함됩니다. 이 건물은 뉴욕 시에 위치한 UN(국제연합) 건물 단지입니다.

여기서 중요한 점은 지역 <LatLonAltBox>의 경계가 모델의 경도 및 위도 경계와 일치하지 않는다는 것입니다. 모델의 좌표는 모델 자체의 절대적인 로컬 원점이 아니며 Google 어스 상의 실제 모델 위치와는 다를 수 있습니다.

<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>3D Region on ground</name>
<Placemark>
<name>United Nations Headquarters</name>
<visibility>0</visibility>
<Region>
<Lod>
<minLodPixels>128</minLodPixels>
</Lod>
<LatLonAltBox>
<north>40.750683130314</north>
<south>40.748162385230</south>
<east>-73.966608428427</east>
<west>-73.969476624071</west>
<minAltitude>0</minAltitude>
<maxAltitude>300</maxAltitude>
<altitudeMode>absolute</altitudeMode>
</LatLonAltBox>
</Region>
<Model>
<altitudeMode>absolute</altitudeMode>
<Location>
<longitude>-73.967763927199</longitude>
<latitude>40.749458312255</latitude>
<altitude>0.406173708576</altitude>
</Location>
<Link>
<href>models/un.dae</href>
</Link>
</Model>
</Placemark>
</Document>
</kml>

다음 링크를 클릭하여 파일을 Google 어스에 로드합니다. 다시 한 번 여러 시점을 실험해보고 언제 건물이 시야에서 보이거나 사라지는지 살펴봅니다.

Google 어스에서 예 보기(unitedNations.kmz)

예 3: 특정 고도에 2D 오버레이를 추가하기 위한 지역

이 예는 2D 오버레이를 추가하여 지구 표면의 지정된 고도에 표시하는 방법을 보여줍니다. 이 기술은 기상 전선과 항공 교통 패턴을 표시하는 데이터에 유용합니다. 다음 예는 해발 100,000미터에 위치한 소규모의 운량을 보여줍니다.

지역의 <LatLonAltBox>는 100,000미터의 값을 <minAltitude> 및 <maxAltitude> 요소에 지정합니다. 오버레이가 2D이고 두께가 없으므로 두 요소의 값은 동일합니다. <altitudeMode>가 절대적입니다. 이는 이 값이 해수면을 기준으로 설정된다는 뜻입니다.

지면 오버레이의 <altitude> 값 또한 100,000이며(즉 이 값이 지역 경계 상자의 고도 값과 일치) 지면 오버레이의 <altitudeMode>가 지역의 <altitudeMode>에 지정된 값과 일치합니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Flat Region at altitude</name>
<GroundOverlay>
<name>Cloud overlay</name>
<Region>
<LatLonAltBox>
<north>33.75</north>
<south>22.5</south>
<east>-45</east>
<west>-56.25</west>
<minAltitude>100000</minAltitude>
<maxAltitude>100000</maxAltitude>
<altitudeMode>absolute</altitudeMode>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
</Lod>
</Region>
<Icon>
<href>files/image.PNG</href>
</Icon>
<altitude>100000</altitude>
<altitudeMode>absolute</altitudeMode>
<LatLonBox>
<north>33.75</north>
<south>22.5</south>
<east>-45</east>
<west>-56.25</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>

Google 어스에서 예 보기(cloudRegion.kmz)

페이드 범위

지역에는 페이드 범위도 지정할 수 있습니다. 그러면 개체가 투명에서 불투명으로, 다시 불투명에서 투명으로 매끄럽게 전환됩니다. Google 어스는 지역의 가시 크기가 최대로 되어있는 경우 최대 페이드 범위(maxFadeExtent)를 사용하여 지역의 페이드 수준을 완전 투명에서 완전 불투명 사이로 설정하며 지역의 가시 크기가 최소로 되어 있는 경우에는 최소 페이드 범위(minFadeExtent)를 사용하여 페이드 수준을 결정합니다. 페이즈 수준은 선택사항이지만 이 기능을 통해 여러 해상도의 유도선이나 다각형 간의 '돌출' 효과를 예방할 수 있습니다. 페이딩은 고도의 성능을 필요로 하며 이미지에는 사용하면 안 됩니다.

참고: 페이드 수준은 위치표시 아이콘을 제외한 모든 개체에 적용됩니다. 이러한 아이콘은 페이드 수준이 0.5를 초과하는 경우에만 그려집니다.

다음 예는 페이드 범위가 유도선에 어떻게 영향을 미치는지를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Region in Placemark LineString</name>
<description>
유도선 모서리는 지역 위도 경도 고도 상자(LatLonAltBox)의
범위를 표시합니다.
유도선의 최소 페이드 범위(최대 범위)는
최대 페이드 범위(가장 가까운 범위)의 1/4입니다.
</description>
<Placemark>
<name>Region LineString</name>
<LineString>
<coordinates>
22,50,0
28,50,0
28,45,0
22,45,0
22,50,0
</coordinates>
</LineString>
<Region>
<위도 경도 고도 상자>
<north>50</north>
<south>45</south>
<east>28</east>
<west>22</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
<minFadeExtent>128</minFadeExtent>
<maxFadeExtent>512</maxFadeExtent>
</Lod>
</Region>
</Placemark>
</Document>
</kml>

View example in Google Earth (fadeLineString.kml)

중첩 지역(Nesting Regions)

지역 중첩은 매우 일반적으로 사용되는 방식입니다. 여기서는 더 큰 지역이 낮은 해상도와 연결되며 크기가 작은 내부 지역은 점점 더 상세한 정밀도와 연결됩니다. 다음 그림에서 각 지역에는 연결된 지역을 활성화하기 위해 필요한 투영된 지역 화면의 크기(단위: 픽셀)를 지정하는 LOD 제한이 있습니다. 사용자의 시점이 가까워질수록 지역이 더 많은 화면 공간을 차지하게 되므로 더욱 상세한 LOD(정밀도)의 지역이 활성화됩니다. 이전에 로드된 낮은 LOD의 지역이 더욱 상세한 LOD의 지역으로 바뀝니다.

이어지는 중첩 지역이 계속해서 활성화되면 다음이 가능해집니다.

  • 아래의 슈퍼 오버레이(Super-Overlay) 예에 설명된 것처럼 각 지역에 관련된 데이터를 축적할 수 있습니다.
  • 이전의 그림에 표시된 것처럼 이전에 로드된 지역의 데이터를 새로운 데이터로 교체할 수 있습니다.

하위 지역의 <LatLonAltBox>는 상위 지역의 <LatLonAltBox> 내에 완전히 포함되어야 합니다. 지역은 폴더 및 네트워크 링크 계층구조를 통해 상속됩니다. 로컬에서 정의된 지역이 폴더 계층구조에서 상위 수준으로 정의된 지역보다 우선합니다. 다음 예는 지역의 로컬 범위가 계층구조에서 상위 수준으로 정의된 지역보다 우선적용되는 방식을 보여줍니다. 이 예에서 'ukraineRegion' 위치표시는 상위 문서로부터 지역을 상속합니다. 'romaniaFolder' 폴더는 'romaniaRegion' 위치표시에 의해 사용되는 자체적인 지역을 지정합니다. 효율성 극대를 위해 지역과 네트워크 링크를 사용하는 방법에 대한 예를 살펴보려면 다음 섹션(지역 기반 네트워크 링크의 '스마트' 로드)를 확인해 보세요.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Nested Regions</name> <Region> <LatLonAltBox> <north>56.25</north> <south>45</south> <east>33.75</east> <west>22.5</west> </LatLonAltBox> <Lod> <minLodPixels>128</minLodPixels> <maxLodPixels>1024</maxLodPixels> </Lod> </Region> <Placemark> <name>ukraineRegion</name> <LineString> <tessellate>1</tessellate> <coordinates> 22.5,45,0 33.75,45,0 33.75,56.25,0 22.5,56.25,0 22.5,45,0 </coordinates> </LineString> </Placemark> <Folder> <name>romaniaFolder</name> <Region> <LatLonAltBox> <north>50.625</north> <south>45</south> <east>28.125</east> <west>22.5</west> </LatLonAltBox> <Lod> <minLodPixels>128</minLodPixels> <maxLodPixels>1024</maxLodPixels> </Lod> </Region> <Placemark> <name>romaniaRegion</name> <LineString> <tessellate>1</tessellate> <coordinates> 22.5,45,0 28.125,45,0 28.125,50.625,0 22.5,50.625,0 22.5,45,0 </coordinates> </LineString> </Placemark> </Folder> </Document> </kml>

지역 기반 네트워크 링크의 '스마트 로드'

이전 예에서 살펴보았던 지역 기반 네트워크 링크는 매우 큰 데이터세트를 Google 어스에 게시하기 위한 가장 효율적인 방법입니다. 지역을 네트워크 링크와 연계하여 사용하면 포인터의 계층구조를 생성하고 각 포인터가 특정 하위지역을 향하게 할 수 있습니다. 다음 KML 파일에 보이는 것과 같이 <viewRefreshMode>에는 지역이 활성 상태인 경우에만 지역 데이터를 로드하도록 지정하는 지역 활성시(onRegion) 옵션이 포함되어 있습니다. 여러 정밀도의 중첩 지역을 제공하면 사용자의 시점이 다음 로드를 실행하는 경우에만 더 많은 데이터가 로드됩니다. 다음 슈퍼 오버레이 섹션에서 더욱 상세한 예를 확인할 수 있습니다.

파트 1: 상위 파일

이 예를 실행하려면 첫 번째 부분을 평소처럼 저장합니다. 활성화된 지역을 네트워크 링크가 로드할 수 있도록 두 번째 부분을 romaniaRegion.kml로 저장합니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Nested Regions</name> <Region> <LatLonAltBox> <north>56.25</north> <south>45</south> <east>33.75</east> <west>22.5</west> </LatLonAltBox> <Lod> <minLodPixels>128</minLodPixels> <maxLodPixels>1024</maxLodPixels> </Lod> </Region> <Placemark> <name>ukraineRegion</name> <LineString> <tessellate>1</tessellate> <coordinates> 22.5,45,0 33.75,45,0 33.75,56.25,0 22.5,56.25,0 22.5,45,0 </coordinates> </LineString> </Placemark> <NetworkLink> <name>romania NetworkLink</name> <Region> <LatLonAltBox> <north>50.625</north> <south>45</south> <east>28.125</east> <west>22.5</west> </LatLonAltBox> <Lod> <minLodPixels>128</minLodPixels> <maxLodPixels>1024</maxLodPixels> </Lod> </Region> <Link> <href>romaniaRegion.kml</href> <viewRefreshMode>onRegion</viewRefreshMode> </Link> </NetworkLink> </Document> </kml>

파트 2: 지역 기반 네트워크 링크 파일

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>romania Document</name>
<Region>
<LatLonAltBox> <north>50.625</north> <south>45</south> <east>28.125</east> <west>22.5</west> </LatLonAltBox>
<Lod> <minLodPixels>128</minLodPixels> <maxLodPixels>1024</maxLodPixels> </Lod>
</Region> <Placemark> <name>romaniaRegion</name> <LineString> <tessellate>1</tessellate> <coordinates> 22.5,45,0
28.125,45,0 28.125,50.625,0 22.5,50.625,0 22.5,45,0 </coordinates> </LineString> </Placemark>
</Document>
</kml>

슈퍼 오버레이

Q: 47MB 이미지를 일반 사용자에게 공개하려면 어떻게 해야 하나요?
A: 한 번에 한 조각씩 공개해야 합니다.

Q: 모든 사용자가 이렇게 이미지를 공개하려고 하면 어떻게 되나요?
A: 지역 기반 네트워크 링크를 사용 중이고 이 가이드에서 설명한 것처럼 이미지를 여러 정밀도로 제공한다면 아무런 문제가 없습니다.

이 섹션에서는 대량 이미지 모음을 효율적으로 게재하기 위해 사용되는 지역 및 네트워크 링크의 계층구조인 '슈퍼 오버레이'를 만드는 방법을 다룹니다. 이미지 영역 중 일부가 시야에 들어오면 적절한 해상도의 타일이 로드되며 시점이 가까워질수록 더욱 높은 해상도의 파일이 로드됩니다. 1024x768 화면에 7008x6720픽셀 이미지를 표시하려고 시도하는 것은 아무런 소용이 없습니다. 더군다나 사용자가 지구 표면으로부터 수 킬로미터 상공에 위치한 경우 모든 데이터가 소수의 픽셀에 몰릴 수 있으며 따라서 성능이 저하됩니다. 슈퍼 오버레이(예: 캘리포니아 마운틴 뷰의 1991년 DOQQ를 보여주는 샘플)을 사용하면 네트워크 링크와 관련 기능을 활용하여 (1) 특정 지역이 시야 내에 있는지 및 (2) 투영된 크기가 현재의 시점에 적절한지를 파악할 수 있습니다. 지역이 '활성' 상태인 경우(두 조건을 모두 충족하는 경우) 네트워크 링크는 지역과 관련된 데이터를 로드합니다. 지역이 비활성 상태이면 데이터가 로드되지 않습니다. 이미지 원본을 점점 더 상세해지는 정밀도의 이미지 계층구조로 세분화하면 Google 어스가 현재 시야에 가장 잘 맞는 이미지를 로드할 수 있습니다.

이미지 계층구조가 사용되는 방식을 확인하려면 마운틴 뷰 과거 DOQQ 샘플 파일을 Google 어스에 로드하여 관심 있는 지역을 확대하거나 축소해 봅니다.

지역 기반 네트워크 링크를 사용하여 매우 큰 데이터세트를 효율적으로 로드하는 예입니다. 이미지 원본의 크기는 7008x6720픽셀입니다. 여기에 표시된 기울어진 화면은 5개의 작은 타일만을 로드하여 이미지를 나타냅니다. 타일 경계를 강조표시하기 위해 흰색 유도선이 추가되었습니다. 이렇게 적용하면 마운틴 뷰의 과거 이미지(1991년 DOQQ)를 표시할 수 있습니다.

슈퍼 오버레이에 맞게 데이터를 구성

샘플 슈퍼 오버레이에서는 마운틴 뷰 이미지 원본이 수백 개의 지면 오버레이로 세분화되어 있습니다. 이러한 오버레이 또는 타일(tiles)은 5단계의 계층구조로 구성됩니다. 예를 들기 위해 다음 내용에는 3단계의 계층구조와 21개의 오버레이 모음을 사용해 보겠으며, 이때 적용되는 원칙은 동일합니다. 이는 지역 기반 네트워크 링크 계층구조를 만드는 방식 중 하나에 불과하며 다른 방법을 통해서도 이 메커니즘을 구현할 수 있습니다.

슈퍼 오버레이를 만들려면 다음을 수행해야 합니다.

  1. 이미지를 다루기 쉬운 크기로 나눕니다(256x256픽셀 권장).
  2. 지역, 링크, 네트워크 링크를 설정하는 KML 파일을 만들고 이 경우에는 지면 오버레이가 포함된 파일까지 만듭니다.

이미지 준비

타일의 표준 크기를 선택합니다. Google 어스는 연결된 지역이 활성화되면 이렇게 세분화된 여러 해상도의 이미지를 로드합니다. 예를 들기 위해 다루기가 용이한 256x256픽셀 크기의 타일을 사용해 보겠습니다.

  1. 실제 해상도의 이미지 원본부터 시작합니다. 이 이미지를 n개의 타일로 나눈 다음 각 타일을 n개의 타일로 다시 나눕니다.
    지정한 크기의 타일을 얻을 때까지 타일을 계속해서 나눕니다(예의 경우 256x256픽셀).

    이미지 원본의 크기가 1024x1024픽셀이라고 가정해 보겠습니다.
    이 이미지를 나누면 다음과 같은 계층구조가 형성됩니다.

     

  2. 계층구조의 타일을 선택한 크기로 다시 샘플링합니다(예: 256x256픽셀).
    다시 샘플링된 타일은 상세함이 떨어지지만 시점이 더 먼 활성 지역에 연결되므로
    사용자가 차이를 느끼지 못하게 됩니다.

아래의 그림은 실제 로드되는 타일이 중첩 지역의 시점과 해상도에 의해 어떻게 결정되는지를 보여줍니다. 이 큰 이미지 조각 샘플의 경우 3단계의 정밀도로 제공됩니다. 사용자가 가장 먼 거리에서 지역을 보면 Google 어스는 썸네일 이미지를 표시합니다. 이 화면은 위도 경도 고도 상자 전체에 걸쳐 확대됩니다. 하지만 투영된 크기가 작으므로(256제곱픽셀) 실제로 시각 정보가 손실되지는 않습니다. 사용자가 장면을 확대하면 지역이 4개로 나뉩니다. '타일' 4개의 크기는 각각 썸네일 이미지와 동일하지만 좀 더 상세한 이미지를 제공합니다.

사용자가 계속해서 지역을 확대하면 얼마나 가깝게 접근하는지에 따라 실제 해상도의 이미지 부분이 화면에 표시됩니다. 멀리 있는 지역의 경우 먼저 로드된 저해상도의 이미지를 유지합니다. 마운틴 뷰 DOQQ 예에서 '확인란'을 선택하여 지역 주변에 유도선을 사용하고 여러 단계의 계층구조를 동시에 표시하는 위치표시 AB를 살펴보세요.

이 샘플의 경우 계층구조의 모든 단계에서 모든 지역의 최소 로드 픽셀(minLodPixel)과 최대 로드 픽셀(maxLodPixel)에 동일한 값을 사용합니다. 로드되는 계층구조 단계와 지역 내에 로드되는 타일은 위도 경도 고도 상자에 의해 결정됩니다.

KML 파일 준비

각 이미지에 대해 지면 오버레이를 지역과 네트워크 링크에 연결하는 KML 파일을 준비합니다. 이 집합의 각 KML 파일에는 다음과 같은 요소가 포함됩니다.

  • 지역(Google 어스에서 지역의 활성 상태 여부를 원하는 때에 파악할 수 있도록 위도 경도 고도 상자, 최소 로드 픽셀 및 최대 로드 픽셀 포함)
  • 하위 파일의 네트워크 링크 모음(다음 계층구조 단계의 타일)
  • 지역의 지면 오버레이

이 샘플은 마운틴 뷰 DOQQ 예의 최상위 KML 파일을 보여줍니다. 최대 로드 픽셀이 -1로 지정되어 있으며 이는 '최대 크기제한 없이 활성화'라는 특별한 의미를 가집니다. 이 사양이 없으면 계층구조 전체가 실행되지 않을 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
<name>SuperOverlay: MV DOQQ</name>
<Region>
<LatLonAltBox>
<north>37.44140625</north>
<south>37.265625</south>
<east>-121.9921875</east>
<west>-122.16796875</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>-1</maxLodPixels>
</Lod>
</Region>
<Link>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/mv-070501/1.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
</kml>

다음 파일은 마운틴 뷰 DOQQ 예(179.kml)의 지역을 보여줍니다. 파일에는 5개의 href 태그가 포함되어 있습니다. 4개의 태그는 다음 이미지 계층구조 단계의 KML 파일과 관련이 있으며 나머지 하나는 이 파일의 지면 오버레이에 사용된 이미지 파일과 관련이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.430419921875</north><south>37.41943359375</south>
<east>-122.091064453125</east><west>-122.10205078125</west>
</LatLonAltBox>
</Region>
<NetworkLink>
<name>001120</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.430419921875</north><south>37.4249267578125</south>
<east>-122.0965576171875</east><west>-122.10205078125</west>
</LatLonAltBox>
</Region>
<Link>
<href>180.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<NetworkLink>
<name>001121</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.430419921875</north><south>37.4249267578125</south>
<east>-122.091064453125</east><west>-122.0965576171875</west>
</LatLonAltBox>
</Region>
<Link>
<href>185.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<NetworkLink>
<name>001122</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.4249267578125</north><south>37.41943359375</south>
<east>-122.0965576171875</east><west>-122.10205078125</west>
</LatLonAltBox>
</Region>
<Link>
<href>190.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<NetworkLink>
<name>001123</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.4249267578125</north><south>37.41943359375</south>
<east>-122.091064453125</east><west>-122.0965576171875</west>
</LatLonAltBox>
</Region>
<Link>
<href>195.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<GroundOverlay>
<drawOrder>5</drawOrder>
<Icon>
<href>179.JPEG</href>
</Icon>
<LatLonBox>
<north>37.430419921875</north><south>37.41943359375</south>
<east>-122.091064453125</east><west>-122.10205078125</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>