オープンソースの 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 がかなり使える。
追記
本家からリンク貼ってもらったみたいですね。どうもです。