Google Earth は 3D 画像で世界中の衛星写真を参照できるすごいアプリケーションです。
ですが、日本国内の場所を探そうとすると Google Maps のときと同様になかなか場所がわからなくて面倒です。
そこで、日本国内の Web の地図情報から、簡単に Google Earth で同じ場所を表示する仕組みを作ってみました。
使い方は簡単なんですが、IE のセキュリティ関係の確認とかについて書いていると長くなっちゃいました。
ここでは、map2earth の基本的な動作の仕組みについて説明します。
1.ユーザが Web browser で地図を表示している。
2.map2earth Bookmarklet を実行する。
3.map2earth Bookmarklet は、地図画面から位置情報の入った URL を取得して、それを引数として http://takanory.net/misc/map2earth スクリプトに渡す。
4.map2earth スクリプトは受け取った URL を解釈して、位置情報を日本測地系(Tokyo)から、 Google Earth が使用している WGS 84 測地系に変換する。
5.map2earth スクリプトは Yahoo!地図情報にアクセスし、対象となっている場所の地名を取得する。
6.4. と 5. で作成したデータを下に、Google Earth に読み込ませる kml ファイルを作成して出力する。
7.Web browser は kml ファイルを受け取ると自動的に Google Earth にそのデータを渡し、Google Earth でその場所が表示される。
なお、このコードを使用する場合は、re と httplib を PythonScript から使用できるようにする必要があります。 そのためには PythonScript で標準以外のモジュールを使う の記述を参考にして、下記のコードを GlobalModules/__init__.py に追記してください。:
ModuleSecurityInfo('re').declarePublic('compile', 'findall',
'match', 'search', 'split', 'sub', 'subn', 'error',
'I', 'L', 'M', 'S', 'X')
import re
allow_type(type(re.compile('')))
allow_type(type(re.match('x','x')))
ModuleSecurityInfo('httplib').declarePublic('HTTPConnection')
ModuleSecurityInfo('httplib').declarePublic('HTTPResponse')
from httplib import HTTPConnection
from httplib import HTTPResponse
allow_class(HTTPConnection)
allow_class(HTTPResponse)
また、出力される KML のコードはこんな感じで、非常にシンプルです。:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Placemark>
<name>東京都豊島区西池袋3丁目</name>
<View>
<longitude>139.704071265</longitude>
<latitude>35.7302483201</latitude>
<range>1000</range>
</View>
</Placemark>
</kml>
この map2earth を作成するのに参考にさせてもらったサイトです。