オープンソース ジオコーダ geocoder.jaについて
住所ジオコーダは地図やGISでは良く使われている技術で、古くから色々な実装がされています。
弊社でも2006年頃に、(株)オークニー様からの依頼で、開発を担当しました。
開発した成果はオープンソースとして公開されていたのですが、オークニー様のサーバが停止した後はダウンロードできなくなっていました。
ジオコーダとしての性能はかなり良いものなので、公開したいと思ってましたが、公開する以上、できるだけ使いやすいものにしてから再度公開しようと思いつつ、月日が経つばかりでした。
最近、住所の正規化が話題になっていて、どう解決していくかが議論されていますが、その参考となるのではないかと思い、急遽、開発当時のままで公開する事にしました。
住所の正規化ができれば、住所を緯度経度に変換するには住所と緯度経度の辞書があればすぐに行えますので、住所の正規化とはジオコーダのエンジンを作成する事となります。
逆にジオコーダができれば、その結果に基づき、正規化された住所を出力するのは簡単です。
開発当初、現在話題になっている住所の表記問題に直面して、色々試行錯誤したのですが、最終的に解決策としたのはハッシュ値を使う方法です。
テキスト検索では馴染みのアルゴリズムですが、漢字2文字のみのハッシュ値を使っているのが通常の場合と違います。
このハッシュ検索により、市区町村名が書いてない住所も高速に検索できるなど、表記問題に対応しやすくなっています。
検索速度は、当時のパソコンで30,000件/秒ほどで、最速だったと思います。
ドキュメントとソースは下記リンクをご参照ください。
ダウンロード資料
表記方法で話題になっている京都の通り名に関しては、通りの座標データがあれば解決されますが、そのデータも作成済みですが、プログラムとしての実装はできていません。
通りの座標データは校正がしていないので公開していないですが、必要な方はご連絡下さい。
その他の表記方法の問題は、上記のプレゼン資料にも書いてますが、マッチングしない住所の収集が鍵となります。
そのためには、住所データが必要で、2006年の頃はその住所データを如何に集めるかが問題でしたが、現在はマイナンバーカードやショッピングの住所データが集められているので、それらを使う事ができれば、後は作業としてこなしていけばいいように思います。
ソースコードに関して
ソースコードは2006年当時のもので、現在の状況と違っていますので、すぐには使えないかと思います。
今回公開したのはジオコーディングのアルゴリズムの参考としての位置づけです。
ソースコードは、ジオコーダ用のデータベースを作成する部分と、そのデータベースを使ってジオコーディングを行うAPI部分に分かれています。
データベースは単なるバイナリのファイルで、コピー可能ですので、作成後はAPI部分のみがあればジオコーディングが可能です。
geocoder.jaはそのAPI部分の名称で、ライセンスはGNU LGPLとなっています。
LGPLのライセンスに従って頂ければ、改変や再配布可能です。
データベースを作成する部分は、元データの知的財産権が絡んできますので、オープンソースにはしてありません。
一応、問題ないと思われる部分は公開していますので、アルゴリズムの確認や、自社内での使用は差し支えありません。
この投稿に関してのご質問はお問合わせページからご連絡下さい。