国土地理院APIは、日本国内での住所や位置情報を利用するための便利なツールです。本記事では、ジオコーディング(住所から緯度・経度を取得) と 逆ジオコーディング(緯度・経度から住所を取得) の使い方を解説し、curl、PHP、Python のコード例も紹介します。
ジオコーディング(住所から緯度・経度を取得)
概要
ジオコーディングでは、指定した住所に対応する緯度・経度を取得できます。
利用例: 東京都東村山市の緯度・経度を取得
1. curlによるリクエスト
curl "https://msearch.gsi.go.jp/address-search/AddressSearch?q=東京都東村山市"
レスポンス例:
[
{
"geometry": {
"coordinates": [
139.468582,
35.75465
],
"type": "Point"
},
"type": "Feature",
"properties": {
"addressCode": "",
"title": "東京都東村山市"
}
}
]
ポイント:
- 緯度:
35.75465
- 経度:
139.468582
2. PHPによるリクエスト
<?php
$address = "東京都東村山市";
$url = "https://msearch.gsi.go.jp/address-search/AddressSearch?q=" . urlencode($address);
$response = file_get_contents($url);
$data = json_decode($response, true);
if (!empty($data)) {
$coordinates = $data[0]['geometry']['coordinates'];
echo "経度: " . $coordinates[0] . "\n";
echo "緯度: " . $coordinates[1] . "\n";
} else {
echo "データが見つかりませんでした。\n";
}
?>
3. Pythonによるリクエスト
import requests
address = "東京都東村山市"
url = f"https://msearch.gsi.go.jp/address-search/AddressSearch?q={address}"
response = requests.get(url)
data = response.json()
if data:
coordinates = data[0]["geometry"]["coordinates"]
print(f"経度: {coordinates[0]}")
print(f"緯度: {coordinates[1]}")
else:
print("データが見つかりませんでした。")
逆ジオコーディング(緯度・経度から住所を取得)
概要
逆ジオコーディングでは、指定した緯度・経度から最寄りの町丁目レベルの住所を取得できます。
利用例: 東村山市付近の緯度・経度から住所を取得
1. curlによるリクエスト
curl "https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress?lat=35.75465&lon=139.468582"
レスポンス例:
{
"results": {
"muniCd": "13213",
"lv01Nm": "本町一丁目"
}
}
ポイント:
- 町丁目:
本町一丁目
2. PHPによるリクエスト
<?php
$lat = 35.75465;
$lon = 139.468582;
$url = "https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress?lat=$lat&lon=$lon";
$response = file_get_contents($url);
$data = json_decode($response, true);
if (!empty($data['results'])) {
$address = $data['results']['lv01Nm'];
echo "住所: " . $address . "\n";
} else {
echo "住所情報が見つかりませんでした。\n";
}
?>
3. Pythonによるリクエスト
import requests
lat, lon = 35.75465, 139.468582
url = f"https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress?lat={lat}&lon={lon}"
response = requests.get(url)
data = response.json()
if "results" in data:
address = data["results"]["lv01Nm"]
print(f"住所: {address}")
else:
print("住所情報が見つかりませんでした。")
活用例
ジオコーディングの活用
- 配送サービス: 入力住所を緯度・経度に変換し、最適ルートを計算。
- 防災アプリ: 住所から位置情報を取得し、防災情報を表示。
逆ジオコーディングの活用
- 現在地アプリ: GPSから取得した緯度・経度を住所に変換し表示。
- ナビゲーションシステム: 緯度・経度を元に近隣住所を案内。
注意点
- 住所精度: 番地レベルの情報が必要な場合は、Google Maps APIなど他のサービスを検討してください。
- リクエスト制限: 適切な間隔を設けてリクエストを送信し、過剰な負荷を避けましょう。
おわりに
国土地理院APIは、日本国内での住所情報をシンプルかつ無料で取得できる強力なツールです。ジオコーディングと逆ジオコーディングを活用して、あなたのアプリケーションやシステムをより便利に進化させましょう。
コメント