本章では、PostGISのソースアーカイブとソースレポジトリのextrasフォルダにある機能を記述します。 これらは必ずPostGISバイナリ版に同梱されているものではありませんが、通常は実行可能なPL/pgSQLベースのものまたは標準的なシェルスクリプトです。
米国統計局が公開しているTIGER (Topologically Integrated Geographic Encoding and Referencing system ) / Line and Master Address database exportと連動するように書かれたPL/pgSQLベースのジオコーダーです。
データローダ機能、住所正規化、住所ジオコーダーおよび逆ジオコーダー、の四つの要素があります。
米国のための設計ですが、概念および機能の多くは適用可能で、他国の住所と道路ネットワークで動作するように適合させることができます (訳注: 日本の地名については未知です)。
TIGER関連の関数や、道路型前置辞、道路型後置辞、州、データロード管理用の様々な制御テーブル、全てのロードされたテーブル継承するスケルトンベーステーブルといった再利用可能なデータを収容するためのtigerというスキーマがスクリプトによって作成されます。
もう一つのtiger_dataと呼ばれるスキーマも生成されていて、ローダーが国勢調査サイトからダウンロードしてデータベースにロードする州の全ての国勢調査データを保存します。現在のモデルでは、州ごとのテーブル群のテーブル名の接頭辞としてma_addr、ma_edgesなどの州コードが付きます。また、その州のデータだけに強制する制約を付けています。addr、faces、edgesなどのテーブルから継承したテーブルは tigerスキーマ内に位置します。
ジオコード関数は基本テーブルだけを参照します。tiger_data というスキーマは不要ですし、データが他のスキーマに分割されても構いません。例えば、全てのテーブルが tigerスキーマ内のテーブルから継承されているなら、州ごとに違うスキーマでも構いません。
お手持ちのデータベース内のエクステンションを有効にし、使用するデータをロードする方法については、Section 2.3.1, “TIGERジオコーダーをPostGISデータベースで有効にする”を参照して下さい。
|
|
|
TIGERジオコーダー (tiger_2010)を使っている場合には、extras/tiger内にあるupgrade_geocoder.bat / .sh を使ってアップグレードすることができます。 |
|
|
|
TIGERジオコーダーはPostgreSQLエクステンションモデルでインストールできます。詳細についてはSection 2.3.1, “TIGERジオコーダーをPostGISデータベースで有効にする”をご覧ください。 |
The Pagc_Normalize_Address function as a drop in replacement for in-built Normalize_Address. Refer to address_standardizer for compile and installation instructions.
設計:
このプロジェクトの目標は、任意の米国住所文字列を処理し、正規化したTIGER国勢調査データを使ってポイントジオメトリを生成し、与えられた住所の位置や、位置のもっともらしさを反映した評価値を算出する、十分に実用的なジオコーダーを構築することです。なお、評価値は高いほど悪い結果とします。
reverse_geocode関数はGPS位置のストリート住所と交差点を得るのに使えます。
ジオコーダーは、PostGISに慣れている方ならだれでもインストールと使用が容易な程度に単純であるべきで、PostGISがサポートする全てのプラットフォームで簡便にインストール、使用ができるべきです。
書式や綴りの誤りがあっても確実に機能するための十分なロバスト性があるべきです。
将来のデータ更新が使えるか、最小のプログラムの変更で他のデータが使えるための十分な拡張性もあるべきです。
|
|
|
関数が確実に動作するために、 |
tiger_dataです。
county_all, state_allまたは、county or stateを削除するスクリプトを生成します。
tiger_dataです。
normalized_addressにそれぞれの位置、ratingに評価値がそれぞれ入ります。評価値が低いほど合致度が高くなります。結果は評価値の低い順にソートされます。最大結果数を渡すことができ、デフォルトは10です。TIGERデータ (エッジ、フェイス、住所)と、PostgreSQLあいまい文字列合致 (soundex, levenshtein)を使います。
tiger_dataに格納するための、指定したプラットフォーム用のシェルスクリプトを生成します。行ごとに州ごとのスクリプトが返されます。
tiger_dataスキーマに格納するシェルスクリプトを生成します。行ごとに州ごとのスクリプトが返ります。最新版ではTIGER 2010のデータ構造変更に対応していて、国勢統計区、細分区グループ、細分区 (tabblocks)テーブルをダウンロードすることができます。
norm_addy複合型を返します。tiger_geocoderに同梱されているルックアップデータで動作します (TIGER国勢調査データ自体は不要です)。
norm_addy複合型を返します。この関数は、tiger_geocoder同梱のルックアップテーブルだけを使います (TIGER国勢調査データは不要です)。住所標準化エクステンションが必要です。
norm_addy複合型オブジェクトを与えると、印刷表現を返します。通常はnormalize_addressと併用します。
PostGIS用の二つのオープンソースジオコーダがあります。これらはTIGERジオコーダーと違い、他国のジオコーディングに対応している利点があります。
Nominatimは、OpenStreetMapの地名集データを使います。PostgreSQLとPostGISの両方でデータをロードするにはosm2pgsqlが必要です。Webサービスのインタフェースとして作られていて、Webサービスとして呼ばれる設計のように見えます。TIGERジオコーダと同じように、ジオコーダーと逆ジオコーダーの要素を持ちます。文書からでは、TIGERジオコーダのような純粋なSQLインタフェースを持っているのか、多くの処理がWebインタフェースに実装されているのかは明確ではありません。
GIS GraphyはPostGISを利用し、Nominatimと同じようにOpenStreetMap (OSM)データと他のデータソースを使います。OSMデータをロードするローダーが付属されていて、Nominatimと同じように米国以外のジオコーディングが可能です。Nominatimのようにウェブサービスとして動作し、Java 1.5、サーブレットアプリケーション、Solrを使用しています。GisGraphyはクロスプラットフォームに対応していて、逆ジオコーダーやその他の機能もあります。