Google Map APIを使って、簡単に geocoding や reverse geocoding が出来るPythonのモジュールがあります。
googlemaps 1.0.2
http://pypi.python.org/pypi/googlemaps/
ジオコーディングとは、住所や地名、駅名などの情報から、緯度・経度の座標値に変換する技術のことです。
住所から、緯度、経度への変換
> python Python 2.5.2 [MSC v.1310 32 bit (Intel)] onwin32 >>> from googlemaps import GoogleMaps >>> gmaps = GoogleMaps('API_Key') >>> address = u'岡山市' >>> lat, lng = gmaps.address_to_latlng(address) >>> print lat, lng 34.6551456 133.9195019
サンプルでは、Google MapのAPIキーを使っての説明をしていますが、Google Maps API v3からは、APIキーは不要になったので、APIキーを渡さなくても操作できます。
>>> from googlemaps import GoogleMaps >>> gmaps = GoogleMaps() >>> address = u'岡山市' >>> lat, lng = gmaps.address_to_latlng(address) >>> print lat, lng 34.6551456 133.9195019
Linux上でも同様に動きます。
$ python Python 2.6 [GCC 3.4.4 20050721 (Red Hat 3.4.4-2)] on linux2 >>> from googlemaps import GoogleMaps >>> gmaps = GoogleMaps() >>> address = u'岡山市' >>> lat, lng = gmaps.address_to_latlng(address) >>> print lat, lng 34.6551456 133.9195019
逆(緯度、経度から住所への変換)も可能です。
>>> destination = gmaps.latlng_to_address(34.6551456,133.9195019) >>> print destination 岡山市役所
その近辺の検索
「秋葉原周辺のWifiスポットのある喫茶店」?の検索結果の最初のもの「」Japan town acupuncture & Oriental Medicine, Inc.」がヒット
>>> local = gmaps.local_search('cafes w. free power near akihabara') >>> print local['responseData']['results'][0]['titleNoFormatting'] Japan town acupuncture & Oriental Medicine, Inc.「Okayama」に変ると「Ryokan Misono Kurashiki」がヒット
>>> local = gmaps.local_search('cafes w. free power near Okayama') >>> print local['responseData']['results'][0]['titleNoFormatting'] Ryokan Misono Kurashiki「Okayamaの近くのschool」の検索結果の4番目のもの
>>> local = gmaps.local_search('school near Okayama') >>> print local['responseData']['results'][3]['titleNoFormatting'] フラップアップゼミ「岡山市」に変ると「鬼ヶ島宮ノ松原キャンプ場」がヒット
>>> local = gmaps.local_search(u'school near 岡山市') >>> print local['responseData']['results'][3]['titleNoFormatting'] 鬼ヶ島宮ノ松原キャンプ場「岡山市の近くの学校」に変ると「KLCセミナー倉敷校」がヒット
>>> local = gmaps.local_search(u'学校 near 岡山市') >>> print local['responseData']['results'][3]['titleNoFormatting'] KLCセミナー倉敷校
0 件のコメント:
コメントを投稿