かなり前に作った、キーワード(住所の一部)を入れると緯度経度を返すコマンドラインスクリプトを整理して公開しときます。YOLPのジオコーダAPIを叩いているだけのサンプルプログラムです。実行にはアプリケーションIDが必要です。
こちらの「ジオコーダAPI」では住所の一部に対してのみ情報を返します。
- YOLP(地図):Yahoo!ジオコーダAPI - Yahoo!デベロッパーネットワーク
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html
「コンテンツジオコーダAPI」はそれにプラスしてランドマーク名にも対応しています。
- YOLP(地図):コンテンツジオコーダAPI - Yahoo!デベロッパーネットワーク
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/contentsgeocoder.html
後者の「コンテンツジオコーダAPI」の方が良さそうですが、意図しない結果が出ることがあり調整が必要なのが難点。説明が面倒なのでまた別途記事を書きますね。
今回は前者の「ジオコーダAPI」を使い、キーワードを住所の一部に限定したバージョンをのせておきます。
■コード (address2latlong.pl)
■実行例
以上、どうぞご利用ください。
なお、アプリケーションID (appid) の取得は下記からどうぞ:
http://e.developer.yahoo.co.jp/webservices/register_application
こちらの「ジオコーダAPI」では住所の一部に対してのみ情報を返します。
- YOLP(地図):Yahoo!ジオコーダAPI - Yahoo!デベロッパーネットワーク
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html
「コンテンツジオコーダAPI」はそれにプラスしてランドマーク名にも対応しています。
- YOLP(地図):コンテンツジオコーダAPI - Yahoo!デベロッパーネットワーク
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/contentsgeocoder.html
後者の「コンテンツジオコーダAPI」の方が良さそうですが、意図しない結果が出ることがあり調整が必要なのが難点。説明が面倒なのでまた別途記事を書きますね。
今回は前者の「ジオコーダAPI」を使い、キーワードを住所の一部に限定したバージョンをのせておきます。
■コード (address2latlong.pl)
#!/usr/bin/env perl use strict; use warnings; use LWP::Simple; use URI::Escape; my $appid = "(YOUR APP ID)"; while (<>) { chomp; my @r = address_to_latlong({key => $_, appid => $appid}); print join("\t", @r, $_)."\n"; } sub address_to_latlong { my ($args_ref) = @_; my $ek = URI::Escape::uri_escape($args_ref->{key}); my $murl = "http://geo.search.olp.yahooapis.jp/OpenLocalPlatform/V1/geoCoder" ."?appid=$args_ref->{appid}&query=$ek&datum=tky"; my $r = get($murl); my ($lat, $long) = $r =~ m{<Coordinates>(.+?),(.+?)</Coordinates>}; return ($lat||"", $long||""); }
■実行例
(「住所の一部」でないクエリは、結果が返って来ません)% cat address2latlong-test.txt 東京都渋谷区 東京都港区 神奈川県横浜市中区 神奈川県足柄上郡山北町 こんにちは 東京タワー 東京ミッドタウン % ./address2latlong.pl address2latlong-test.txt 139.69822020 35.66403830 東京都渋谷区 139.75160740 35.65807070 東京都港区 139.64218630 35.44470240 神奈川県横浜市中区 139.08383880 35.36060800 神奈川県足柄上郡山北町 こんにちは 東京タワー 東京ミッドタウン
以上、どうぞご利用ください。
なお、アプリケーションID (appid) の取得は下記からどうぞ:
http://e.developer.yahoo.co.jp/webservices/register_application
この記事に言及しているこのブログ内の記事