#(コード) Python3
loc_geocoding.py
# coding: utf-8
import time, argparse, datetime
from pprint import pprint
import pandas as pd
import numpy as np
# コマンドライン引数を受け取る
parser = argparse.ArgumentParser()
# コマンドライン引数を1つだけ受け取る
parser.add_argument('-loc', '--location_name', default='東京駅', help='興味のある場所または施設の名称を入力して下さい。')
args = parser.parse_args()
location = str(args.location_name)
print("\n\n入力されたロケーション名: ", args.location_name, "\n")
import geocoder
data = geocoder.osm(location, timeout=5.0)
output_dict = {}
if data.ok:
data_json = data.json
# 種別
try:
pprint(data_json["raw"]["category"])
output_dict.update({"種別" : data_json["raw"]["category"]})
except:
pass
# 表示名
try:
pprint(data_json["raw"]["display_name"])
output_dict.update({"表示名" : data_json["raw"]["display_name"]})
except:
pass
# オフィス名
try:
pprint(data_json["raw"]["address"]["office"])
output_dict.update({"オフィス名" : data_json["raw"]["office"]})
except:
pass
# 緯度
try:
pprint(data_json["lat"])
output_dict.update({"緯度" : data_json["lat"]})
except:
pass
# 経度
try:
pprint(data_json["lng"])
output_dict.update({"経度" : data_json["lat"]})
except:
pass
# 国名
try:
pprint(data_json["raw"]["address"]["country"])
output_dict.update({"国名" : data_json["raw"]["address"]["country"]})
except:
pass
# 郵便番号
try:
pprint(data_json["raw"]["address"]["postcode"])
output_dict.update({"郵便番号" : data_json["raw"]["address"]["postcode"]})
except:
pass
# 都道府県名
try:
print(data_json['city'])
output_dict.update({"都道府県名" : data_json['city']})
except:
pass
# 街区名
try:
pprint(data_json["raw"]["address"]["quarter"])
output_dict.update({"街区名" : data_json["raw"]["address"]["quarter"]})
except:
pass
# ストリート名
try:
pprint(data_json["raw"]["address"]["road"])
output_dict.update({"ストリート名" : data_json["raw"]["address"]["road"]})
except:
pass
# 番地
try:
pprint(data_json["raw"]["address"]["house_number"])
output_dict.update({"番地" : data_json["raw"]["address"]["house_number"]})
except:
pass
# 住所(全体)
try:
pprint(data_json["address"])
output_dict.update({"住所(全体)" : data_json["address"]})
except:
pass
#tmp = ["属性名: {key} 値 : {value}".format(key=k, value=v) for k,v in data_json.items()]
#
#tmp = ["{key} : {value}".format(key=k, value=v) for k,v in data_json.items()]
#tmp_df = pd.DataFrame(data_json.values(), index=data_json.keys())
print("""\n\n====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================\n""")
output_df = pd.DataFrame(output_dict.values(), index=output_dict.keys())
else:
print("そのロケーションは見つかりませんでした。")
print("DataFrameオブジェクトに格納された情報")
print(output_df)
#( 実行方法 )
Terminal
$ python3 loc_geocoding.py -h
usage: loc_geocoding.py [-h] [-loc LOCATION_NAME]
optional arguments:
-h, --help show this help message and exit
-loc LOCATION_NAME, --location_name LOCATION_NAME
興味のある場所または施設の名称を入力して下さい。
$
#( 実行例 )
####東京タワー
Terminal
$ python3 loc_geocoding.py -loc '東京タワー'
入力されたロケーション名: 東京タワー
'tourism'
'東京タワー, 東京タワー通り, 麻布, 南青山6, 東京都, 港区, 105-0011, 日本 (Japan)'
35.65858645
139.74544005796224
'日本 (Japan)'
'105-0011'
東京都
'麻布'
'東京タワー通り'
'東京タワー, 東京タワー通り, 麻布, 南青山6, 東京都, 港区, 105-0011, 日本 (Japan)'
====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================
DataFrameオブジェクトに格納された情報
0
種別 tourism
表示名 東京タワー, 東京タワー通り, 麻布, 南青山6, 東京都, 港区, 105-0011, 日...
緯度 35.6586
経度 35.6586
国名 日本 (Japan)
郵便番号 105-0011
都道府県名 東京都
街区名 麻布
ストリート名 東京タワー通り
住所(全体) 東京タワー, 東京タワー通り, 麻布, 南青山6, 東京都, 港区, 105-0011, 日...
$
####米国大使館
Terminal
$ python3 loc_geocoding.py -loc '米国大使館'
入力されたロケーション名: 米国大使館
'office'
'U.S. Embassy Tokyo, 5, 泉通り, 六本木, 東京都, 港区, 107-8420, 日本 (Japan)'
'U.S. Embassy Tokyo'
35.668439449999994
139.7433025345327
'日本 (Japan)'
'107-8420'
東京都
'六本木'
'泉通り'
'5'
'U.S. Embassy Tokyo, 5, 泉通り, 六本木, 東京都, 港区, 107-8420, 日本 (Japan)'
====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================
DataFrameオブジェクトに格納された情報
0
種別 office
表示名 U.S. Embassy Tokyo, 5, 泉通り, 六本木, 東京都, 港区, 107-...
緯度 35.6684
経度 35.6684
国名 日本 (Japan)
郵便番号 107-8420
都道府県名 東京都
街区名 六本木
ストリート名 泉通り
番地 5
住所(全体) U.S. Embassy Tokyo, 5, 泉通り, 六本木, 東京都, 港区, 107-...
$
####東京大学
Terminal
$ python3 loc_geocoding.py -loc '東京大学'
入力されたロケーション名: 東京大学
'tourism'
'情報学環オープンスタジオ, 1, 合格通り, 文京区, 113-8654, 日本 (Japan)'
35.7114214
139.7612027
'日本 (Japan)'
'113-8654'
文京区
'合格通り'
'1'
'情報学環オープンスタジオ, 1, 合格通り, 文京区, 113-8654, 日本 (Japan)'
====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================
DataFrameオブジェクトに格納された情報
0
種別 tourism
表示名 情報学環オープンスタジオ, 1, 合格通り, 文京区, 113-8654, 日本 (Japan)
緯度 35.7114
経度 35.7114
国名 日本 (Japan)
郵便番号 113-8654
都道府県名 文京区
ストリート名 合格通り
番地 1
住所(全体) 情報学環オープンスタジオ, 1, 合格通り, 文京区, 113-8654, 日本 (Japan)
$
####ラーメン二郎
Terminal
$ python3 loc_geocoding.py -loc 'ラーメン二郎'
入力されたロケーション名: ラーメン二郎
'amenity'
'ラーメン二郎\u3000ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市, 188-0001, 日本 (Japan)'
35.7499086
139.5434758
'日本 (Japan)'
'188-0001'
西東京市
'北原町'
'谷戸新道'
'3-27-24'
'ラーメン二郎\u3000ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市, 188-0001, 日本 (Japan)'
====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================
DataFrameオブジェクトに格納された情報
0
種別 amenity
表示名 ラーメン二郎 ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市...
緯度 35.7499
経度 35.7499
国名 日本 (Japan)
郵便番号 188-0001
都道府県名 西東京市
街区名 北原町
ストリート名 谷戸新道
番地 3-27-24
住所(全体) ラーメン二郎 ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市...
$
####White House
Terminal
$ python3 loc_geocoding.py -loc 'White House'
入力されたロケーション名: White House
'historic'
('White House, 1600, Pennsylvania Avenue Northwest, Washington, District of '
'Columbia, 20500, United States of America')
38.8976998
-77.03655315
'United States of America'
'20500'
Washington
'Pennsylvania Avenue Northwest'
'1600'
('White House, 1600, Pennsylvania Avenue Northwest, Washington, District of '
'Columbia, 20500, United States of America')
====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================
DataFrameオブジェクトに格納された情報
0
種別 historic
表示名 White House, 1600, Pennsylvania Avenue Northwe...
緯度 38.8977
経度 38.8977
国名 United States of America
郵便番号 20500
都道府県名 Washington
ストリート名 Pennsylvania Avenue Northwest
番地 1600
住所(全体) White House, 1600, Pennsylvania Avenue Northwe...
$
####ロケーション名が、1単語の場合は、single quotation記号「'」で囲む必要はありません。White Hoseのように複数単語の場合は、「'」が必要になります。
####ラーメン二郎
Terminal
$ python3 loc_geocoding.py -loc ラーメン二郎
入力されたロケーション名: ラーメン二郎
'amenity'
'ラーメン二郎\u3000ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市, 188-0001, 日本 (Japan)'
35.7499086
139.5434758
'日本 (Japan)'
'188-0001'
西東京市
'北原町'
'谷戸新道'
'3-27-24'
'ラーメン二郎\u3000ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市, 188-0001, 日本 (Japan)'
====================================================================================
ロケーション情報をDataFrameオブジェクトに格納します。
====================================================================================
DataFrameオブジェクトに格納された情報
0
種別 amenity
表示名 ラーメン二郎 ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市...
緯度 35.7499
経度 35.7499
国名 日本 (Japan)
郵便番号 188-0001
都道府県名 西東京市
街区名 北原町
ストリート名 谷戸新道
番地 3-27-24
住所(全体) ラーメン二郎 ひばりヶ丘駅前店, 3-27-24, 谷戸新道, 北原町, 田無町, 西東京市...
####White House
Terminal
$ python3 loc_geocoding.py -loc White House
usage: loc_geocoding.py [-h] [-loc LOCATION_NAME]
loc_geocoding.py: error: unrecognized arguments: House
$