tsuda [学外公開] http://edu.tsuda.ac.jp/~mizutani/ home水谷 正大 Masahiro Mizutani

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つのことが判明した。

以下では、XMLファイルとしてのKMLについて詳しく理解するにはKML 入門用ドキュメントを検討する必要がある。 とくに、KML 入門用ドキュメントのチュートリアルが参考になる。

XMLファイルの特殊文字

まず、知っておかねばならないことはKMLがXML形式に従うということからくる制約である。 XMLでは次のような特殊文字が定められており、それらをXMLのタグで挾まれる文字列に利用する場合には工夫が必要である。

XML形式では、次の文字、アンパサント( & ), 小なり記号( < ), 大なり記号( > ), アポストロフィ( ' ), 二重引用符( " ) は特殊文字として扱う必要があるので、<タグ>文字列</タグ> で挟まれた「文字列」(<タグ> 文字列 </タグ>)ではそれらを直接に使ってはいけない。 以下のようして特殊文字を置き換えねばならない(置き換え文字列の最後はすべて「セミコロン」(;)で終わる):

特殊文字置き換え文字列
アンパサント (&)&amp;
小なり記号(<)&lt;
大なり記号(>)&gt;
アポストロフィ(')&apos;
二重引用符(")&quot;

アドレスマッチングした結果、KMLファイルを地図上に表示して、太平洋やらアフリカ大陸の真ん中にないやら表示されるような場合には、たいていの場合、このような文字の誤用が関わっているので、KMLファイルをエディタで開いてその内容を詳しく精査する必要がある。

Google マイマップの作成

Google Mapで地図の作成(マイマップ)については、Googleのマイマップの作成 、特に地図に写真や動画を埋め込むリッチ テキストや HTML 形式の説明文を追加するが参考になる(Google MapはGoogle Earthよりも低いレベルの情報を提供している)。 マイプレイスで作成したマイマップの各ピン(フラグ)のバルーン内で、説明を書き加えたり、そこからのリンクをはったり写真を貼り込むことができる。

KMLファイルにさらに情報を書き込む

map_kml_earth-export

左図のように編集中のマイマップにおいて、表示されている地図情報を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要素を使っている。

<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>
daito_higashi_map すると、右図のように表示され、リンクをクリックすることができるようになる。