KMZ ファイル

KMZ ファイルとは

KMZ ファイルは、メインの KML ファイルと 0 個以上のサポート ファイルで構成され、それらが Zip ユーティリティを使用して「アーカイブ」と呼ばれる 1 つのユニットにパッケージ化されたものです。KMZ ファイルは 1 つのエンティティとして保存し、電子メールで送信することができます。NetworkLink はウェブ サーバーから KMZ ファイルを取得することができます。KMZ ファイルを解凍すると、メインの .kml ファイルとそのサポート ファイルが元の形式とディレクトリ構造に分離され、それぞれ元のファイル名と拡張子になります。アーカイブ形式であることに加えて、Zip 形式もまた圧縮されるので、アーカイブには 1 個の大きな KML ファイルしか含めることができません。KML ファイルの内容によりますが、この処理では通常は 10:1 の圧縮比になります。たとえば、10 KB の KML ファイルと 1 KB の KMZ ファイルを一緒に扱うことができます。

Google Earth と Google マップでは、KML ファイルと KMZ ファイルを直接読み取ることができ、ファイルを KMZ ファイルとして保存できます。デフォルトでは、メインの KML ファイルの名前は doc.kml です。

注: わかりやすくするため、この記事では KMZ アーカイブ内のメインの KML ファイルのことを doc.kml と呼びます。メインの KML ファイルには任意の名前を付けることができます。ただし、名前の末尾を .kml とし、.kml ファイルの数は 1 個だけにする必要があります。

doc.kml ファイルが 10 KB よりも大きい場合や、doc.kml ファイルから他のファイル(画像、サウンド ファイル、モデル、テクスチャ)を参照している場合は、KMZ ファイルを作成する必要があります。

推奨されるディレクトリ構造

このセクションでは、KML ファイルや KMZ ファイルを作成する際の簡単な推奨事項を示します。このセクションで使用されている例は Jimmy Buffett のウェブサイトに掲載されているものです。この例では KML 形式を使用して、予定されているコンサート ツアーや関連するハイライトを Google Earth 上に表示しています。

このツアーが含まれている KMZ ファイルをダウンロードしてください(許可を得て使用しています)。

注: Google Earth 6.0 では、KMZ ファイル内の相対参照を解決する場合に以下の一連のガイドラインに厳密に従う必要があります(特に以下のリストの 4 に注意してください)。以前のバージョンの Google Earth では、そうした相対参照の解決についてあまり厳密ではありませんでした。そのため、Google Earth 5.2 以前のリリースで動作していた一部の相対参照について、バージョン 6.0 以降で正常に動作させるために編集が必要になる場合があります。

KMZ ファイルを作成するときは次のガイドラインを参照してください:

  1. KMZ ファイルの内容を格納するフォルダを作成し、わかりやすい名前を付けます(たとえば buffetthawaiitour など)。
  2. デフォルトの KML ファイル(doc.kml、または自分で付けた名前)をこのフォルダ内の最上位に置きます。.kml ファイルは 1 つだけ含めます(Google Earth で KMZ ファイルを開くと、ファイルがスキャンされ、このリストにある最初の .kml ファイルが検索されます。それ以外の残りの .kml ファイルがアーカイブにあっても無視されます。アーカイブに .kml ファイルが複数含まれている場合は、どれが最初に検索されるかわかりません。そのため、含めるのは 1 つだけにする必要があります)。
  3. doc.kml ファイル内で参照する画像、モデル、テクスチャ、サウンド ファイル、またはその他のリソースを集めるために、メイン フォルダの中に 1 つまたは複数のサブフォルダを含めます。このディレクトリ構造の複雑さは、サポート ファイルの数や組織の設定によって異なります。
  4. 相対参照を使用します。 詳しくは外部ファイルへの参照をご覧ください。相対パスはすべて、前述の 1. に示したベース フォルダの中から始めます。たとえば、KMZ ファイル vacationJournal.kmz がデスクトップ上にあり、その doc.kml ファイルから、同じくデスクトップ上にあるファイル myFavoritePlace.jpg を参照している場合、doc.kml ファイル内の <href> は ../myFavoritePlace.jpg となります。
  5. KMZ ファイル内部のどのサブフォルダでも .kmz 拡張子を使用しないでください。.kmz 拡張子はアーカイブ自身の名前用に予約されています。

たとえば、Jimmy Buffett のツアー用の KMZ ファイルのファイル構造は次のようになっています:

サポート ファイルが 5 つしかないので、それらはすべてメイン フォルダ内部の files サブフォルダに集められています。ファイルを Google Earth に読み込んでからテキスト ブラウザにコピーして貼り付けると、すべての <href> 要素でそれらのサポート ファイルに対して相対参照が使われることがわかります(これらはツアーのアイコン、スクリーン オーバーレイ、サウンド ファイルを表しています)。

次の KML コードはアイコンの参照の 1 つで使われています:

<IconStyle>
  <scale>1.1</scale>
  <Icon>
    <href>files/icon_surfing.png</href>
  </Icon>
</IconStyle>

次の KML コードはサウンド ファイルへの参照で使われています:

<gx:SoundCue>
  <href>files/Margaritaville.mp3</href>
</gx:SoundCue>

外部ファイルへの参照

通常、doc.kml ファイルには、画像、アイコン、モデル、テクスチャ、サウンド ファイルなどの他のファイルへのリンクがいくつか含まれています。これらのファイルへの参照は href 属性(場合によっては <href> 要素)に含まれています。href は次の KML 要素にあります:

次のセクションで説明するように、これらの外部リンクは「絶対参照」か「相対参照」のどちらかになります。これらの参照からは、同じ KMZ ファイルの中にあるファイル、他の KMZ ファイルに含まれているファイル、またはウェブ上のどこかに保存されているファイルを参照できます。<Model> 内の <sourceHref> 要素を除いて、相対参照は常に doc.kml ファイルを基準として解決されます。詳しくは、相対参照の解決のセクションをご覧ください。

絶対参照と相対参照の違い

絶対参照には、リンク先のファイルの完全な URL が含まれています。絶対参照は、ファイルが中央のサーバーに保存される場合に便利であり、指定が明確です。ただし、ローカル ファイルに対して絶対参照を使用すると、ファイルが新しいシステムに移動した場合にリンクが無効になります。相対参照ではこうした問題を避けることができます。

次の例は、中央のサーバーに保存されたファイルへの絶対参照です:

<Icon>
  <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>

相対参照の解決

通常、相対参照は doc.kml ファイルを基準として解決されます。相対 URL はすべて、このファイルが含まれているディレクトリを基準として解決され、そのディレクトリは KMZ ファイルのルートと見なされます。ハワイ ツアーの例では、ベース URL は次のようになっています(KMZ ファイルをどこにダウンロードするかによって異なります):

buffetthawaiitour.kmz

別の KMZ ファイルにあるファイルを参照する場合(たとえば、margaritavillealbum.kmz に含まれている images/jimmyphoto.jpg を参照する場合など)は、「..」の表記を使ってディレクトリ構造の 1 つ上のレベルに移動します。この場合は現在の KMZ ファイル(buffetthawaiitour.kmz)から移動することになります:

<href>../margaritavillealbum.kmz/images/jimmyphoto.jpg"</href>

注: KMZ アーカイブ内の相対参照を解決するための規則は、ウェブ URL を解決するための RFC 3986 セクション 5 の基準に基づいています。ベース URL は doc.kml ファイルの場所に基づいて決まり、すべての相対 URL はそのベース URL を基準として解決されます。

例外: <Model> 内の <sourceHref>

<Model> 要素には、Google Earth に読み込むための COLLADA ファイルを指定する <Link> 要素が含まれています。COLLADA ファイルは 3D オブジェクトを指定するもので、.dae というファイル拡張子を持ちます。<Model> 要素には <Alias> 要素も含まれています。この要素には、<targetHref>(Google Earth が取得するテクスチャ ファイル)と <sourceHref>(COLLADA .dae ファイル内のテクスチャ ファイルに対して指定されるパス)の間のマッピングが含まれています。<sourceHref> 要素に相対パスが含まれている場合、Google Earth では、そのパスの基準が参照元の .dae ファイルであると見なされます(それ以外の場合はすべて、doc.kml ファイルが基準となります)。例を次に示します:

<Model>
.
.
.
  <Link>
    <href>MackyBldg.kmz/files/CU Macky.dae</href>
  </Link>
  <ResourceMap>
    <Alias>
      <sourceHref>../files/StairsnoCulling.jpg</sourceHref>
      <targetHref>../files/StairsnoCulling.jpg</targetHref>
    </Alias>
    <Alias>
      <sourceHref>../files/sideturretnoCulling.jpg</sourceHref>
      <targetHref>../files/sideturretnoCulling.jpg</targetHref>
	</Alias>
.
.
.
</Model>

KMZ アーカイブの作成

Zip アーカイブを作成するには Windows エクスプローラまたは Mac Finder を使用します。doc.kml ファイルと関連するリソースが含まれているフォルダの内容を選択し、[WinZip] > [Zip ファイルに追加....] などのオプションを選択します。 また、Java JAR ライブラリには、プログラミングを通じて Zip アーカイブの作成と抽出を行うための Zip ライブラリが付属しています。Linux にはコマンド ライン版の zip と unzip があります。

注: Zip アーカイブを作成する際は、フォルダそれ自体を選択するのではなく、必ず doc.kml ファイルが含まれているフォルダの「内容」を選択してください。

アーカイブを作成したら、.zip ファイル拡張子を .kmz に変更します。アーカイブからファイルを抽出するには、.kmz ファイル拡張子を .zip に戻し、Zip ユーティリティを使ってアーカイブを解凍します。

Google Earth と KMZ アーカイブ

<iframe> 要素の使用

Google Earth では、KML の <description> バルーンの中で、ほとんどの HTML 要素が標準のウェブブラウザでの扱いとまったく同様に扱われます。ただし、説明バルーン内の <iframe> は単純な HTML として扱われます。したがって、KML の特別な機能が認識されません。たとえば、<iframe> では KMZ リソースを表示できず、<a href="#my feature;flyto"> などのローカル アンカー リンクは認識されません。<iframe> 要素内の <src> 要素からは、ディスク上のローカル ファイルも、KMZ ファイル内部にあるファイルも参照できません。ブラウザからアクセスできるインターネット上の URL を参照する必要があります。