住所から座標をもとめるジオコーディングの方法

Table of Content

目的

地名、住所が示す場所に対して、地理座標を与えるジオコーディング(geocoding)を行う方法を説明します。

Google Map

以前はGoogleMapのジオコーディングのAPIがお手軽に使えましたが、昨今は、APIキー取得にはクレジットカード登録が必須になってしまい使用するための敷居が高くなっています。
https://developers.google.com/maps/documentation/geocoding/start?hl=ja

Yahoo!ジオコーダAPI 

1日5万回の実行まで使えます。
https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html

実際に当方が使用したPythonでの実装例は以下のようになります。

https://github.com/mima3/yakusyopdf/blob/master/create_geo.py

特に注意するのはrecursiveパラメータで、もし、ぴったしの住所がなかった場合、上のレベルで検索します。
recursiveパラメータがtrueの場合、「東京都千代田区ほげ町」が存在しなければ「東京都千代田区」で検索した結果をかえしてくれます。recursiveパラメータがfalseの場合は上位レベルでの検索は行いません。

なお、座標データはXMLまたはJSONで取得可能です。

ジオコーダDAMS(Distributed Address Matching System)

いままではWebサービスでしたがDAMSはローカルにジオコーディング用の環境を作成できます。
http://newspat.csis.u-tokyo.ac.jp/geocode/modules/dams/index.php?content_id=1
APIの制限を気にせずにローカルの環境で実行できるのは大きな強みだと考えられます。

その他、Googleのジオコーダとの違いは以下に記載されています。
http://newspat.csis.u-tokyo.ac.jp/geocode/modules/smartfaq/category.php?categoryid=4

pydams

PythonからDAMSを使用できるライブラリです。
https://github.com/hottolink/pydams

ただしこのpythonのライブラリに指定しているパッチを当てると一部の住所の検索ができなくなりますので注意が必要です。(修正済み)
https://github.com/hottolink/pydams/issues/5

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です