国名・都市名から色々なデータを取得する。
英語のHELPから使えそうなものを調べたのですが、ネットで検索したら沢山ヒットしました。

その内の一つ
pythonでgooglemap情報を扱う(地名から座標を取得、座標から地図画像を取得)方法まとめ
http://www.robotech-note.com/entry/2016/12/21/213024

ここでは、ヘルプから拾った内容を紹介

$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygeocoder
>>> help(pygeocoder)

国名・都市名でデータを取得できる。(Google Mapで検索できるものが使えそうです。)
"Japan","japan","JP","tokyo","osaka","paris","国会議事堂","us"等

$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pygeocoder import Geocoder
>>> result = Geocoder.geocode('hokaidou') #都市名が間違っていたがエラーになっていない
>>> print(result.country)
Japan
>>> print(result.postal_code)
None
>>> print(result.coordinates)
(43.2203266, 142.8634737)
>>> print(result.location)
None
>>> print(result.formatted_address)
Hokkaido, Japan
>>> print(result.country__short_name)
JP
>>> print(result.country__long_name)
Japan
>>> print(result.count)
1
>>> print(result.latitude)
43.2203266
>>> print(result.location_type)
APPROXIMATE
>>> print(result.longitude)
142.8634737
>>> print(result.raw)
[{'address_components': [{'long_name': 'Hokkaido', 'short_name': 'Hokkaido', 'types': ['establishment', 'natural_feature']}, {'long_name': 'Japan', 'short_name': 'JP', 'types': ['country', 'political']}], 'formatted_address': 'Hokkaido, Japan', 'geometry': {'bounds': {'northeast': {'lat': 45.5281272, 'lng': 145.8228658}, 'southwest': {'lat': 41.3858779, 'lng': 139.7602944}}, 'location': {'lat': 43.2203266, 'lng': 142.8634737}, 'location_type': 'APPROXIMATE', 'viewport': {'northeast': {'lat': 45.5281272, 'lng': 145.8228658}, 'southwest': {'lat': 41.3858779, 'lng': 139.7602944}}}, 'place_id': 'ChIJey4h6L1rDV8RqrrXBH9USz4', 'types': ['establishment', 'natural_feature']}]
>>> print(result.valid_address)
False
ランドマークから東経、北緯を取得し地図を作成する。
map1.py
#!/usr/bin/python3
# coding: UTF-8

try:
    #Python2の場合
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
except:
    pass  #Python3

import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from pygeocoder import Geocoder
import sys

args = sys.argv
argc = len(args) # 引数の個数

if (argc != 2):   # 引数がない場合
    print ('./map1.py 目的地の名称')
    quit()

area_name = args[1]

font = {'family':'IPAGothic'}

try:
    result = Geocoder.geocode(area_name)
    lon1 = float(result.longitude)
    lat1 = float(result.latitude)
except:
    quit()

map = Basemap(llcrnrlon=lon1-2,llcrnrlat=lat1-2,urcrnrlon=lon1+2,urcrnrlat=lat1+2,resolution='h',projection='cyl')

map.drawcoastlines()
map.drawmeridians(np.arange(0, 360, 1))
map.drawparallels(np.arange(-90, 90, 1))

map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='gray')

plt.text(lon1,lat1+0.15,area_name,fontsize=9,color='w', **font)
x,y = map(lon1, lat1)
map.plot(x, y, 'ro', markersize=6)

plt.show()

$ ./map1.py ユニバーサルスタジオジャパン

image.png

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.