More About KMLファイル
ここでは、KMLファイルについてもう少し詳しく見てみよう。
東京大学空間情報科学研究センターのCSV形式アドレスマッチングサービスなどを経て、その結果をKMLファイルとしてGoogle Mapに読み込ませるためのデータ加工として、たとえば、Googleマップ KML/CSV相互変換で得られたKMLファイル(拡張子 .kml をつけてUTF-8で保存)は次のような塩梅になっていた(適宜改行してtabでインデントさせた)。。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.2"> <Document> <Placemark> <name>東京都立航空工業高等専門学校</name> <description>03-3801-0145 / 116-0003 / 東京都荒川区南千住8-52-1</description> <Point><coordinates>139.80902,35.73761,undefined</coordinates></Point> </Placemark> ... ... ... <Placemark> <name>早稲田大学文学部</name> <description>03-3203-4141 / 162-8050 / 東京都新宿区戸山1-24-1</description> <Point><coordinates>139.71764,35.70578,undefined</coordinates></Point> </Placemark> </Document>
これから次の3つのことが判明した。
- 1行目からKMLファイルは、MXL形式である。←「xml version="1.0"」と記載されている。
- また、1行目からKMLファイルはUTF-8文字符号化で保存されたファイルでなければならない。← 「encoding="UTF-8"」と記載されている。
- 2行目からXML形式としのKMLで使われるタグの名前空間は http://earth.google.com/kml/2.2 に従う。←「xmlns="http://earth.google.com/kml/2.2"」と記載されている
以下では、XMLファイルとしてのKMLについて詳しく理解するにはKML 入門用ドキュメントを検討する必要がある。 とくに、KML 入門用ドキュメントのチュートリアルが参考になる。
XMLファイルの特殊文字
まず、知っておかねばならないことはKMLがXML形式に従うということからくる制約である。 XMLでは次のような特殊文字が定められており、それらをXMLのタグで挾まれる文字列に利用する場合には工夫が必要である。
XML形式では、次の文字、アンパサント( & ), 小なり記号( < ), 大なり記号( > ), アポストロフィ( ' ), 二重引用符( " ) は特殊文字として扱う必要があるので、<タグ>文字列</タグ> で挟まれた「文字列」(<タグ> 文字列 </タグ>)ではそれらを直接に使ってはいけない。 以下のようして特殊文字を置き換えねばならない(置き換え文字列の最後はすべて「セミコロン」(;)で終わる):
特殊文字 | 置き換え文字列 | |
---|---|---|
アンパサント (&) | ⇒ | &amp; |
小なり記号(<) | ⇒ | < |
大なり記号(>) | ⇒ | > |
アポストロフィ(') | ⇒ | ' |
二重引用符(") | ⇒ | " |
アドレスマッチングした結果、KMLファイルを地図上に表示して、太平洋やらアフリカ大陸の真ん中にないやら表示されるような場合には、たいていの場合、このような文字の誤用が関わっているので、KMLファイルをエディタで開いてその内容を詳しく精査する必要がある。
Google マイマップの作成
Google Mapで地図の作成(マイマップ)については、Googleのマイマップの作成 、特に地図に写真や動画を埋め込むやリッチ テキストや HTML 形式の説明文を追加するが参考になる(Google MapはGoogle Earthよりも低いレベルの情報を提供している)。 マイプレイスで作成したマイマップの各ピン(フラグ)のバルーン内で、説明を書き加えたり、そこからのリンクをはったり写真を貼り込むことができる。
KMLファイルにさらに情報を書き込む
左図のように編集中のマイマップにおいて、表示されている地図情報をGoogle Map用およびGoogle Earth用のKMLファイルとして書き出すことができる。
その結果を参考にして、Map/Earthに読み込む前に直接KMLファイルを編集することを紹介してみよう。
Google Earth/Mapにピンでマークした場所に名称と説明を表示するためには、(UTF-8で保存したテキストファイルとして)KMLファイルでは次のXML書式に従って記述されていることが最低限必要であった(高さ情報が省楽されている場合には、「高度」は undefined で置き換えられているとする)。
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>名称</name> <description>(電話・住所などの情報)説明</description> <Point> <coordinates>十進経度,十進緯度,高度</coordinates> </Point> </Placemark> <Placemark> <name>名称</name> <description>(電話・住所などの情報)説明</description> <Point> <coordinates>十進経度,十進緯度,高度</coordinates> </Point> </Placemark> .... .... </Document> </kml>
たとえば、次のように <Placemark> 要素を追加しみてみよう。 Webページへのリンクと写真をピンをクリックして現れるバルーン内の説明として表すのである。 <description> 要素内で、<![CDATA[ から ]]> までは CDATA 要素の使った目印の記述的 HTMLで、その間にHTMLコードを書くことができることを利用している。
次の例では、次の3つのHTML要素を使っている。
- <br /> は強制改行
- <a href="リンク先URL" target="_blank">リンク文字列</a> は、リンク文字列をクリックすると指定したURLにジャンプする。 オプション target="_blank" の指定によって、新しいページとしてジャンプ先を開くようにしている。
- <img src="画像ファイルのURL" /> は、指定したURLにある画像を読み込むようにしている(ローカルコンピュータでインターネットからアクセス可能なWebサーバなどが稼働していない限り、ローカルファイルは指定できないことに注意)。 さらに、オプション width="ピクセル数" によって表示される画像ファイルの大きさを調整する必要もあるだろう(height="ピクセル数" を指定しなければ、幅 width に合わせて高さは自動調整される)。
<Placemark> <name>大東文化大学東松山校舎</name> <description> 0493-31-1512 / 355-8501 / 埼玉県東松山市岩殿560 <![CDATA[ <br /> <a http://www.daito.ac.jp/" target="_blank">http://www.daito.ac.jp</a> <br /> <img src="http://www.st.daito.ac.jp/~t045668/daito.png" width="100" /> ]]> </description> <Point> <coordinates>139.368374,36.002434,undefined</coordinates> </Point> </Placemark>すると、右図のように表示され、リンクをクリックすることができるようになる。