最近では Google Map や Yahoo!地図 などの地図検索サービスが充実しているので、行きたいところの住所などが分かれば大抵の場所はネットの地図で検索することが出来る便利な世の中になりました。さらに最近では上空の衛星写真も見られたり、ストリートビューのように周辺の町並みなどを見ることが出来るようになったりと、知らない場所に行くのに必携のツールになっています。
しかし通常の検索では一カ所(またはその周辺)を検索するのに特化されているので、例えば「横浜市内に大戸屋がどれくらい点在するのか知りたい」なんて時には人手でひとつひとつ検索するしかありませんが、これもまた面倒な話です。とある企業チェーン店の全店舗を一気に検索することで、その企業の出店傾向も掴めたりして、なかなかおもしろい使い方を編み出すことが出来ると思うのですが。
そんなことを常々考えていたら、Google Map では検索機能 (API) を外部に公開しており、簡単な Web プログラミングでこれを利用することが出来ることを知りました。そしてこれを利用し、様々な住所リストを一気に緯度経度の座標情報に変換するスクリプトを作ってみました。よーし、これでいろんな住所情報を緯度経度情報に変換してやるぞと言うことで、その成果をご紹介。今後も続々増えていくと思われます。
ちなみに PHP で動かしましたが、ソースはこんなにシンプル。
<?php
require_once('geocoding/xml.php');
$addresses = file('geocoding/address.csv');
foreach($addresses as $address){
$pieces_of_address = explode(",", $address);
$handle = fopen('http://www.geocoding.jp/api/?v=1.1&q=' . urlencode ($pieces_of_address[1]), "rb");
$xml = stream_get_contents($handle);
fclose($handle);
$data = XML_unserialize($xml);
if (array_key_exists('error', $data[result])){ //エラー時
echo '--' . $pieces_of_address[0] . 'は見つかりませんでした<br />';
}elseif(array_key_exists('choices', $data[result])){ //重複時
echo '--' . $pieces_of_address[0] . 'は候補が重複しています。<br />';
}else{ //成功時
if (array_key_exists('2', $pieces_of_address)){
$caption = $pieces_of_address[2];
}else{
$caption = $pieces_of_address[1];
}
echo '--&googlemaps2_mark(' .
$data[result][coordinate][lat] . ',' .
$data[result][coordinate][lng] . ', map=barmap, title=' .
trim($pieces_of_address[0]) . ', caption=' .
trim($caption) . ', icon=anan);<br />';
}
sleep(5);
}
?>
検索結果はいちいちチェックしていないので、ときたま位置がずれている物もありますが、それはご愛敬ということで。ビル名とかが混じると誤差を生じやすいようです。見つかり次第ぼちぼちと直していきます。
副産物ですが、座標チェック用として目的の場所の緯度経度を検出するツールも作りました。これは JavaScript です。
えと・・・とりあえず、乙
公衆無線LANのアクセスポイントまっぷ、作ってちょ。
てか、Bフレッツ入ってても、
無線LANには、800円/月・・・
普通の人とは、100円しか変わらん・・・・
所詮、NTTか。
アクセスポイントの住所か、正確な緯度経度が分かれば可能です。
コメントする