kml データを利用する

■ kml ファイルとは

 KML (Keyhole Markup Language) は、地理データを格納する XML ベースの形式で、OGC (Open Geospatial Consortium) の管理する公式標準です。Google Earth などのアプリケーションが KML の表示に対応しています。
  1. kml ファイル kml とは  KMLの基本  KML学習手帳  Reference  サンプル
  2. 参考サイト kmlを作成  kmlエクスポート  AGtoKML  KML/CSV変換

■ kml ファイルの利用

 kml ファイルは、Google Earth で開くと簡単に表示できますが、Google Maps に直接読み込んで表示することも出来ます。 
 kml ファイル(下記左)とその Google Maps での表示例(下記右)を以下に示します。その Google Maps ファイルは、こちらです。
 

■ kml データの構造

 kml ファイルは、ヘッド部,書式情報部,オブジェクト部の3つの部分で構成されています。構造については、google のサイトに記述が有ります。また具体的な例は、こちらにあります。 参考
 国土数値情報の行政区域データを kml ファイルに変換した例について見てみましょう。 参考
  1. 国土数値情報サイトから ***.shp や ***.gml などの行政境界座標データファイルをダウンロードします。
  2. その行政境界データを変換ソフト QGIS を利用して ***.kml に変換します。
  3. そのファイルは右上図のようになっています。参考 →
  4. 右図の .kml ファイルの構造を見ると、
    1. 最初の2行に XML宣言部分があります。(緑部)
    2. 境界線を記述するデータは、<Polygon>・・・<coordinates>・・・の中に、「経度,緯度 経度,緯度 ・・・」の形で組り込まれています。 参考
    3. その間に、本体の名前やスタイルが記述されています。
    4. <coordinates>の中の「経度,緯度 経度,緯度 ・・・」の形のデータを、[[経度,緯度],[経度,緯度],・・・] のような2次元配列に変換して、次に述べる Google Maps JavaScript のデータとして組り込みます。
  5. なお、 ***.gml 形式の行政区域データには、<gml:posList>の後に、「緯度 経度 緯度 経度・・・」の形で組み込まれているので、***.kml に変更することなく同様な処理が可能です。(右下図) →

■ Google Maps JavaScript に取込み  参考

 ここでは、上で述べたように2次元配列データを Google Maps JavaScript に取り込み、行政境界線を引いてみましょう。
  1. まず行政境界座標データを、[[経度,緯度],[経度,緯度],・・・] のような2次元配列として取り込みます。
  2. そのデータをGoogle Maps JavaScript の polyline データとして利用します。
  3. 勿論そのデータをエンコードして利用することも出来ます。↓
     
  4. [緯度,経度] の2次元配列データを取り込んだ地図が表示されます。↓

■ Google Static Maps に取込み  参考

 2次元配列位置データは次のように Google Static Maps取り込み、表示することも出来ます。ただし、2048文字までの文字数制限があるので、データ量の多い行政境界座標データの表示には向いていません。必要なら更にエンコードします。
◆ 2次元配列位置データを、path=緯度,経度|緯度,経度|・・・ の形で、Static Maps の path データとして取込みます。↓ 参考
◆ 表示例

■ 参考サイト