시간 및 애니메이션

목차

소개

KML의 모든 지점에는 지점과 연결된 시간 데이터가 포함될 수 있습니다. 이러한 시간 데이터는 데이터의 표시 여부가 특정 기간이나 한 시점으로 설정되도록 제한하는 효과가 있습니다. KML 파일이 로드될 때 전체 데이터세트를 가져오지만, 데이터의 어떤 부분을 표시할지는 Google 어스 사용자 인터페이스의 타임 슬라이더에서 제어합니다.

KML에는 타임 프리미티브(TimePrimitive)에서 파생되는 두 가지 요소가 있습니다.

  • 타임 스탬프(TimeStamp) - 특정 지점의 단일 시점을 지정합니다.
  • 타임 스팬(TimeSpan) - 특정 지점의 <begin> 및 <end> 시간을 지정합니다.

또한 이러한 요소는 다음과 같이 Google 확장 네임스페이스로 복사됩니다.

  • gx:TimeStamp
  • gx:TimeSpan

그러면 두 요소를 추상 보기의 하위 요소로 추가할 수 있습니다. 자세한 내용은 아래에서 추상 보기(AbstractView)가 포함된 시간 섹션을 참조하세요.

Google 어스는 타임 프리미티브 요소가 있는 지점이 포함된 KML 파일을 열 때 타임 슬라이더를 표시합니다. Google 어스는 특정 파일의 KML 지점에서 찾을 수 있는 처음 시간과 최근 시간을 기준으로 타임 슬라이더의 시작 단위와 종료 단위를 자동으로 선택합니다. 사용자는 슬라이더와 재생 버튼을 사용하여 전체 순서를 '재생'하거나 표시할 기간을 개별적으로 선택할 수 있습니다.

Google 어스에서 타임 슬라이더를 사용 설정하려면 보기 > 시간 표시로 이동한 다음 자동 또는 항상을 선택합니다(기본값은 자동임). 아래 샘플에서는 '현재 선택한 폴더로 시간 제한' 옵션이 '끄기'(기본값)로 설정되어 있다고 가정합니다.

타임 스탬프 및 GPS 데이터

타임 스탬프는 일반적으로 지점 위치표시(Point Placemark)와 연결되어 있습니다. 경로를 따라 각 위치 지점에서 위치표시 아이콘을 짧게 표시하면 위치표시에 애니메이션을 적용하는 효과를 얻을 수 있습니다. 이러한 기술은 GPS 추적 기기에서 가져온 데이터를 KML 형식으로 표시하는 경우에 특히 유용하게 사용할 수 있습니다. 최상의 효과를 얻으려면 특정 데이터세트의 타임 스탬프를 일정한 간격으로 가져와야 합니다.

타임 스탬프는 보통 여러 위치에 표시되는 소량 데이터세트에 사용됩니다(예: 경로를 따라 이동하는 위치표시). 이 경우 여러 지점이 다른 시점에 다른 위치에서 표시되므로, 종종 화면에서 동시에 보이게 될 수도 있습니다. Google 어스 사용자 인터페이스의 타임 슬라이더에는 시간 창이 포함되어 있으며, 이를 통해 타임 슬라이더의 한 '부분'을 선택하고 기간의 처음부터 끝까지 이동할 수 있습니다.

이러한 기술을 사용하여 싱가포르의 독일 유럽 학교에서는 'Schroeder'라는 애칭을 가진 고래상어에 태그를 부착하고, GPS 기기로 인도양에서 아프리카 대륙으로 이어지는 고래상어의 여정을 수개월 동안 추적했습니다. 관심 있는 사용자는 연구 그룹 웹사이트에 게시된 KMZ 파일을 Google 어스에서 실행하여 Schroeder의 여정을 확인할 수 있습니다.

이 KML 파일에서 빨간색 경로는 연구 팀의 추적이 끊긴 시점까지 Schroeder가 이동한 경로를 보여줍니다. 화면 상단에 표시된 타임라인에 맞춰 노란색 점(장소표시 아이콘)이 경로를 따라 애니메이션으로 표시됩니다. 파란색 화살표는 파도의 방향을 보여주는 지면 오버레이의 일부입니다. 연구 팀에서는 파도의 패턴이 고래상어의 주식인 플랑크톤이 흐르는 방향을 바꾸었고, 이 점이 Schroeder가 갑자기 방향을 바꾸는 데 영향을 미쳤다고 판단하고 있습니다.

이 예제에서는 지점 위치표시에 <TimeStamp> 요소가 포함되어 있습니다. 빨간색 유도선(LineString)과 파란색 지면 오버레이에는 위치표시와 연결된 시간 요소가 없습니다(시간 요소는 항상 존재함).

KML 아이콘 whale_shark.kml(싱가포르의 독일 유럽 학교 Seeadlerpost 팀의 허가 하에 사용됨)

타임 스팬

한 형태에서 다음 형태로 즉시 전환되는 다각형(Polygon)과 이미지 오버레이를 표시하려면 타임 스팬 개체를 사용하여 기간의 시작과 끝을 지정합니다. 이 기술은 일반적으로 지면 오버레이와 같은 다각형 및 이미지의 변화 과정을 보여주기 위해 사용됩니다. 예를 들어 빙하 전선의 후퇴 경로, 화산재 확산 경로, 수년에 걸친 벌목 진행 상태 등을 표시하려는 경우에 이 기술을 사용할 수 있습니다.

타임 스팬은 특정 시점에 하나의 지점만 보고, 한 이미지에서 다음 이미지로 즉시 전환하고 싶은 경우에 사용합니다. 타임 스팬이 중첩되지 않고 연속되어 있는지 확인해야 합니다. 타임 스팬이 포함된 데이터세트의 경우, Google 어스 사용자 인터페이스의 타임 슬라이더에는 타임 슬라이더를 따라 기간의 처음부터 끝까지 매끄럽게 이동하는 포인터가 포함되어 있습니다. 한 지점에서 다음 지점으로 전환되는 과정은 즉각적으로 이루어집니다.

Brian Flood는 여러 주가 통합되면서 미국이 성장하는 과정을 보여주는 흥미로운 KML 프리젠테이션을 만들었습니다. 아래 표시된 KML 파일은 시작 위치 지점만 있는 타임 스팬 개체를 사용하므로 주(다각형)가 추가된 후에 표시된 상태로 남아 있게 됩니다.

KML 아이콘 us_states.kml(Brian Flood의 허가 하에 사용됨)

모델에 애니메이션 적용

타임 스팬 요소가 사용된 또 다른 예는 James Stafford가 만든 런던 아이 애니메이션입니다. 이 예제에서는 런던 아이라 불리는 거대한 회전 관람차를 모델로 사용합니다. 이 모델은 일련의 위치표시에서 참조되며, 각 위치표시는 모델의 점진적인 여러 회전 이미지와 각 위치표시가 얼마 동안 표시될지 나타내는 타임 스팬을 사용합니다.

KML 아이콘 london_eye.kmz(James Stafford의 허가 하에 사용됨)

시간 지정 방법

dateTime은 XML 스키마 시간(XML 스키마 파트 2: 데이터 유형 두 번째 버전 참조)에 기반합니다. 값은 yyyy-mm-ddThh:mm:sszzzzzz로 표현될 수 있으며, 여기서 T는 날짜와 시간 사이의 구분자이고, 시간대는 Z(협정 세계시인 경우) 또는 zzzzzz(협정 세계시를 기준으로 한 ±hh:mm으로 표현)입니다. 또한 이 값을 날짜로만 표현할 수도 있습니다. KML 2.2 참조<TimeStamp> 요소에서 예제를 확인하세요.

추상 보기(AbstractView)가 포함된 시간

Google 어스 5.0은 <gx:TimeSpan><gx:TimeStamp> 요소가 포함된 Google 확장 네임스페이스를 지원합니다. 이 요소는 <TimeSpan><TimeStamp> 요소의 사본으로서, <LookAt><Camera> 요소에 시간 정보를 추가하는 데 사용할 수 있습니다.

추상 보기에 시간 정보를 포함하면 표시되는 지점, 햇빛 및 과거 이미지에 영향을 미칩니다. 추상 보기 내에서 <gx:TimeSpan> 또는 <gx:TimeStamp>를 사용하면 Google 어스의 공간 시간에서 특정 위치로 빠르게 이동할 수 있습니다.

시간이 지정되면 다른 시간이 다시 지정될 때까지, Google 어스에서는 표시할 이미지, 지점 및 햇빛을 결정하는 데 계속해서 이 시간을 사용합니다. KML에는 '현재'라는 개념이 없으므로 Google 어스에서 현재 시간으로 돌아오려면 <gx:TimeStamp> 내에 <when>2999</when>(또는 미래의 날짜)를 설정해야 합니다.

Google 확장 네임스페이스의 요소를 사용할 경우 다음과 같이 먼저 KML 파일의 <kml> 실행 요소에 올바른 네임스페이스 URI를 추가해야 합니다.

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

모든 지오 브라우저에서 gx가 프리픽스로 지정된 확장 네임스페이스를 지원하지는 않지만, Google 어스 5.0에서는 지원됩니다.

예제

KML 아이콘 abstractviews_timeprimitive_example.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

  <Document>
    <name>Views with Time</name>
    <open>1</open>
    <description>
      In Google Earth, enable historical imagery and sunlight,
      then click on each placemark to fly to that point in time.
    </description>

    <Placemark>
      <name>Sutro Baths in 1946</name>
      <Camera>
        <gx:TimeStamp>
          <when>1946-07-29T05:00:00-08:00</when>
        </gx:TimeStamp>
        <longitude>-122.518172</longitude>
        <latitude>37.778036</latitude>
        <altitude>221.0</altitude>
        <heading>70.0</heading>
        <tilt>75.0</tilt>
      </Camera>
    </Placemark>

    <Placemark>
      <name>Palace of Fine Arts in 2002</name>
      <Camera>
        <gx:TimeStamp>
          <when>2002-07-09T19:00:00-08:00</when>
        </gx:TimeStamp>
        <longitude>-122.444633</longitude>
        <latitude>37.801899</latitude>
        <altitude>139.629438</altitude>
        <heading>-70.0</heading>
        <tilt>75</tilt>
      </Camera>
    </Placemark>

  </Document>
</kml>

예제: 경로를 따라 이동하는 위치 지점 표시

다음 예제는 타임 스탬프 요소를 사용하여 경로를 따라 이동하는 위치표시를 보여줍니다. 타임 스탬프가 좁은 간격으로 샘플링되므로 KML 파일이 재생될 때 위치표시 아이콘이 경로를 따라 애니메이션으로 표시됩니다.

KML 아이콘 TimeStamp_example.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Points with TimeStamps</name>
<Style id="paddle-a">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/A.png</href>
</Icon>
<hotSpot x="32" y="1" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="paddle-b">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/B.png</href>
</Icon>
<hotSpot x="32" y="1" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="hiker-icon">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/ms/icons/hiker.png</href>
</Icon>
<hotSpot x="0" y=".5" xunits="fraction" yunits="fraction"/>
</IconStyle>
</Style>
<Style id="check-hide-children">
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<styleUrl>#check-hide-children</styleUrl>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:02Z</when>
</TimeStamp>
<styleUrl>#paddle-a</styleUrl>
<Point>
<coordinates>-122.536226,37.86047,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:20Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536422,37.860303,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:43Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536688,37.860072,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:04Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536923,37.859855,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:24Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537116,37.85961000000001,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:46Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537298,37.859336,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:07Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537469,37.85907,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:27Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537635,37.858822,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:51Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537848,37.858526,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:11Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538044,37.858288,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:33Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538307,37.858064,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:56Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538601,37.857837,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:09:19Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.53887,37.857604,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:09:45Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.539052,37.857262,0</coordinates>
</Point>
</Placemark> . . .
</Document>
</kml>

애니메이션의 하위 요소 숨기기

이러한 예제에서, 일반적으로 문서(Document)에 목록 스타일(ListStyle) 요소를 포함하고 checkHideChildren을 지정하여 개별 위치표시가 목록 보기에 표시되지 않도록 하는 것이 유용합니다. 다음 코드에는 이러한 추가 요소가 포함되어 있습니다. 문서에서 스타일 요소를 정의하고 있지만, 문서는 <styleUrl> 요소의 목록 스타일을 참조해야 한다는 점에 유의해 주세요.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name> . . .
<Style id="check-hide-children"> <!-- define the style for the Document -->
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<styleUrl>#check-hide-children</styleUrl> <!-- add the style to the Document -->
<Placemark>
<TimeStamp>
<when>2007-01-12</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536422,37.860303,0</coordinates>
</Point>
</Placemark> . . .
</Document>
</kml>

예제: 지면 오버레이(Ground Overlay)에 애니메이션 적용

다각형과 지면 오버레이에 애니메이션을 적용하려면 보통 아래의 예제와 같이 타임 스팬 요소를 사용해야 합니다. KML 파일에는 각 월에 해당하는 지면 오버레이 이미지가 포함되어 있으므로 애니메이션을 재생하여 풍경이 계절에 따라 변화하는 모습을 볼 수 있습니다. 한 해의 첫 3개월을 보여주는 코드의 일부는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <!-- TimeSpan is recommended for GroundOverlays -->
<Folder>
<name>BMNG-12months</name>
<GroundOverlay>
<name>Blue Marble - Jan</name>
<TimeSpan>
<begin>2004-01</begin>
<end>2004-02</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Jan.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>Blue Marble - Feb</name>
<TimeSpan>
<begin>2004-02</begin>
<end>2004-03</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Feb.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>Blue Marble - Mar</name>
<TimeSpan>
<begin>2004-03</begin>
<end>2004-04</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Mar.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay> . . . </Folder> </kml>
KML 아이콘 TimeSpan_example.kml(NASA 제공)

다음은 이 예제의 스크린샷입니다.

맨위로