2
3

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 1 year has passed since last update.

Geopyで緯度経度からその都道府県を取得する方法(備忘録)

Last updated at Posted at 2023-10-25

目的

緯度経度を入力に、都道府県を出力とする関数を作ること

方法

二つのメソッドを使う。

  1. Geopyのreverseという緯度経度を入力に都道府県コードを出力するメソッド
  2. pycountryのsubdivisions.getというISO 3166-2:JP都道府県コードから都道府県名を出力するメソッド

以上2点を組み合わせて
インプット:緯度経度
アウトプット:都道府県名
の関数を作成する。

準備

geopyとpycountryをインストールしましょう。
pip install geopy
pip install pycountry
動いた環境のpythonのバージョンは3.8.8でした。

コード

user_agent は書き換えてご利用ください。

from geopy.geocoders import Nominatim
import pycountry

geolocator = Nominatim(user_agent = "something")

# 緯度経度から都道府県コードを取得
def get_prefecture_code_from_lat_lon(latitude, longitude, geolocator):
    location = geolocator.reverse((latitude,longitude),language = "jp")
    if location and location.raw.get("address"):
        return location.raw["address"].get("ISO3166-2-lvl4")
    return None

# 都道府県コードから都道府県名を取得
def get_subdivision_name(iso_code):
    subdivision = pycountry.subdivisions.get(code=iso_code)
    if subdivision:
        return subdivision.name
    return None

latitude = 35.6895  # 例:東京
longitude = 139.6917

prefecture_code = get_prefecture_code_from_lat_lon(latitude, longitude, geolocator)
print(f"都道府県コード = {prefecture_code}") 
prefecture = get_subdivision_name(prefecture_code)
print(f"都道府県:{prefecture}") 

注意点

geopyのライブラリからの都道府県情報はISO 3166-2:JP コードで取得している。

latitude = 35.6895  # 例:東京
longitude = 139.6917
location = geolocator.reverse((latitude,longitude),language = "jp")
print(location.raw)

とすると、display_name に東京都と書かれており、都道府県情報が入っていることがわかる。

print(location.raw["display_name"])

とすると、カンマ区切りで住所の情報が入っている。ここから都道府県情報を取得することもできなくはないが、ちょっと面倒くさく感じ、ISO 3166-2:JPコードを用いることを検討した。

2
3
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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?