GeoCodingAPIを使って住所から経度、緯度取得スクリプトを作った。

Pocket

今機能を追加をしているサイト、世界の絶景サイトで、googlemapとの連携を実装しました。
その際に、住所情報から、緯度、経度を取得するためのスクリプトを作ったのでいかに記載します。

Map

スクリプトは以下のとおり。まずは見て下さい。

#!/usr/bin/perl

use strict;
use warnings;
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
use utf8;

my $country ="the country you want to look into";
my $title="the place you want to look into";

		my $base = "http://www.geocoding.jp/api/?v=1.1&q=";
		my $query = "${country} ${title}";
		my $res = get ($base.$query);
		$res = XML::Simple::->new()->XMLin($res);
		#print Dumper $res;
		my $latitude = $res->{coordinate}->{lat};
		my $longitude = $res->{coordinate}->{lng};
		my $address = $res->{google_maps};
		
		printf ("lat: %f\n", $res->{coordinate}->{lat});
		printf ("lng: %f\n", $res->{coordinate}->{lng});
		printf ("address: %s\n", $res->{google_maps});
		sleep 5;

見ての通り、GeoCodingAPIを使っています。

webAPIがあるので、そこにアクセスしています。googleにも同じようなAPIがあるので、そっちを使えば良かったのですが、気づくのが遅くて、こっちでスクリプト作ってしまったので、まあいいかとおもってます。

API側で多くのアクセスは許可されていないのが問題

最初、ガンガンAPIをたたいていたのですが、突然、エラーが帰ってくるようになってきました。
なんでだろう~とおもって、API製作者のtwitterみてみたら、5秒に一回未満のアクセスをお願いしますと注意喚起しているのを見つけました。

そのため、僕のスクリプトに書いている通り、sleep5は忘れないようにお願いします。
ちなみに、僕は上記のスクリプトを一部変えて、DBに情報を保存するようにしています。

コメントを残す