プログラマでありたい

おっさんになっても、プログラマでありつづけたい

郵便番号から緯度経度情報を取得する

 郵便番号から緯度経度を取得できるデータは無いだろうかと探してみました。私が探した限りでは、無料のものでは限定された情報のものしか見つけられませんでした。ということで、無ければデータを作ってしまおうと方法を考えました。郵便番号と住所の情報は、郵政省から簡単にダウンロードできます。問題となるのが、緯度経度情報。GoogleMaps APIの最近のバージョンでは、geocodingの情報を返してくれるので、その二つを組み合わせれば目的のデータは取得できそうです。


 GeocodeのCPANモジュールは、宮川さんのGeo::Coder::Googleと、それをラップしたGeo::Coder::GoogleMapsの二つがあります。基本的な機能は一緒ですが、今回はGeo::Coder::GoogleMapsを使いました。
※Geo::Coder::GoogleMapsはXML::LibXMLを必要とするのですが、これを入れるのが面倒くさいです。インストール手順は、また別途記述します。


Geo::Coder::GoogleMaps

#!/usr/bin/perl

use strict;
use warnings;
use Geo::Coder::GoogleMaps;

my $api = 'your API key';
my $gmap = Geo::Coder::GoogleMaps->new( apikey => $api, output => 'xml', host => 'maps.google.co.jp');
my $address = '東京都千代田区丸の内';
my $location = $gmap->geocode(location => $address);

print $location->latitude,',',$location->longitude,"\n";

 緯度経度を取るには、住所から検索する必要があります。郵便番号直では出来ないので注意してください。一連のデータを作る方法は次回書きます。


郵便番号データに緯度経度を付加する手順