お気に入り | 日本語 | ログイン

時間とアニメーション

目次

はじめに

KML 内のすべての Feature には、時間データを関連付けることができます。時間データを使用すると、データ セットが表示される期間や時点を制限できます。KML ファイルの読み込み時には完全なデータ セットが取得されますが、Google Earth ユーザー インターフェースの時間スライダを使ってデータのどの部分を表示するかを操作できます。

KML には、TimePrimitive から派生した 2 つの時間要素が用意されています。

  • TimeStamp - 特定の Feature の一時点を示します。
  • TimeSpan - 特定の Feature の開始時刻 <begin> と終了時刻 <end> を示します。

これらの要素は、Google 拡張名前空間でも以下の要素としてコピーされます。

  • gx:TimeStamp
  • gx:TimeSpan

これは、上記の要素を AbstractView 要素の子要素として指定できることを意味します。詳細については、後述のAbstractView での時間の指定をご覧ください。

Google Earth では、TimePrimitive が指定された Feature が含まれる KML ファイルを開くと、時間スライダが表示されます(時間スライダの開始時点と終了時点は、そのファイルの KML Feature 内に見つかった最も古い時間と最も新しい時間に基づいて自動的に決定されます)。ユーザーは、スライダと再生ボタンを使用して、全体を時系列で「再生」したり、特定の期間を選択して表示したりできます。

Google Earth で時間スライダを有効にするには、[表示] メニューから [時間を表示] を選択し、[自動] または [常に表示] を選択します(デフォルトは [自動] です)。これらのサンプルでは、[選択しているフォルダの時間に制限する] オプションがオフになっていることを前提としています(デフォルトはオフ)。

タイムスタンプと GPS データ

通常、TimeStamp は Point Placemark に関連付けられます。経路上の各位置の Placemark アイコンを順番に短く表示すると、Placemark をアニメーションのように移動表示できます。この手法は、GPS 追跡デバイスからインポートしたデータを KML で表示する場合に便利です。きれいに表示するには、指定されたデータ セットの TimeStamp を一定の間隔で取得する必要があります。

通常 TimeStamp は、複数の位置に表示する軽量のデータ セット(経路に沿って移動する Placemark など)に使用されます。このような場合は、表示範囲内には複数の Feature が配置され、それぞれの Feature が異なる表示間と表示位置を指定されています。Google Earth ユーザー インターフェースの時間スライダの時間ウィンドウでは、スライダ内の期間の「一部分」を選択し、その一定時間の開始から終了までの移動が表示されます。

German European School Singapore では、この手法を使用して、「シュローダー」という愛称のジンベイザメにタグを付け、GPS デバイスでこのサメがインド洋からアフリカ大陸に向かって移動する様子を数か月間追跡しました。興味のある方は、調査チームのウェブサイトに公開されている KMZ ファイルをご覧ください。

この KML ファイルでは、チームがシュローダーを見失うまでの移動経路が赤い線で示されます。画面上部に表示されるタイムラインに従い、この経路に沿って黄色の点(Placemark アイコン)がアニメーション表示されます。青い矢印は波動パターンの方向を示す地面オーバーレイの一部です。研究者は、シュローダーが突然方向転換したのは波動パターンの影響によるもので、波動パターンにより主な餌であるプランクトンの流れが決まるからだ、と主張しています。

この例では、Point Placemark に <TimeStamp> 要素を関連付けています。赤色の LineString と青色の GroundOverlay は、時間要素が関連付けられていないため常時表示されます。

KML icon whale_shark.kml (used by permission of Team Seeadlerpost, German European School Singapore) ""

タイムスパン

ポリゴンや画像がすばやく切り替わるオーバーレイを表示するには、TimeSpan オブジェクトを使用して期間の開始時点と終了時点を指定します。この手法は通常、地面オーバーレイのようなポリゴンや画像の変化(氷河の範囲が徐々に狭くなっていく様子や、火山灰の拡散、数年間に渡る森林伐採の進行状況など)を表現するために使用します。

TimeSpan は、特定の時点に 1 つの Feature のみを表示する状況において、ある画像から次の画像に表示をすばやく切り替えたい場合に使用します。複数の TimeSpan を使用する場合は、切れ目なく、かつオーバーラップしないようにする必要があります。Google Earth ユーザー インターフェースの時間スライダには、TimeSpan を含むデータ セット用に、期間の開始時点から終了時点までをスムーズに移動するポインタが表示されます。ある Feature から次の Feature への切り替えは瞬時に行われます。

ブライアン フラッド氏が作成した KML プレゼンテーションに、米国の各州が合衆国に加盟して国家が発展していく様子を表現したものがあります。この KML ファイルでは、開始時点のみが指定された TimeSpan オブジェクトが使用されているため、一度追加された州(ポリゴン)はその後も表示されたままとなります。

KML icon us_states.kml (used by permission of Brian Flood) ""

モデルのアニメーション

TimeSpan 要素を使用したもう 1 つの例は、ジェームス スタッフォード氏が作成したロンドン アイ(観覧車)のアニメーションです。この表示では、ロンドン アイのモデルが使用されています。このモデルは、一連の Placemark から参照されています。それぞれの Placemark には、異なる増分回転値と、表示期間を示す TimeSpan が指定されています。

KML icon london_eye.kmz (used by permission of James Stafford) ""

時間の指定方法

dateTime は、XML Schema の時間に基づいています(XML Schema Part 2: Datatypes Second Edition をご覧ください)。値は yyyy-mm-ddThh:mm:sszzzzzz として表記します。T は日付と時刻の区切り文字で、タイム ゾーンには Z(UTC) または zzzzzz(UTC からの時間差を ±hh:mm の形式で指定)を使用します。また、この値は日付のみで指定することもできます。具体例については、「KML 2.2 リファレンス」の <TimeStamp> 要素のセクションをご覧ください。

AbstractView での時間の指定

Google Earth 5.0 では、Google 拡張名前空間がサポートされており、<gx:TimeSpan> 要素と <gx:TimeStamp> 要素を含めることができます。これらの要素はそれぞれ <TimeSpan> 要素と <TimeStamp> 要素に対応し、<LookAt> 要素や <Camera> 要素に時間情報を追加するために使用できます。

AbstractView に時間情報を含めると、表示されている要素、太陽光、歴史イメージに影響します。AbstractView 内で <gx:TimeSpan><gx:TimeStamp> を使用することにより、Google Earth 上の特定の場所を、期間と時間を指定して飛行できるということです。

いったん指定した時間は、次に別の時間が指定されるまで記録され、その時間に合わせてイメージ、要素、太陽光が表示されます。KML では、「現在時間」という概念はサポートされていません。したがって、Google Earth で現在に戻るには、<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 Earth 5.0 ではサポートされています。

KML icon 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>

例: 目印が経路に沿って移動する様子を表示する

次の例では、TimeStamp 要素を使用して、経路に沿って Placemark を移動させる方法を示します。KML ファイルの再生時に TimeStamp を頻繁にサンプリングすることで、Placemark アイコンが経路に沿ってアニメーションのように移動する様子を表示できます。

KML icon 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 を指定し、個々の目印がリスト ビューに表示されないようにすると便利です。次のコードには、この追加要素が含まれています。なお、Document では Style 要素が定義されていますが、<styleUrl> 要素内で ListStyle を参照する必要もあります。

<?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>

例: 地面オーバーレイのアニメーション

通常、ポリゴンや地面オーバーレイをアニメーション表示する場合は、次の例のように TimeSpan 要素を使用します。この KML ファイルには月ごとの GroundOverlay 画像が含まれており、アニメーションを再生することで季節ごとの景色の移り変わりを表示できます。次のコード部分では、1 月 ~ 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 icon TimeSpan_example.kml (data courtesy of NASA)

この例の画面キャプチャを次に示します。

トップへ戻る