KML 2.1 가이드

이 가이드는 KML 2.1에서 찾을 수 있는 흥미로운 새 기능에 익숙해질 수 있도록 마련되었습니다. 빠르게 둘러보려면 먼저 링크를 클릭하여 Google 어스에서 샘플을 확인하세요. 새로운 KML 요소에 대해 자세히 알아보려면 텍스트와 그림을 살펴보며 이러한 기능이 Google 어스의 이번 새 출시 버전에 유연성과 강력한 기능을 추가하는 방식을 이해해 보세요. 이러한 도구로 혁신적인 프리젠테이션과 둘러보기를 만들어 보세요.

여기서 논의하는 요소에 대한 자세한 내용은 KML 2.1 참조KML 2.1 스키마를 참조하세요.

KML 2.1의 주요 특징

  • 지역(Regions) - 지역은 추려내기 및 정밀도 동작을 제공하여 Google 어스에 데이터가 표시되는 방식을 미세 조정할 수 있도록 합니다. 네트워크 링크(NetworkLinks)와 함께 사용하는 경우 지역에서는 여러 수준의 해상도에서 데이터를 '스마트' 로드하여 매우 큰 데이터세트를 스트리밍할 수 있습니다(수퍼 오버레이(Super-Overlays) 섹션 참조). 또한 지역을 사용하여 Google 어스의 레이어를 시뮬레이션할 수 있습니다.
  • 텍스처가 적용된 3D 모델(Textured 3D models) - 3D 개체는 자체의 좌표 공간에서 자연스럽게 모델링할 수 있으며 COLLADA™ 파일로 내보낸 후 Google 어스로 가져와 지면에 배치할 수 있습니다.
  • 점진적 업데이트(Incremental updates) - 네트워크 링크에 의해 로드된 데이터를 점진적으로 업데이트하여 이전에 Google 어스에 로드된 KML 데이터를 변경, 추가 및 삭제할 수 있습니다.
  • 만료 날짜/시간(Expiration date/time) - 일시를 지정하여 캐시가 플러싱되고 데이터가 현재 상태로 유지되도록 데이터를 새로고침할 수 있습니다.
  • 라디오 버튼 폴더(Radio-button folders) - 사용자가 폴더에서 한 번에 한 항목만 선택할 수 있도록 하려면 새 목록 스타일(ListStyle) 요소를 사용하여 라디오 폴더(radioFolder)를 지정합니다.

추천 샘플

사양 확인

다음은 KML 2.1에 도입되는 새로운 주요 요소 중 일부입니다.

지역을 다루는 방법

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

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

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

KML 요소 내의 상속 관계를 보여주는 그림을 보려면 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://earth.google.com/kml/2.1">
<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://earth.google.com/kml/2.1">
<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://earth.google.com/kml/2.1">
<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 어스는 지역의 표시 크기가 최대인 경우 최대 페이드 범위(maxFadeExent)를 사용하여 지역의 페이드 수준을 완전 투명에서 완전 불투명 사이로 설정하며, 지역의 표시 크기가 최소인 경우에는 최소 페이드 범위(minFadeExtent)를 사용하여 페이드 수준을 결정합니다. 페이드 범위는 선택사항이지만 이 기능을 통해 여러 해상도의 유도선이나 다각형 간의 '돌출' 효과를 예방할 수 있습니다. 페이딩은 고도의 성능을 필요로 하며 이미지에는 사용하면 안 됩니다.

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

 

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Region in Placemark LineString</name>
<description>
The LineString corners mark the extent
of the Region LatLonAltBox.
The LineString minFadeExtent (at greatest range)
is 1/4 of the maxFadeExtent (at closest range)..
</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>
<LatLonAltBox>
<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>

Google 어스에서 예 보기(fadeLineString.kml)

중첩 지역

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<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: 상위 파일

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<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://earth.google.com/kml/2.1">
<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)를 표시할 수 있습니다.

수퍼 오버레이용 데이터 준비

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

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

  1. 이미지를 관리하기 쉬운 크기(256x256픽셀 권장)로 분할하여 준비합니다.
  2. 지역, 링크, 네트워크 링크를 설정하는 KML 파일을 만들고 이 경우에는 지면 오버레이가 포함된 파일도 만듭니다.

이미지 준비

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

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

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

     

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

 


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

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

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

KML 파일 준비

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<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개의 태그는 이미지 계층구조의 다음 단계에 있는 4개의 KML 파일을 나타내고 1개의 태그는 이 타일의 오버레이 이미지에 사용된 이미지 파일을 나타냅니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<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>

3D 개체 표시

KML에서는 건물, 다리, 기념물 및 동상과 같은 3D 모델을 COLLADA 교환 파일 형식으로 가져올 수 있습니다. Google 어스에서 모델은 SketchUp, 3D Studio Max, Softimage XSI 또는 Maya 등의 애플리케이션을 사용하여 자체적인 좌표 공간에 독립적으로 정의됩니다. Google 어스로 가져오는 3D 모델은 어스의 좌표계에 맞게 변환 및 회전되고 배율이 조정됩니다. 이미 Google 어스에 로드된 모델은 KML 2.1의 또 다른 새로운 기능인 <Update> 요소를 사용하여 위치가 변경되고 크기가 조절될 수 있습니다.

샘플 모델

모델은 다른 도형 개체(점, 유도선 또는 다각형)와 동일한 방식으로 Google 어스에서 사용됩니다. 다음은 텍스처가 적용된 모델을 가져오는 KML 파일의 간단한 예입니다.

모델에 대한 <Link> 참조는 절대 또는 상대 파일 사양이거나 URL일 수 있습니다.

이 모델을 보려면 MackyBldg.kmz 파일을 로드합니다. 이 파일은 필요한 모든 텍스처와 오버레이는 물론 모델이 포함된 doc.kml 파일까지 담고 있는 아카이브입니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Placemark>
<name>SketchUp Model of Macky Auditorium</name>
<description>University of Colorado, Boulder; model created by Noël Nemcik.</description> <LookAt>
<longitude>-105.2727379358738</longitude>
<latitude>40.01000594412381</latitude>
<altitude>0</altitude>
<range>127.2393107680517</range>
<tilt>65.74454495876547</tilt>
<heading>-27.70337734057933</heading> </LookAt> <Model id="model_4">
<altitudeMode>relativeToGround</altitudeMode>
<Location>
<longitude>-105.272774533734</longitude>
<latitude>40.009993372683</latitude>
<altitude>0</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1</x>
<y>1</y>
<z>1</z>
</Scale>
<Link>
<href>files/CU Macky.dae</href>
</Link>
</Model>
</Placemark>
</kml>

모델은 위치 요소의 위도, 경도 및 고도 사양을 통해 지리적으로 배치됩니다. 이 예에서는 완벽한 구성을 위해 포함된 방향 및 축척 요소에 기본값이 사용됩니다.

방향 요소는 x(기울기), y(회전) 및 z(방위) 축을 기준으로 모델의 회전을 지정합니다. y 축은 북쪽을 향하고 경도선과 평행을 이루며 x 축은 동쪽을 향하고 위도선과 평행을 이룹니다. 회전은 도 단위로 지정되며 다음 그림에 표시된 것처럼 양수인 회전이 사용됩니다.

.kmz 아카이브 만들기

KMZ 아카이브는 단일 KML 프리젠테이션을 만드는 데 사용되는 파일 모음입니다. 이 아카이브에는 이미지, 텍스처 및 모델과 같이 .kml 파일에서 참조되는 로컬 파일이 모두 포함됩니다. KMZ 아카이브는 네트워크에서 호스팅할 필요가 없는 독립적인 패키지이며 단일 단위로 손쉽게 이메일로 보내고 보관할 수 있습니다. Google 어스에서는 .kml.kmz 파일을 직접 읽을 수 있습니다.

doc.kml 파일 및 이 파일이 참조하는 로컬 파일은 ZIP 파일 형식을 사용하여 아카이브로 압축됩니다. 여러 애플리케이션에서 이러한 형식을 생성할 수 있습니다. Windows 시스템의 WinZip, Macintosh 시스템의 Stuffit, Linux 또는 Macintosh 시스템의 zip은 ZIP 형식을 읽고 쓸 수 있는 인기 애플리케이션입니다. 또한 Windows Explorer 또는 Mac Finder를 직접 사용하여 zip 아카이브로 작업할 수도 있습니다.

.zip 파일을 만든 후에는 파일 확장자를 .kmz로 변경합니다.

Macky Building의 전체 텍스처가 적용된 모델이 포함된 KMZ 아카이브에는 다음 파일이 포함되어 있습니다.

  • doc.kml - 위에 표시된 KML 파일이며 COLLADA(.dae) 모델을 가져와 Google 어스에 배치합니다. 이 파일을 KMZ(ZIP) 파일의 루트 디렉토리에 배치합니다.
  • textures.txt - 모델 파일(여기서는 CU Macky.dae)에서 텍스처 경로를 KMZ 파일 내부의 경로에 다시 매핑하는 데 사용됩니다. 이 파일을 KMZ(ZIP) 파일의 루트 디렉토리에 배치합니다. CU Macky .dae에서 참조되는 모든 텍스처의 textures.txt에는 다음 양식으로 된 한 줄이 있습니다.
<kmz_file_path> <COLLADA_file_path> [<KML_ID_of_model>]

<kmz_file_path>는 텍스처가 위치한 곳을 기준으로 하는 아카이브 내의 경로입니다. 이 경로는 KMZ 아카이브의 files/ 디렉토리에 있는 CU Macky.dae을 기준으로 합니다. 텍스처는 files/ 디렉토리에 저장되므로 <kmz_file_path>../files/로 시작되어야 합니다.

<COLLADA_file_path>CU Macky .dae에 표시된 것과 정확하게 일치하는 텍스처 파일의 이름입니다.

[KML_ID]는 이 텍스처를 사용하는 모델의 KML ID입니다. 텍스처는 여러 모델에서 사용될 수 있습니다. 이 매개변수는 선택사항입니다.

다음은 예의 textures.txt 파일에서 발췌한 부분입니다.

<../files/CU-Macky---Center-StairsnoCulling.jpg> <CU-Macky---Center-StairsnoCulling.jpg> <model_4>
<../files/CU-Macky-4sideturretnoCulling.jpg> <CU-Macky-4sideturretnoCulling.jpg> <model_4>
<../files/CU-Macky-Back-NorthnoCulling.jpg> <CU-Macky-Back-NorthnoCulling.jpg> <model_4>
  • files/ 디렉토리 - 모델의 도형, 텍스처 및 재료를 정의하는 COLLADA 파일을 포함합니다. Macky Building 예에서 이 디렉토리에는 COLLADA 파일(CU Macky.dae)을 비롯하여 건물에 텍스처를 적용하는 데 사용된 JPEG 이미지(CU-Macky-BrickwallnoCulling.jpg, CU-Macky--Center-StairsnoCulling.jpg, CU_Macky-EastdetaildoornoCulling.jpg 등)가 들어 있는 여러 파일이 포함됩니다.

이 예에서는 KMZ 아카이브에서 파일을 구조화하는 한 가지 방법을 보여줍니다. 파일을 컴퓨터의 폴더나 디렉토리에 정리하는 것과 마찬가지로 실제로도 논리적이라고 판단되는 모든 구조를 사용하여 파일을 구성할 수 있습니다. 예를 들어 모든 이미지 파일을 images/ 디렉토리에 넣으면 유용할 수 있습니다. 상대 참조(예: 네트워크 링크, 링크, 오버레이/아이콘 및 모델에 사용되는 <href> 요소에 있는 참조된 파일)는 doc.kml 파일을 기준으로 지정할 수 있습니다. 이미지 디렉토리를 포함하는 경우에는 이미지의 <href> 사양이 images/myBrickTexture.jpg, images/myMountainOverlay.png 등의 형식을 취하게 됩니다.

네트워크 링크를 통해 로드된 데이터 업데이트

네트워크 링크를 통해 로드된 데이터를 점진적으로 수정하려면 네트워크 링크 컨트롤 하위 요소인 업데이트 요소를 사용합니다. 업데이트에는 순서대로 처리되는 여러 변경(Change), 생성(Create) 및 삭제(Delete) 요소가 포함될 수 있습니다.

아래의 그림은 이벤트의 순서를 보여줍니다.

  1. 네트워크 링크는 KML 파일 '원본'을 Google 어스에 로드합니다. 나중에 업데이트할 요소는 처음에 지정할 때 명시적인 ID가 정의되어야 합니다. ID는 지정한 파일 내에서 고유해야 합니다.
  2. 다른 네트워크 링크는 두 번째 KML 파일을 로드하며 여기에는 이미 로드된 KML 개체에 적용될 업데이트(변경, 생성 및 삭제 조합)가 포함되어 있습니다. 업데이트 파일에는 KML 데이터 원본을 식별하기 위한 2개의 참조가 포함되어 있습니다.
  3. Google 어스 내에서 개체를 찾기 위해 업데이트 요소는 타겟Href(targetHref) 요소를 사용하여 수정할 개체를 정의한 파일 원본을 식별합니다. 수정할 개체나 새 개체의 컨테이너를 식별하기 위해 변경, 생성 및 삭제 요소에는 이러한 개체의 ID를 참조하는 타겟 ID(targetId) 속성이 포함되어 있습니다.

변경 예

다음 예제에서는 네트워크 링크 및 KML 데이터 파일 샘플 모음을 보여줍니다. 샘플을 실행하는 방법은 다음과 같습니다.

  1. Point-load.kml 파일을 Google 어스에 로드합니다. 이 파일에는 두 위치 지점(Point.kml)이 포함된 데이터 파일 원본을 로드하는 네트워크 링크가 포함되어 있습니다.
  2. Update-load.kml 파일을 Google 어스에 로드합니다. 이 파일에는 업데이트 데이터(point123의 새 이름)가 포함된 파일을 로드하는 두 번째 네트워크 링크가 포함되어 있습니다.

첫 번째 파일에는 두 위치 지점이 포함된 데이터 파일을 로드하는 네트워크 링크가 포함되어 있습니다. 이러한 위치 지점이 포함된 위치표시에는 ID가 할당되어 있습니다. 세 번째 파일에는 업데이트 파일을 추가하는 다른 네트워크 링크가 포함되어 있습니다. 변경 요소는 point123의 위치표시 이름을 수정합니다.

다음은 이 예에서 사용된 4개의 파일입니다. 먼저 이 Point-load.kml 파일에는 데이터 파일 원본(Point.kml)을 로드하는 네트워크 링크가 포함되어 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLink>
<name>Loads Point.kml</name>
<Link>
<href>http://developers.google.com/kml/documentation/Point.kml</href>
</Link>
</NetworkLink>
</kml>

다음은 데이터 원본(두 위치 지점)이 포함된 Point.kml 파일입니다. ID가 'point123'인 위치 지점이 수정될 지점입니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<Placemark id="pm123">
<name>point123</name>
<Point> <coordinates>-95.44,40.42,0</coordinates> </Point>
</Placemark> <Placemark id="pm456"> <name>point456</name>
<Point> <coordinates>-95.43,40.42,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

다음은 두 번째 네트워크 링크 파일(Update-load.kml)입니다. 이 파일은 업데이트 정보가 포함된 파일을 로드합니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLink>
<name>Update</name>
<Link>
<href>http://developers.google.com/kml/documentation/NetworkLinkControl-Update.kml</href></Link> </NetworkLink>
</kml>

마지막으로 다음은 업데이트 정보가 포함된 KML 파일(NetworkLinkControl-Update.kml)입니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLinkControl>
<Update>
<targetHref>http://developers.google.com/kml/documentation/Point.kml</targetHref>
<Change>
<Placemark targetId="pm123"> <name>Name changed by Update Change</name>
<!-- coordinates remain the same -->
</Placemark>
</Change> </Update>
</NetworkLinkControl>
</kml>

만료

기본적으로 데이터는 링크를 통해 Google 어스에 한 번만 로드됩니다. KML 데이터를 최신 상태로 유지하기 위해 링크 또는 아이콘 요소에서 <href> 요소로 로드된 모든 데이터에 대해 새로고침 모드(refreshMode)만료 시(onExpire)로 지정할 수 있습니다. 기본적으로 HTTP 만료 헤더에서 만료 시간을 지정하지만, 이제 KML 네트워크 링크 컨트롤에 만료(expires) 시간을 지정할 수 있습니다. 시간은 XML 일시(XML 스키마 파트 2: 데이터 유형 2차 버전 참조)로 표현됩니다. HTTP 헤더와 KML 만료 시간이 모두 지정된 경우 KML 만료 시간이 우선 적용됩니다.

예 1: HTTP 서버 만료 시간을 사용한 만료

이 예는 설명을 위한 용도로만 제공되며, 새로고침 모드만료 시를 설정하는 아이콘이 포함된 지면 오버레이를 보여줍니다. KML 만료 시간이 설정되지 않았으므로, 이 예에서는 HTTP 서버 만료 시간이 사용됩니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>refreshMode onExpire</name>
<Snippet maxLines="10">
Image automatically reloads according to http
server expiration.
</Snippet>
<GroundOverlay>
<Icon>
<href>http://www.someserver.com/image.jpeg</href>
<refreshMode>onExpire</refreshMode>
</Icon>
<LatLonBox>
<!-- from edit session in earth -->
<!-- The roof of a building in the Presidio -->
<north>37.80385180177469</north>
<east>-122.4558710620651</east>
<south>37.80337403503347</south>
<west>-122.4564295653771</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>

예 2: KML 만료 시간을 사용한 예

다음 예는 임의로 선택한 좌표에 위치표시를 전달합니다. 이 예에는 새로고침 모드만료 시인 링크가 포함되어 있습니다. 이 경우 새로운 KML <expires> 요소를 사용하여 만료 날짜/시간이 Python 스크립트로 지정됩니다. 이 KML 만료 시간은 HTTP 헤더에 지정되어 있을 수 있는 모든 시간보다 우선 적용됩니다.

다음은 <href> 및 <refreshMode> 요소가 있는 링크를 포함한 KML 네트워크 링크입니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<NetworkLink>
<Link>
<href>http://dev.someserver.com/cgi-bin/expires.py</href>
<refreshMode>onExpire</refreshMode>
</Link>
</NetworkLink>
</Document>
</kml>

이 Python 스크립트는 만료 시간을 [현재 시간 + 11초]로 설정하고 위치표시의 좌표를 새로고침합니다.

#!/usr/bin/python

import random
import time
lat = random.random() * 180. - 90.
lon = random.random() * 360. - 180.
now = time.time()
future = time.gmtime(now + 11)
y = future[0]
mo = future[1]
d = future[2]
h = future[3]
mi = future[4]
s = future[5]
iso8601 = '%04d-%02d-%02dT%02d:%02d:%02dZ' % (y,mo,d,h,mi,s)
print 'Content-type: application/vnd.google-earth.kml+xml'
print
print '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'
print '<kml xmlns=\"http://earth.google.com/kml/2.1\">'
# must be child of <kml>
print '<NetworkLinkControl>'
print '<expires>%s</expires>' % iso8601
print '</NetworkLinkControl>'
print '<Placemark>'
print '<name>placemark expires %s</name>' % iso8601
print '<Point>'
print '<coordinates>%f,%f,0</coordinates>' % (lon,lat)
print '</Point>'
print '</Placemark>'
print '</kml>'

라디오 스타일 항목이 포함된 폴더

이제 목록 스타일 요소를 사용하고 라디오 폴더의 목록 항목 유형을 지정하여 라디오 스타일 항목이 포함된 폴더를 만들 수 있습니다. 다음 예에서는 새 목록 스타일 요소를 사용하는 방법을 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>ListStyle radiofolder</name>
<Folder>
<name>radioFolder Folder</name>
<Style>
<ListStyle>
<listItemType>radioFolder</listItemType>
</ListStyle>
</Style>
<Placemark>
<name>north</name>
<Point>
<coordinates>-114,41.79,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>south</name>
<Point>
<coordinates>-114,41.78,0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml>

다음은 장소 패널에 이 폴더와 위치표시 하위 항목이 표시되는 방식입니다.