オープンソースの GeoCoder 「geocoder.ja」がすごい


http://www.postlbs.org/postlbs-cms/ja/geocoder

オープンソースの GeoCoder。「ジオコーダーじゃ」と読むらしい。

これはすごいな。


早速使ってみた。

まずデータを揃えるのが結構大変。


ゆうびんホームページの郵便番号データと国土交通省から街区レベル位置参照情報のデータを取ってきて、Windows専用のデータ変換ツールでデータを構築する必要がある。


国土交通省のデータのダウンロードがすさまじくだるい・・・

普通にクリックしていくと多分全部集めるのに200回ぐらいクリックしなきゃいけない。
FireBugで多少楽はしたけど大変だった。

このありえないインターフェースはなんとかならんのかなぁ。


で使ってみた感じは、検索は非常に速い。
精度はGoogleMapsのGeoCoderとかにはかなわないけど、それなりにいい感じ。

一番詳細なレベルではてなの住所(東京都渋谷区鉢山町9-31 NTTコミュニケーションズ鉢山ビル1F)をgeocodeしたところ、

  • 東京都渋谷区鉢山町9番
  • 緯度:35.651300
  • 経度:139.698000

まで取れた。最大のlevel8まで取れないのはなんでかわからないけど。これでも結構すごい。


というわけで、Perlから使えるようにXSでモジュール書いた。

Geo-Coder-Ja-0.03 - geocode address. - metacpan.org


他のサービスに頼らずに完全に自前でGeoCoding出来るので、そこそこ使いどころはあるんじゃないかと思う。

複数の候補が取れないのがちょっとつらいかな。


デモは一応こちら。

http://spiritloose.net/misc/geocoder/


デフォルトの load_level だとメモリを300MB近くごっそり持ってかれるので、デモでは一番低いload_levelにしてる。
これだと行政区域までしか検索できない・・・


load_level でメモリ使用量がかなり変わる(デモのDB_GYOSEIだとすごく少ない)。

メモリ使用量がきついので、インスタンスを使いまわすようにしないと結構厳しい。

裏でデーモン化してつかうのがいいかなぁ。

POEでさくっとつくって使うのもいいかも。


あと、同じくオークニー社の経路探索エンジン pgRouting も気になる。

こっちも時間があるときに試してみよう。


それはそうと、GoogleMapsのGeoCoderが早く復活しないかなぁ。

APIだと今のところ Geo::Coder::YahooJapan がかなり使える。


追記

本家からリンク貼ってもらったみたいですね。どうもです。