y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

自前でgeocodingするための準備

gisでユーザデータを登録するにあたり、まず最初に欲しいのはgeocoding機能だと思う。
CADユーザや、GISユーザであれば、図形データのコンバート(相互運用)機能が大事だろう。
しかしポリラインやポリゴンなんていう世界は、そもそも作図の段階からシビアな精度が要求されている”鬼門”なのであるからして、geocodingのニーズとはちょっと違う。
geocodingと言えば、以前よりgeocoding.jpWebサービスを提供している。GoogleMapsAPIが正式に、日本の住所からgeocodingを可能にしてからは、自前開発のアプリでも正確なgeocodingを実装できるようになった。googlemapsで住所を入力してみると分かるが、かなりの良い精度でポイントが表示される。googleの本家サーバだけではなく、カスタムアプリからも利用できるというのが素晴らしい。
当初は、googleAPI任せでgeocodingを実装しようとしたが、この場合は件数上限の問題がある。googleでは、サーバサイドのgeocodingでは、1IPアドレス、1日当たり15000件までの変換しか使えないという制限を設定している。クライアントサイドのgeocodingなら制限がないようだが、Javascriptでゴリゴリバッチ処理というのも(それはそれであってもよい世界だが)酷なので。
もう一つ気がかりな点は、コンバートしたい住所のデータをgoogle側に流さなければ緯度経度が分からないということ。
これはgeocoding.jpでも同じこと。「プログラムからの一括大量処理は勘弁して」って誰でも思うよなぁ。
業務でガシガシ使いたいときに、上限15000件は結構痛いし、住所情報をネットワークにバンバン垂れ流すというのは抵抗がある。
googleAPIを使わない方法を求め、geocodingのキーワードで調べたところ、スタンドアローンならMappleDigital(1万円くらい)が使えそう。Webサーバから呼び出したいので、SDK付きのものを調べてみたが、やはり結構高い。
住所の正規化などは、まともに向き合えば、結局は、イレギュラーな住所表記情報の収集を如何に行うかの問題になってしまうだろう。後々商用サービスに依存することになるにしても、まずは自前でgeocodingを実装してみて、現在自前で出来ることの限界を認識してみたい。

■方針
・データベースの更新を一か所にしたいので、Webサービス化しておいて、いろんなアプリから利用しよう。
・GBクラスのでっかいデータベースになるので、postgresqlなど上限がでっかいDBに格納しよう
・郵便番号から住所、住所候補を表示するようなインクリメンタルサーチを実装してみたい
CSVアップロードしてgeocodingした結果をグリッドに表示し、選択したポイントを地図表示、データベース登録


geocoding一人プロジェクトを発進するにあたり、街区レベル位置参照情報の最新版と郵便番号DBの最新版を入手しておこう。これをpostgreSQLにインポートして、ASP.NETWebサービスとして構築する。
住所情報から緯度経度を割り出すツールとして、

■商用のgeocoding
MAPPLEアドレスマッチングツール
AlpsMAPジオコーディング
住所正規化コンバータ

■人様の実験
位置参照技術を用いたツールとユーティリティ

■データ
国土交通省国土計画局 位置参照情報ダウンロードサービス