さて、本日はgeopyを使ってジオコーディングをしてみようと思います。
geopyとは
ジオコーディング用のPythonライブラリですね。GIS系のPythonライブラリではかなりメジャーです。ジオコーディングとは?という方は以下のエントリーをご参照ください。
www.gis-py.com
インストール
pip install geopy でOKです。
サンプルコード
東京都庁をジオコーディングしてみようと思います。
# -*- coding: utf-8 -*- from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent="test") 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']
これも簡単にできました。
ジオコーディングするなら鉄板のライブラリですので、興味のある方はぜひ使ってみてください。