[ApacheでKMLやKMZファイルを公開する場合の設定]
[Google Earthが名乗るUserAgent名]
[ogr2ogrコマンドでESRI ShapeをKMLに変換する例]
KMLファイルフォーマット Version 2 †
- KMLファイルフォーマット Version 2
- KMLファイルの特徴
- KMLファイルで使用する文字コード
- .kmlと.kmz
- KMLファイル構造の簡単な説明
- 階層構造によるグループ化
- サンプル(<Document>・<Folder>)
- 座標の表現
- 単一図形の表現
- 複合図形の表現
- サンプル(<LineString>・<Point>・<Polygon>・<MultiGeometry>)
- 画像の表現
- Google Earth上への地理情報の配置
- サンプル(<GroundOverlay>)
- 視点の設定
- サンプル(<LookAt>)
- 表示スタイルの設定
- サンプル(<Style>)
- KMLファイル内で別のKMLファイルを参照する。
- その他
- サンプル(<ScreenOverlay>)
- Index
- 参考資料
Version 2(Google Earth version3対応)
KML(Keyhole Markup Language)はポイントやライン,画像,ポリゴンのような地理情報をGoogle Earthクライアントに表示するために使用するファイルフォーマットです。
このページはKeyholeのウエブサイトのGoogle Earth KML DocumentationやGoogle_Earth_KML.pdfをベースに作成しいてます。
KMLファイルの特徴 †
KMLはXMLのサブセットとして定義されており,以下のような特徴があります。
- 地球表面上の位置を識別する注記やアイコンの定義
- 各情報毎に異なる視点設定(camera)
- 地表面上に衛星写真や航空写真,主題図等の画像をマッピング
- 各情報の表示スタイルを設定
- HTML構文を使用した属性情報を記述することができ,HTML内にはハイパーリンクや画像の配置が可能
- 階層型フォルダ(CADやGISアプリケーションでは画層やレイヤー)による位置情報のグループ化
- アニメーションやプレイバック用のタイムスタンプ情報を持つ
- インターネットやLAN,ローカルのファイルからダイナミックにKMLファイルを取得することが可能
KMLファイルで使用する文字コード †
KMLファイルはUnicodeのUTF-8エンコードにより記述する必要があります。ASCII文字のみを使用する場合には気にする必要はありませんが,日本語の情報を付加する場合には注意する必要があります。
.kmlと.kmz †
KMLファイルには2種類の拡張子があります。
- .kmlは通常の非圧縮テキストデータです。
- .kmzはkmlを単にzip圧縮したファイルです。
ネットワークによる配信を行う場合には,zip圧縮を行ったkmz形式を利用するのが望ましいでしょう。また,kmz形式ではKMLファイルだけではなく,KMLで使用する画像も含めて圧縮し配信することができます。
Apacheを使用して.kmlや.kmzを配信する設定は,ApacheでKMLやKMZファイルを公開する場合の設定 を御覧下さい。
KMLファイル構造の簡単な説明 †
KMLはGoogle Earth上に色々な地理情報データや画像を配置し表示するための地理情報ファイルフォーマットです。
KMLはXMLをベースに構造化されたタグ付のファイルフォーマットになっています。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> ... </kml>
- 1行目にはXMLヘッダを記述します。(変更してはいけません)
- 2行目はKML version2.0のネームスペース宣言です。(変更してはいけません)
- ファイルの終端は</kml>です。
- <kml ...> ... </kml>の内部に,データ本体を記述します。
上記の例はKML version2.0の場合の記述となります。version2.1の場合は,kmlタグ部を以下のように記述して下さい。
<kml xmlns="http://earth.google.com/kml/2.1">
データ本体部分には,図形情報(<Point>,<LineString>,<Polygon>...)だけではなく,それに付随する属性情報(<name>,<description>...)や表示スタイル<Style>,3次元的に俯瞰する位置を決定する<LookAt>等,豊富なデータ構造を階層構造で記述することができます。
階層構造によるグループ化 †
概要 †
<Folder>を使用することにより,複数のデータを階層的にグループ化することも可能です。これはCAD・GISアプリケーションでは一般的な画層(Layer)を階層化したものと考えることが出来ます。ただしGoogle Earthにおける"Layer"はFolderとは別の目的で使用していますので,注意して下さい。
Google Earthの左側に位置するパネルの階層構造は<Folder>タグによって定義されています。
<Folder>の上位に位置するトップレベルの階層として<Document>を定義することも可能です。<Document>タグは,その内部で定義されたスタイル等の適用範囲を決定します。
<Document>は最上位<Folder>と考えることも出来ます。複数の<Document>が存在可能ですし,必要がなければ省略しても構いません。
フォルダ階層構造のリーフはベクトルの地理情報を表現する<Placemark>と地表面に画像をマップする<GroundOverlay>となります。
<Document> †
KMLファイルのFolderのトップ階層となります。このタグは必須ではありませんが,<Style>や<Schema?>を定義する場合に必要となります。
<Document> <name>ドキュメント名称</name> <description>サンプルドキュメント</description> <visibility>1</visibility> <Style id="my_style"> <Icon> <href>./images/my_image.png</href> </Icon> </Style> <Folder>...</Folder> ... </Document>
<Document>タグ内に以下の要素を持たせることで,<Document>への属性情報や3D空間内での視点等を与えることが出来ます。
| <description> | 説明文をつける |
| <LookAt> | デフォルトの視点を設定 |
| <name> | 名称を与える |
| <visibility> | デフォルトの表示/非表示を設定 |
以下の要素を持たせることで,<Document>ブロック内の表示スタイルを定義することが出来ます。
<Document>タグは以下の要素を子要素として持ちます。内部に<Document>を持つことも可能です。
- <Folder>
- <Placemark>
- <GroundOverlay>
- <ScreenOverlay>
- <NetworkLink>
- <Document>
<Folder> †
特定の情報をグループ化し階層的なFolder構造を定義します
<Folder> <name>フォルダ名称</name> <description>サンプルフォルダ</description> <Placemark> ...地理情報を記述 </Placemark> <Folder>...</Folder> ... </Folder>
<Folder>タグは以下の要素の子要素となります。
- <Document>
- <Folder>
- <NetworkLink>
<Folder>タグ内に以下の要素を持たせることで,<Folder>への属性情報や3D空間内での視点等を与えることが出来ます。
| <description> | 説明文をつける |
| <LookAt> | デフォルトの視点を設定する |
| <name> | 名称を与える |
| <visibility> | デフォルトの表示/非表示を設定する |
| <open> | デフォルトのFolder階層の展開有無を設定する |
以下の要素を持たせることで,<Folder>ブロック内の表示スタイルを定義することが出来ます。
<Folder>タグは以下の要素を子要素として持ちます。内部に<Folder>を持つことも可能です。
- <Placemark>
- <GroundOverlay>
- <ScreenOverlay>
- <NetworkLink>
- <Folder>
サンプル(<Document>・<Folder>) †
この節は本ページトップからダウンロードできるサンプルデータをGoogle Earthで表示しながら御覧下さい。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<name>Bubble://別館/KMLフォーマット/サンプル</name>
...
<Folder>
<name>Document・Folderサンプル</name>
<description>1階層目のフォルダ</description>
<open>0</open>
<visibility>0</visibility>
<Folder>
<name>Folder2-1</name>
<description>2階層目の1番目のフォルダ</description>
<visibility>0</visibility>
<open>0</open>
</Folder>
<Folder>
<name>Folder2-2</name>
<description>2階層目の2番目のフォルダ</description>
<visibility>0</visibility>
<open>0</open>
</Folder>
</Folder>
...
</Document>
</kml>
これはDocumentとFolder階層構造の簡単なサンプルです。内容は何もない空っぽの階層ですが,Google Earthにフォルダ階層を表示することができます。
本ページのサンプルファイルをGoogle Earthに読み込むと,Placesパネル内に
[Document] : Bubble://別館/KMLフォーマット/サンプル
[Folder] : Document・Folderサンプル
[Folder] : Folder2-1
[Folder] : Folder2-2
という階層が表示されます。
このサンプルは,<name>と<description>といった名称や説明などの情報を与えるタグや,<visibility>や<open>といった表示状態を設定するタグの簡単なサンプルにもなっています。
| タグ名 | 説明 |
| <name> | DocumentやFolderの名称 |
| <description> | DocumentやFolderの説明文 |
| <visibility> | DocumentやFolder内の地理情報をデフォルトで表示するかどうか |
| <open> | 階層ツリーをデフォルトで展開するかどうか |
座標の表現 †
<coordinates> †
POINTやLINESTRING等Geometryの頂点位置を決定する要素として<coordinates>を用います。
- 座標は経度,緯度(WGS84)を使用します。
- 経度の範囲は-180°〜180°,緯度の範囲は-90°〜90°を取ります。
- 標高はWGS84回転楕円体表面からのメートル単位で表現します。
- 標高がGoogle Earth上でどのように表現されるかは,上位要素<Point>・<LineString>・<Polygon>の<altitudeMode>の設定によっても変化します。
<coordinates>経度,緯度[,標高] [経度,緯度,[標高]] ...</coordinates>
- 1つの頂点は経度,緯度の順番でコンマ","で区切って表現します
- 複数の頂点は空白文字(スペースや改行)で区切って表現します
<coordinates>131.0,33.0 129.5,33.0 136.0,36.0</coordinates>
<coordinates>タグは以下の要素の子要素となります。
- <LinearRing>
- <LineString>
- <Point>
この要素の子要素はありません。
単一図形の表現 †
単一の図形を表現する場合は<LineString>,<Point>,<Polygon>要素を使用します。
それらを組み合わせて一つの情報とするには次節で説明する<MultiGeometry>要素を使用して下さい。
<LineString> †
<LineString>は線分図形を表現します。
<Folder>
...
<Style id="sample">
<LineStyle>...</LineStyle> 表示スタイルを設定
</Style>
...
<Placemark>
<styleUrl>#sample</styleUrl> 表示スタイルを参照
<LineString>
...
<coordinates>
-88.3,30.2,0.0 ... -21.3,42.8,0.0
</coordinates>
</LineString>
<Placemark>
</Folder>
高度がGoogle Earth上でどのように表現されるかは,子要素の<altitudeMode>の設定によっても変化します。
<LineString>は以下の要素の子要素となります。
<LineString>に以下の要素を持たせることで,<LineString>の座標やGoogle Earth上での表示方法を設定することができます。
| <altitudeMode> | 標高の表示モードを設定 |
| <extrude> | 挿引体として表示 |
| <tessellate> | 地形の形状に合わせた表示 |
<LineString>は以下の要素を子要素として持ちます。
- <altitudeMode>
- <coordinates>
- <extrude>
- <tessellate>
<LineString>に色や線の太さなどの表示スタイルを与える場合には,親要素の<Placemark>内の<styleUrl>で,表示スタイルを与える必要があります。
Google Earthで表示する場合に<styleUrl>を設定していない時は,幅1ピクセルの白いラインとして表示されます。
<Point> †
<Point>は点による位置を表現します。
<Folder>
...
<Style id="sample">
<IconStyle>...</IconStyle> 表示スタイルを設定
</Style>
...
<Placemark>
<styleUrl>#sample</styleUrl> 表示スタイルを参照
<Point>
<coordinates>-111.9,33.3,355.2</coordinates>
</Point>
</Placemark>
</Folder>
高度がGoogle Earth上でどのように表現されるかは,子要素の<altitudeMode>の設定によっても変化します。
<Point>は以下の要素の子要素となります。
<Point>に以下の要素を持たせることで,<Point>のGoogle Earth上での表示方法を設定することができます。
| <altitudeMode> | 標高の表示モードを設定 |
| <extrude> | 挿引体として表示 |
<Point>は以下の要素を子要素として持ちます。
- <altitudeMode>
- <coordinates>
- <extrude>
LineString>に色や線の太さなどの表示スタイルを与える場合には,親要素の<Placemark>内の<styleUrl>で,表示スタイルを与える必要があります。
Google Earthで表示する場合に<styleUrl>を設定していない時は,デフォルトのアイコンが使用されます。
<Polygon> †
<Polygon>はポリゴン図形を表現します。
ポリゴン図形は以下の要素で構成されます。
- <outerBoundaryIs>はポリゴン図形の外形線を表現します。
- <innerBoundaryIs>はポリゴン図形内の穴を表現します。
- <innerBoundaryIs>は必須ではありません。
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-88.3, 30.2, 0.0 ... -88.3, 30.2, 0.0
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
...
</innerBoundaryIs>
</Polygon>
- 高度がGoogle Earth上でどのように表現されるかは,子要素の<altitudeMode>の設定によっても変化します。
<Polygon>は以下の要素の子要素となります。
<Polygon>は以下の要素を子要素として持ちます。
<outerBoundaryIs>と<innerBoundaryIs>は以下の要素のみを子要素として持ちます。
<LinearRing>は以下の要素を子要素として持ちます。
<LinearRing>内で定義される<coordinates>の頂点座標は,始終点が同一(閉じている)となることに注意して下さい。
複合図形の表現 †
<MultiGeometry> †
一つ以上の図形(Point,LineString,Polygon)により定義される,複合図形です。複数の図形により構成される3次元の建物のようなフィーチャを設定します。 また他の<MultiGeometry>も含むことが出来ます。
<MultiGeometry>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</MultiGeometry>
<MultiGeometry>は以下の要素の子要素となります。
<MultiGeometry>は以下の要素を子要素として持ちます。
- <LineString>
- <MultiGeometry>
- <Point>
- <Polygon>
<GeometryCollection>(使用は推奨されません) †
この要素は推奨されません。<MultiGeometry>を使用して下さい。
一つ以上の図形(<Point>・<LineString>・<Polygon>)により定義される,複合図形です。
また他の<GeometryCollection>も含むことが出来ます。
<GeometryCollection>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</GeometryCollection>
<GeometryCollection>は以下の要素の子要素となります。
サンプル(<LineString>・<Point>・<Polygon>・<MultiGeometry>) †
この節は本ページトップからダウンロードできるサンプルデータをGoogle Earthで表示しながら御覧下さい。
未完
画像の表現 †
画像の配置は,<GroundOverlay>を使用して地球表面に張りつける地図や衛星画像,<Point>等を使用して位置情報として配置するアイコン画像共に<Icon>要素により定義します。
<GroundOverlay>を使用して,画像を地球表面に張り付ける場合は<LatLonBox>により範囲枠を設定する必要があります。
<Icon> †
<Icon>は子要素の<href>によって指定されたローカルあるいはリモートにおかれた画像を使用して,地球表面へのテクスチャマップや位置情報としてのイメージアイコンを定義します。
使用できる画像形式はjpeg,png,gif,tiffの4形式です。
<Icon>を定義する要素を以下に示します。
| <href> | 使用する画像の位置を指定します。画像の位置はローカル内に保存されたファイルあるいはリモートサーバに格納されたファイルとなります。 |
| <x> | 画像を配置する時の横方向のオフセット量をピクセル単位(整数値)で指定します。 |
| <y> | 画像を配置する時の縦方向のオフセット量をピクセル単位(整数値)で指定します。 |
| <w> | 画像を配置する時の横方向のサイズをピクセル単位(整数値)で指定します。 |
| <h> | 画像を配置する時の縦方向のサイズをピクセル単位(整数値)で指定します。 |
<Icon> <href>images/red_circle.gif</href> <x>0</x> <y>0</y> <w>48</w> <h>48</h> </Icon>
<Icon>は以下の要素の子要素となります。
- <GroundOverlay>
- <ScreenOverlay>
- <Style>
<Icon>は以下の要素を子要素として持ちます。
<LatLonBox> †
<LatLonBox>は地球表面に画像を張り付ける場合の範囲枠を東西南北の緯度経度で指定します。
<GroundOverlay> <visibility>1</visibility> <Icon> <href>GoogleEarth/example.jpg</href> </Icon> <drawOrder>0</drawOrder> <LatLonBox> <rotation>36.9994</rotation> <north>39.3082</north> <south>38.5209</south> <east>-95.1583</east> <west>-96.3874</west> </LatLonBox> </GroundOverlay>
<LatLonBox>は以下の要素を親要素として持ちます。
<LatLonBox>は以下の要素を子要素に持ちます。
Google Earth上への地理情報の配置 †
Google Earthの地表面上に地理情報を配置するための最小単位は<Placemark>です。
また,地球表面上にデフォルトの表示とは異なる画像(例えば雲の画像や,何らかの主題図等)を張り付ける場合には<GroundOverlay>を使用します。
<Placemark> †
<Placemark>は情報を持ったベクトルデータの配置を定義します。
位置情報だけではなく,名称や概要情報等の属性,表示スタイルや表示のON/OFF状態を要素として持ち,Google Earth上に地理情報を配置し3D画面上でスムーズに見ることができ,さらに情報を調べることができる最小単位となります。
- 楕円体表面以下の標高は,自動的に地表面に配置されます。
- 高度がGoogle Earth上でどのように表現されるかは<altitudeMode>タグの値によっても変化します。
<Placemark>
<name>サンプル</name>
<description>LineStringサンプル</description>
<visibility>1</visibility>
<LookAt>
<heading>0.0</heading>
<tilt>57.0</tilt>
<range>600.0</range>
<latitude>33.0</latitude>
<longitude>131.0</longitude>
</LookAt>
<LineString>
<altitudeMode>relativeToGround</altitudeMode>
<coordinates>
130.999,32.999,0.0
130.999,33.001,0.0
131.001,33.001,0.0
131.001,32.999,0.0
</coordinates>
</LineString>
</Placemark>
<Placemark>は以下の要素の子要素となります。
<Placemark>は以下の要素を子要素として持ちます。
- <LineString>
- <Polygon>
- <Point>
- <address>
- <description>
- <LookAt>
- <name>
- <snippet>
- <Style>
- <styleUrl>
- <visibility>
<GroundOverlay> †
<GroundOverlay>は地球表面に張り付ける画像の設定を行います。
張り付ける画像は<Icon>,張り付ける範囲は<LatLonBox>で指定します。
<GroundOverlay> <visibility>1</visibility> <Icon> <href>GoogleEarth/example.jpg</href> </Icon> <drawOrder>0</drawOrder> <LatLonBox> <rotation>36.9994</rotation> <north>39.3082</north> <south>38.5209</south> <east>-95.1583</east> <west>-96.3874</west> </LatLonBox> </GroundOverlay>
その他指定できる要素を以下に示します。
| <color> | 画像に合成する色や透明度の情報を指定 |
| <LookAt> | デフォルトの視点を設定 |
| <name | 名称を設定 |
| <visibility> | デフォルト状態の表示On/Offを指定 |
| <Icon> | 張り付ける画像を指定 |
| <drawOrder> | 0〜99の範囲で重ねる順番を指定。値が大きい程上に重ねて表示される |
| <rotation> | <Icon>で指定した画像を,画像中央を軸として回転させる角度を指定。<LatLonBox>内でも指定可能。 |
| <LatLonBox> | 画像を張り付ける範囲を東西南北の緯度経度で指定 |
<GroundOverlay>は以下の要素の子要素となります。
<GroundOverlay>は以下の要素を子要素として持ちます。
- <color>
- <LookAt>
- <name>
- <visibility>
- <Icon>
- <drawOrder>
- <rotation>
- <LatLonBox>
- <refreshInterval>
サンプル(<GroundOverlay>) †
この節は本ページトップからダウンロードできるサンプルデータをGoogle Earthで表示しながら御覧下さい。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
...
<Folder>
<name>GroundOverlayサンプル</name>
<open>0</open>
<visibility>0</visibility>
<GroundOverlay>
<name>標高色別表示</name>
<open>0</open>
<LookAt>
<heading>0.0</heading>
<tilt>1.0</tilt>
<range>100000.0</range>
<longitude>130.5</longitude>
<latitude>31.5</latitude>
</LookAt>
<visibility>0</visibility>
<Icon>
<href>N31E130.jpg</href>
</Icon>
<drawOrder>0</drawOrder>
<LatLonBox>
<rotation>0.0</rotation>
<north>32.0</north>
<south>31.0</south>
<east>131.0</east>
<west>130.0</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>GroundOverlayサンプル2</name>
<description>立体感強調シェード画像</description>
<open>0</open>
<color>88ffffff</color>
<LookAt>
<heading>0.0</heading>
<tilt>1.0</tilt>
<range>100000.0</range>
<longitude>130.5</longitude>
<latitude>31.5</latitude>
</LookAt>
<visibility>0</visibility>
<Icon>
<href>N31E130aspect.jpg</href>
</Icon>
<drawOrder>1</drawOrder>
<LatLonBox>
<rotation>0.0</rotation>
<north>32.0</north>
<south>31.0</south>
<east>131.0</east>
<west>130.0</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>
本ページのサンプルファイルをGoogle Earthに読み込むと,Placesパネル内に
[Document] : Bubble://別館/KMLフォーマット/サンプル
[Folder] : GroundOverlayサンプル
[GroundOverlay] : 標高色別表示
[GroundOverlay] : 立体感強調シェード画像
という階層が表示されます。
"標高色別表示"階層は,標高を色別に表示した画像,"立体感強調シェード画像"階層は地形の傾斜方向によって陰影処理をした画像です。両方とも画像の範囲は北緯31〜32度,東経130〜131度となっており<LatLonBox>により指定したエリアに貼り付けられていることがわかります。
また,"立体感強調シェード画像"が<color>タグによって半透明化されていることにも注意してください。Google EarthのPlacesパネルで"立体感強調シェード画像"フォルダを選択し,半透明化のスライドバーを変化させることにより,下に表示された画像の立体感を調整することができます。
"標高色別表示"階層の表示をOnにした状態とOffにした状態で,"立体感強調シェード画像"の透明度を変更し,背景画像の見え方がどのように変化するかを確認してください。
視点の設定 †
<Placemark>や<GroundOverlay>等により配置した地理情報を,Google Earth上でより見やすくするために,<LookAt>を使用して視点の設定を行います。
<LookAt> †
<LookAt>はGoogle Earth上に配置された地理情報を3D空間上で見せるための,デフォルトの視点設定を定義します。
視点設定は<Placemark>や<GroundOverlay>の様な地理情報の実態だけではなく,<Document>,<Folder>といったグループ単位でも設定可能です。また一つのKML内で複数設定することが可能です。
視点設定を行う諸数値は以下の要素により与えられます。
| <heading> | 視点の向いている方向。真北を0として反時計周りを+として指定します。目標の東側から西向きに俯瞰する場合には270あるいは-90を指定します。 |
| <tilt> | 目標を見下ろす角度です。0を指定した場合には真上から見下ろす姿勢,90を指定した場合には水平方向から見る姿勢となります。 |
| <range> | 目標物からの距離をメートルで指定します。正確には目標物位置の回転楕円体表面からの距離になります。 |
| <latitude> | 視点の中心となる位置の緯度を指定します。 |
| <longitude> | 視点の中心となる位置の経度を指定します。 |
<LookAt> <heading>0.0</heading> <tilt>57.0</tilt> <range>600.0</range> <latitude>33.0</latitude> <longitude>131.0</longitude> </LookAt>
上の例は,公共座標II系の原点位置(阿蘇山付近)を南側から見下ろすための視点設定例です。
<LookAt>は以下の要素の子要素となります。
- <Folder>
- <Document>
- <Placemark>
- <GroundOverlay>
<LookAt>は以下の要素を子要素として持ちます。
サンプル(<LookAt>) †
この節は本ページトップからダウンロードできるサンプルデータをGoogle Earthで表示しながら御覧下さい。
未完
表示スタイルの設定 †
<Placemark>や各ジオメトリをGoogle Earth上にどのように描画するかを<Style>要素により設定します。<Style>要素はID属性つきで定義され,各<Placemark>やジオメトリはIDを参照し,それぞれの色や線幅,スケール等表示スタイルを設定します。
これにより,共通の<Style>をあらかじめ設定し,各要素で共有することが可能になります。
また,<StyleMap>によりフィーチャーの選択状態毎のスタイルを設定することもできます。
<Style> †
<Style id="...">は各<Placemark>や<Folder>からID属性により参照され,Google Earth上に表示する,アイコン・ジオメトリスケール・色・文字スケールを指定します。
ID属性により参照されるため,複数の<Placemark>や<Folder>でスタイルを共有することができます。
各<Placemark>や<Folder>内で<styleUrl>によりIDを指定し,対応するIDの<Style>設定を反映させます。
<Style id="...">要素内の<IconStyle id="...">・<LabelStyle id="...">・<LineStyle id="...">・<PolyStyle id="...">の各要素により,ジオメトリ種別毎のスタイルを設定します。
<Placemark>内に<Style>を定義することもできます。この場合その<Placemark>内のみで有効なローカルスタイルとなり,<styleUrl>により参照される各ジオメトリ毎のスタイル設定をオーバーライドします。
<Style>は以下の要素の子要素となります。
<Style>は以下の要素を子要素として持ちます。
- <IconStyle>
- <LabelStyle>
- <LineStyle>
- <PolyStyle>
<IconStyle> †
<IconStyle>は<Icon>の描画スタイルを設定します。
| <Icon> | 使用するアイコン画像を指定します。 |
| <color> | 描画する色を指定します。不透明度100%の色がデフォルト値です。 |
| <colorMode> | 未完成 |
| <heading> | 通常視点の移動に合わせて変化するアイコンの向きを固定します。 |
| <scale> | デフォルト値は1.0です。 |
<IconStyle>は以下の要素の子要素となります。
- <Style>
<IconStyle>は以下の要素を子要素として持ちます。
<LabelStyle> †
<LabelStyle>は<LineString>の描画スタイルを設定します。
<LabelStyle>は以下の要素の子要素となります。
- <Style>
<LabelStyle>は以下の要素を子要素として持ちます。
<LineStyle> †
<LineStyle>は<LineString>の描画スタイルを設定します。
<LineStyle>は以下の要素の子要素となります。
- <Style>
<LineStyle>は以下の要素を子要素として持ちます。
<PolyStyle> †
<PolyStyle>は<Polygon>の描画スタイルを設定します。
| <color> | 描画する色を指定します。不透明度100%の色がデフォルト値です。 |
| <colorMode> | 未完成 |
| <fill> | ポリゴン内を塗りつぶすかどうかを指定します。 |
| <outline> | アウトラインを描画するかどうかを指定します。アウトラインを描画する場合の色と線幅は<LineStyle>により指定します。 |
<PolyStyle>は以下の要素の子要素となります。
- <Style>
<PolyStyle>は以下の要素を子要素として持ちます。
<StyleMap> †
<StyleMap id="...">を使用することで"normal"時と"highlight"時それぞれ個別にアイコンのスタイルを設定することができます。
2つ状態設定は,<StyleMap>の子要素である<Pair>で行います。
<StyleMap>内では具体的なスタイルの設定は行えません。別途<Style>を設定して,<Pair>要素内の<styleUrl>で参照する必要があります。
<StyleMap>は以下の要素の子要素となります。
- <Document>
<StyleMap>は以下の要素を子要素として持ちます。
- <Pair>
サンプル(<Style>) †
この節は本ページトップからダウンロードできるサンプルデータをGoogle Earthで表示しながら御覧下さい。
未完
KMLファイル内で別のKMLファイルを参照する。 †
KMLファイル内にさらにローカルやリモートに配置されたKMLファイルへの参照を設定することができます。
<NetworkLink> †
<NetworkLink>はローカルやリモートのKMLファイルを参照する設定を行います。<Url?>タグを使用してKMLファイルへのリンクを設定します。
<NetworkLink>内には視点変更や時間に基づいた情報を更新する設定をすることができます。
また,<viewFormat?>タグを使用することで,クライアント側の現在の視点方向やバウンディングボックスのような視点情報をサーバ側へ送信することもできます。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<visiblity>1</visbility>
<NetworkLink>
<name>NE US Radar</name>
<flyToView>1</flyToView>
<Url>
<href>
http://www.example.com/geotiff/NE/MergedReflectivityQComposite.kml
</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>30</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>7</viewRefreshTime>
<viewFormat>
BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth],
[lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading]
</viewFormat>
</Url>
<refreshVisibility>1</refreshVisibility>
</NetworkLink>
</Document>
</kml>
<NetworkLink>は以下の要素の子要素となります。
<NetworkLink>は以下の要素を子要素として持ちます。
- <flyToView?>
- <name>
- <refreshVisibility?>
- <Url?>
- <visibility>
その他 †
<ScreenOverlay> †
<ScreenOverlay>はスクリーン上に配置する画像の設定を行います。
画像の大きさと縦横比率をそのままの状態で,スクリーンの中央に配置する場合には以下のように記述します。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <ScreenOverlay id="khScreenOverlay756"> <description> This screen overlay uses fractional positioning to put the image in the exact center of the screen </description> <name>Simple crosshairs</name> <visibility>0</visibility> <Icon> <href>http://myserver/myimage.jpg</href> </Icon> <overlayXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/> <screenXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/> <rotation>39.37878630116985</rotation> <size x="0" y="0" xunits="pixels" yunits="pixels"/> </ScreenOverlay> </kml>
<ScreenOverlay>は以下の要素の子要素となります。
<ScreenOverlay>は以下の要素を子要素として持ちます。
サンプル(<ScreenOverlay>) †
この節は本ページトップからダウンロードできるサンプルデータをGoogle Earthで表示しながら御覧下さい。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<name>Bubble://別館/KMLフォーマット/サンプル</name>
...
<Folder>
<name>ScreenOverlayサンプル</name>
<open>0</open>
<visibility>1</visibility>
<ScreenOverlay id="TitleGoogleEarth">
<description>
画像左上をスクリーンの左上に合わせる
</description>
<name>タイトルバナー</name>
<visibility>1</visibility>
<Icon>
<href>http://bubble.atnifty.com/.../TitleGoogleEarth.png</href>
</Icon>
<overlayXY x="0.0" y="1.0" xunits="fraction" yunits="fraction"/>
<screenXY x="0.0" y="1.0" xunits="fraction" yunits="fraction"/>
<rotation>0.0</rotation>
<size x="0" y="0" xunits="pixels" yunits="pixels"/>
</ScreenOverlay>
<ScreenOverlay id="CenterMarker">
<description>
画像中央をスクリーンの中央に合わせる
</description>
<name>センターマーカー</name>
<visibility>1</visibility>
<Icon>
<href>http://bubble.atnifty.com/.../CenterMarker.png</href>
</Icon>
<overlayXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
<screenXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
<rotation>0.0</rotation>
<size x="0" y="0" xunits="pixels" yunits="pixels"/>
</ScreenOverlay>
</Folder>
</Document>
</kml>
一つ目の<ScreenOverlay id="TitleGoogleEarth?">...</ScreenOverlay>では,画像の左上隅をスクリーンの左上隅に合わせて配置した例です。
スクリーン左上にバナー画像が表示されます。
二つ目の<ScreenOverlay id="CenterMarker?">...</ScreenOverlay>では,画像の中心をスクリーンの中心に合わせて配置した例です。
スクリーン中央にセンターマーカー画像が表示されます。
<overlayXY>と<screenXY>の役割を理解していないと,思ったとおりの位置に配置されませんので注意して下さい。
- 画像のどの位置を
- スクリーンのどの位置に
合わせるかを指定します。
Index †
- <address>
- <altitudeMode>
- <atom:author>(version2.2以降)
- <atom:link>(version2.2以降)
- <atom:name>(version2.2以降)
- <begin?>
- <Camera?>(version2.2以降)
- <Change?>(version2.1以降)
- <color>
- <colorMode>
- <cookie>
- <coordinates>
- <Create?>(version2.1以降)
- <Delete?>(version2.1以降)
- <description>
- <Document>
- <drawOrder>
- <east>
- <end?>
- <expires?>(version2.1以降)
- <extrude>
- <Feature?>(version2.2以降)
- <fill>
- <flyToView?>
- <Folder>
- <geomColor>(version2.0以降の使用は推奨されない)
- <GeometryCollection>(version2.0以降の使用は推奨されない)
- <geomScale>(version2.0以降の使用は推奨されない)
- <GroundOverlay>
- <h>
- <heading>
- <href>
- <Icon>
- <IconStyle>
- <ImagePyramid?>(version2.2以降)
- <innerBoundaryIs>
- <key>
- <labelColor>(version2.0以降の使用は推奨されない)
- <LabelStyle>
- <latitude>
- <LatLonAltBox?>(version2.1以降)
- <LatLonBox>
- <LinearRing>
- <LineString>
- <LineStyle>
- <linkDescription>
- <linkName>
- <listItemType?>(version2.1以降)
- <ListStyle?>(version2.1以降)
- <Lod?>(version2.1以降)
- <Location?>(version2.1以降)
- <longitude>
- <LookAt>
- <maxLodPixels?>(version2.1以降)
- <maxSessionLength?>(version2.2以降)
- <message>
- <minLodPixels?>(version2.1以降)
- <minRefreshPeriod>
- <Model?>(version2.1以降)
- <MultiGeometry>
- <name>
- <NetworkLink>
- <NetworkLinkControl?>
- <north>
- <ObjArrayField?>
- <ObjField?>
- <opacity>(version2.0以降の使用は推奨されない)
- <open>
- <Orientation?>(version2.1以降)
- <outerBoundaryIs>
- <outline>
- <overlayXY>
- <Pair>
- <parent?>
- <PhotoOverlay?>(version2.2以降)
- <Placemark>
- <Point>
- <Polygon>
- <PolyStyle>
- <range>
- <refreshInterval>
- <refreshMode?>
- <refreshVisibility?>
- <Region?>(version2.1以降)
- <ResourceMap?>(version2.2以降)
- <rotation>
- <Schema?>
- <Scale?>(version2.1以降)
- <scale>
- <ScreenOverlay>
- <screenXY>
- <SimpleArrayField?>
- <SimpleField?>
- <size>
- <south>
- <snippet>
- <Style>
- <StyleMap>
- <styleUrl>
- <targetHref?>(version2.1以降)
- <tessellate>
- <tilt>
- <TimePeriod?>
- <TimeInstant?>
- <timePosition?>
- <type>
- <href>
- <Update?>(version2.1以降)
- <Url?>
- <viewBoundScale?>
- <viewRefreshMode?>
- <viewRefreshTime?>
- <viewFormat?>
- <ViewVolume?>(version2.2以降)
- <visibility>
- <w>
- <west>
- <width>
- <x>
- <y>
参考資料 †
[ApacheでKMLやKMZファイルを公開する場合の設定]
[Google Earthが名乗るUserAgent名]
[ogr2ogrコマンドでESRI ShapeをKMLに変換する例]
Last-modified: Sat, 08 Nov 2008 18:34:30 JST (495d)
