見出し画像

住所を緯度経度に変換する方法(Geocoding.jp)

住所やランドマークを緯度経度に変換してくれるサイトの紹介です(https://www.geocoding.jp/)。検索ボックスに入力してボタンを押すだけで結果が返ってくるので使いやすいです。

Geocoding.jp(https://www.geocoding.jp/)

変換対象が少ないときは手動でも良いですが、数10~規模の変換は同サイトのAPIを活用するのがお勧めです。Pythonで記述します。

import requests
import xml.etree.ElementTree as ET

payload = {"q": "東京駅"}

url = "https://www.geocoding.jp/api/"
r = requests.get(url, params=payload)
root = ET.fromstring(r.text)

lat = root.find('.//lat').text #緯度
lng = root.find('.//lng').text #経度

print(lat, lng) 

4行目の"東京駅"の部分を他のランドマークや住所に返れば動作します。

数局分回したければFor文などでうまくループすればよいと思いますが、その場合は集中アクセスでサイトに負荷がかからないようにsleep関数を入れるなど工夫してください。詳細は利用規約をご確認ください。(https://www.geocoding.jp/api/

ちなみに少しだけコードを解説すると、まずは変換対象をGET方式でAPIで問い合わせます。例えば"東京駅"なら(https://www.geocoding.jp/api/?q=東京駅)にアクセスします。そうすると以下のResponse(XML形式)を得ます。

<?xml version="1.0" encoding="UTF-8" ?>
<result>
<version>1.2</version>
<address>東京駅</address>
<coordinate>
<lat>35.681236</lat>
<lng>139.767125</lng>
<lat_dms>35,40,52.45</lat_dms>
<lng_dms>139,46,1.649</lng_dms>
</coordinate>
<open_location_code>8Q7XMQJ8+FR</open_location_code>
<url>https://www.geocoding.jp/?q=%E6%9D%B1%E4%BA%AC%E9%A7%85</url>
<needs_to_verify>no</needs_to_verify>
<google_maps>東京駅</google_maps>
</result>

見てみると<lat>と<lng>のところに緯度経度の情報がありますので、以下のコードで抽出しました。

lat = root.find('.//lat').text #緯度
lng = root.find('.//lng').text #経度

サンプルコード10-11行目

説明は以上です。

いいなと思ったら応援しよう!