さて、本日はgeopyを使ってジオコーディングをしてみようと思います。
geopyとは
ジオコーディング用のPythonライブラリですね。GIS系のPythonライブラリではかなりメジャーです。ジオコーディングとは?という方は以下のエントリーをご参照ください。
www.gis-py.com
インストール
pip install geopy でOKです。
サンプルコード
東京都庁をジオコーディングしてみようと思います。
# -*- coding: utf-8 -*- from geopy.geocoders import Nominatim geolocator = Nominatim() location = geolocator.geocode(u"東京都庁") print location.address #住所 print location.latitude #緯度 print location.longitude #経度 print location.raw #ジオコーディングした結果の全ての情報
簡単ですね。最後のlocation.rawはジオコーディングした結果の全ての情報が格納されています。非常に便利です。
pandasとの連携
pandasのデータフレームにデータを格納することもできます。pandasについては以下エントリーで紹介しています。興味のある方はぜひ読んでみてください。
サンプルコード
東京、大阪、福岡のジオコーディング結果をpandasのデータフレームに格納するサンプルです。
# -*- coding: utf-8 -*- import pandas as pd df = pd.DataFrame({'name': [u'東京', u'大阪', u'福岡']}) from geopy.geocoders import Nominatim geolocator = Nominatim() from geopy.extra.rate_limiter import RateLimiter geocode = RateLimiter(geolocator.geocode, min_delay_seconds=1) df['location'] = df['name'].apply(geocode) df['point'] = df['location'].apply(lambda loc: tuple(loc.point) if loc else None) print df['location'] print "" print df['point']
これも簡単にできました。
ジオコーディングするなら鉄板のライブラリですので、興味のある方はぜひ使ってみてください。