本記事では、国土地理院の無料のAPIを利用して、指定した地域名の緯度と経度を取得する雛形コードを載せました。そして、ライブラリ「folium」を利用して、下図のように抽出した緯度と経度を中心座標として矩形を描く雛形コードを載せました。
国土地理院のAPIの利用は、次のようにそのURLの最後に地名を入力します。下記は「鳥取砂丘」の位置座標データを取得したい場合の例です。
https://msearch.gsi.go.jp/address-search/AddressSearch?q=鳥取砂丘
■ライブラリ「folium」のインストール
foliumは地図を可視化するためのライブラリです。
conda install -c conda-forge folium
pip install folium
■本プログラム
foliumはwebブラウザ上で表示することができるため、本記事ではJupyterLabでインタラクティブに実行してゆきます。
import requests
import urllib
import folium
my_keyword = '鳥取砂丘'
api_url = "https://msearch.gsi.go.jp/address-search/AddressSearch?q="
s_quote = urllib.parse.quote(my_keyword)
response = requests.get(api_url + s_quote)
response
上記が成功すれば、下図のように戻り値200が返ってきます。
my_json_data = response.json()
my_json_data
大抵、下図のように複数抽出されます。指定したワードと完全一致が抽出されるわけではありません。
my_title = '鳥取砂丘'
def extract_coordinates(json_data, key_word):
for feature in json_data:
if 'properties' in feature and 'title' in feature['properties']:
title = feature['properties']['title']
if title == key_word:
coordinates = feature['geometry']['coordinates']
latitude, longitude = coordinates[1], coordinates[0]
return latitude, longitude
return None
my_region = extract_coordinates(my_json_data, my_title)
latitude, longitude = my_region
print(f"{my_title}の緯度: {latitude}, 経度: {longitude}")
上記を実行すると、下記のように緯度と経度の位置座標を取得できます。
map = folium.Map(location=my_region, zoom_start=15)
folium.Marker(my_region, popup=my_title).add_to(map)
map
上記を実行すると、下図のようにマーカーを記されます。
latitude_min = latitude - 0.005
longitude_min = longitude - 0.01
latitude_max = latitude + 0.005
longitude_max = longitude + 0.01
folium.Rectangle(
bounds=[[latitude_min, longitude_min], [latitude_max, longitude_max]],
color='blue',
fill=True,
fill_color='blue',
popup=my_title
).add_to(map)
map
上記を実行すると、指定した四辺形の頂点座標を元に、下図のように地図上に描きます。
以上
<広告>
リンク
リンク
リンク
リンク