pythonでgooglemap情報を扱う方法まとめ

概要

googlemapデータを機械学習の元ネタにするために、データの取り扱い方を調べたのでまとめておく。

地名から座標(緯度経度)、詳細住所を取得する

pipでインストール

pip install pygeocoder


あとはpythonで書くだけ。

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 国会議事堂

ふむ、簡単にかける割にはすごい。

特定の座標周辺の地図を画像として保存

次は、上記で得た座標を元に周辺の地図画像をダウンロードしてみる。
基本的には以下URLを参考にした。

Google Static Maps 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)

f:id:t_nkb:20161221131234p:plain

ちゃんとホワイトハウス周辺の地図が保存できた。さすがグーグル、使いやすくできてる。
細かなパラメータについては上記リンクを参照。