こしごぇ(B)

旧:http://d.hatena.ne.jp/koshigoeb/

MaxMind社のGeoLite Cityデータベースを使ってIPアドレスから都道府県を特定する話

GPSではなくIPアドレスから都道府県(地理情報)を特定したい場合、MaxMind社のデータベースを使うのが一般的なんでしょうか?

地理情報関係はほぼ触れずに今日まで生きてきたのでよく分かりませんが、とりあえずIPアドレスから都道府県を割り出すプログラムでも書いてみようかと思います。

データベースをダウンロードして展開

$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ gzip -d GeoLiteCity.dat.gz

実行環境(Ruby)の準備

$ rbenv local 1.9.2-p290
$ echo geoip > .rbenv-gemsets
$ cat <<EOF > Gemfile
source :rubygems
gem 'geoip'
EOF
$ gem install bundler --no-ri --no-rdoc
$ bundle install --system

プログラム

日本の都道府県に該当する情報はState/Regionから得られる様で、そのコード体系は全国地方公共団体コードとは異なります。

全国地方公共団体コードの都道府県コードを調べる際には、総務省からダウンロードできるファイルを参照するか、Wikipediaに書かれている都道府県コードを参照すると良いと思います。他にもっと適当な方法がありそうな気もしますが、自分はこの程度しか把握してません…。

以下、書いてみたプログラムです。