Python

[python]緯度経度から場所を特定する逆ジオコーディングをやってみた

逆ジオコーディングとは

場所から緯度経度を特定する方法をジオコーディングと言います。
その逆に緯度経度から、その場所の都市名を特定する方法を逆ジオコーディングといいます。

google mapのAPIを使うと可能なんでしょうが下記のように1000件あたり$5かかります。(毎月$200分は無料のようですが、、)

なので、今回は国土地理院のAPIを使って逆ジオコーディングを行っていきます。

 

国土地理院のAPIで逆ジオコーディングの説明

使い方は非常にシンプルです。下記のURLの後ろのlat,lonの所に緯度経度の値をいれてアクセスします。
ちなみに緯度35.658584 経度139.745431とは東京タワーの場所を示しています。

https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress?lat=35.658584&lon=139.745431

すると下記のような結果が出てきます。

 結果
{'results': {'muniCd': '13103', 'lv01Nm': '芝公園四丁目'}}

それぞれどういう意味かというと、

'muniCd': '13103'

は市町村コードが13103という意味です。市町村コード13103とは東京都港区を示します。
市町村コード一覧は 市町村コード一覧 に記載されています。この一覧では6桁で記載されていますが、6桁目は検査数字なので無視してください。
ちなみに、上2桁は都道府県コードを示し、"13"は東京都を示しています。→ 他の都道府県は都道府県コード一覧

'lv01Nm': '芝公園四丁目'

そして、後ろで○丁目などのもう少し詳細な住所がわかります。
このAPIでは番地等は流石にわからないようなので、ある程度の場所がわかります。

念のためgoogle mapでこの緯度経度を確認すると、〒105-0011 東京都港区芝公園4丁目2-8 東京タワーと正しい結果がでてますね。

 

Pythonコードにしてみる

urlなのでwebでも利用することが出来ますが、自動化等も考えてpythonでコーディングしてみます。
今回は簡単に行います。

 結果
{'results': {'muniCd': '13103', 'lv01Nm': '芝公園四丁目'}}

 

参考にさせていただいたサイト

国土地理院情報普及課公式GitHub
イントラネットで地図サービスを使いたい5‐ジオコーダー編2‐
市町村コード一覧
都道府県コード一覧

-Python

© 2022 monz code Powered by AFFINGER5