2008年07月18日

Debian etch でGeoIPを使う

livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

IPアドレスから位置情報を取得したい


GeoIP City Geolocationを使うとIPアドレスから位置情報を取得可能。
無料版と有料版があり、無料版は位置情報の精度が低い。
今回は無料版で実験。



環境構築


必要なパッケージをインストール
$ sudo apt-get install libgeoip1 libgeoip-dev
Geo::IPをダウンロードしてdebパッケージ化
※etchでは1.33のbuildに失敗したので1.27を採用。
$ wget http://www.maxmind.com/download/geoip/api/perl/Geo-IP-1.27.tar.gz
$ tar zxvf Geo-IP-1.27.tar.gz
$ dh-make-perl --build Geo-IP-1.27
$ sudo dpkg -i libgeo-ip-perl_1.27-1_i386.deb
GeoLiteCity.datをダウンロード
$ wget http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ gunzip GeoLiteCity.dat.gz
サンプルプログラム
#!/usr/bin/perl

use strict;
use warnings;
use Geo::IP;

my $name = shift;
my $geo  = Geo::IP->open('./GeoLiteCity.dat', GEOIP_STANDARD);
my $geoip = $geo->record_by_name($name);
exit 1 unless $geoip;

map { print $_ .":\t". $geoip->$_ ."\n" }
    qw/country_code country_name city region postal_code
    latitude longitude dma_code area_code/;

1;
実行例
$ ./geoip-lookup.pl www.google.com
country_code:   US
country_name:   United States
city:   Mountain View
region: CA
postal_code:    94043
latitude:       37.4192
longitude:      -122.0574
dma_code:       807
area_code:      650



位置情報を取得した後、どうする?


Google Maps APIで位置情報を指定して地図を表示する。
これをやりたかった。



Google Maps Hacks 第2版 ―地図検索サービスをもっと活用するテクニック
Rich Gibson Schuyler Erle
オライリー・ジャパン
売り上げランキング: 53996


半袖 at 14:40 │Comments(0)TrackBack(0)Debian 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔