住所文字列(東京都新宿区西新宿二丁目8番1号など)から緯度経度を求めることをジオコーディングと言います。ジオコーディングのサービスはいろいろありますが、その中でGeocoding.jp APIを使ってみました。
Geocoding.jp API とは
URL は https://www.geocoding.jp/api/ です。個人の方が運営しているサービスです。
「Geocoding.jp APIについて」をクリックすると使い方などが表示されます。
無料で利用可能ですし、 API キーも必要ありません。
重要なのは「検索の頻度を、10秒に1回程度に抑えてください。」です。あくまでも個人の方が運営されているサービスであることに注意しましょう。
使ってみる
とりあえず使うだけなら、ウェブのフォームに住所文字列を入れて「GPS座標検索」をクリックすればOKです。結果として XML が返ってきます。
測地系は WGS84 です。tokyo97風も可能ということですが、"風"ということですので WGS84 から計算で求めているのだろうと思われます。
まずフォームに東京都庁の住所である「東京都新宿区西新宿二丁目8番1号」を入れてみます。
「GPS座標変換」をクリックすると、ジオコーディング結果が XML で返ってきます。
緯度 35.688408, 経度 139.692005 が返ってきましたので、Google マップで確認してみます。
ちゃんと東京都庁になっていますね。
使い勝手など
ジオコーディングに失敗するとエラーが返ってきます。
「東京都新宿区西新宿二丁目8番1号」「東京都新宿区西新宿2丁目8番1号」「東京都新宿区西新宿2-8-1」はどれも同じ緯度経度を返してくれますので、住所の揺らぎには結構対応してくれます。
ここまでフォームから使ってきましたが、もちろん API としてプログラムからも使えます。PHP でサンプルコードを書くと以下のようになります。
<?php
$geocode = simplexml_load_file("https://www.geocoding.jp/api/?q=" . urlencode("東京都新宿区西新宿二丁目8番1号"));
if($geocode && property_exists($geocode, "coordinate")) {
$latitude = $geocode->coordinate->lat;
$longitude = $geocode->coordinate->lng;
print "$latitude, $longitude\n";
}
sleep(10);