[追記]
2018/08からGoogleMapのポリシーが変わり、APIキーの取得が必須になったようです。
追って対策を調べて記載変更しますが、現状は、このままの方法ではAPIキーのエラーで位置情報の取得ができません。
概要
googlemapデータを機械学習の元ネタにするために、データの取り扱い方を調べたのでまとめておく。
pygeocoderを使って地名から座標(緯度経度)、詳細住所を取得する
pipでライブラリをインストール
pip install pygeocoder
あとはpythonで書くだけ。
例えば国会議事堂の住所が知りたければこんな感じ。googlemapで検索して出てくるワードであれば、住所が紐付けられている模様。
from pygeocoder import Geocoder address = '国会議事堂' results = Geocoder.geocode(address) print(results[0].coordinates) # => (35.675888, 139.744858) result = Geocoder.reverse_geocode(*results.coordinates, language="ja") print result # => 日本, 〒100-0014 東京都千代田区永田町1丁目7−1 国会議事堂
ふむ、簡単にかける割にはすごい。
urllibを使って特定の座標周辺の地図を画像として保存
次は、上記で得た座標を元に周辺の地図画像をダウンロードしてみる。
基本的には以下URLを参考にした。
Google Maps Static API入門
Google Mapの地図の画像を取得するには – 山本隆の開発日誌
pipでライブラリをインストール
sudo pip install urllib
以下のように、地図画像を取得して保存させる。
自分で書いておいてなんだけど、いまいち美しくない…。
from pygeocoder import Geocoder import urllib def download_pic(url,filename): img = urllib.urlopen(url) localfile = open( "./" + str(filename) + ".png" , 'wb') localfile.write(img.read()) img.close() localfile.close() address = 'ホワイトハウス' results = Geocoder.geocode(address) print(results[0].coordinates) result = Geocoder.reverse_geocode(*results.coordinates, language="ja") print result html1 = "https://maps.googleapis.com/maps/api/staticmap?center=" html2 = "&maptype=hybrid&size=640x480&sensor=false&zoom=18&markers=" html3 = "&key=googleから取得したキーコードを入力" axis = str((results[0].coordinates)[0]) + "," + str((results[0].coordinates)[1]) html = html1 + axis + html2 + axis + html3 print html download_pic(html,address)
これを実行すると、ちゃんとホワイトハウス周辺の地図が保存できる。
さすがグーグル、使いやすくできてる。
細かなパラメータについては上記リンクを参照。