2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ロケーション名を入力すると、施設の種類や住所etc.を返すGeocodingツール

Last updated at Posted at 2020-11-12

#(コード) 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
$
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?