使用者の手引きおよび解説書

ジオコーダーの使用

ここでは、ジオコーディングのプロセスを示し、コントロール・センターからジオコーダーをバッチ・モードで実行する方法について説明します。

ジオコーディングについて

前述のとおり、DB2 地理情報エクステンダーはジオコーダー という機能を使用して、 2 つのアクティビティーを実行します。すなわち、住所データを地理情報データに変換し、この地理情報データを表列に入れます。この節では、ジオコーダーとそのソース間に見られる基本的な相違を区別します。また、ジオコーダーを操作できる 2 つのモードについて説明し、ジオコーダーの使用を計画する際に考慮すべき要素も取り上げます。

地理情報エクステンダーを使用すると、次のことを行えます。

デフォルト・ジオコーダーは米国の住所をジオコーディングし、それらを ST_Point データに変換できます。その他の地理情報データ・タイプのデータを格納する必要がある場合は、そのようなデータを生成するためのジオコーダーをプラグインできます。米国以外の場所、または住所を持たない場所 (地目が異なる農地など) を表す地理情報データが必要であれば、その必要に合ったジオコーダーをプラグインすることもできます。

プラグイン・ジオコーダーを使用するには、まずその登録を済ませる必要があります。ユーザーおよびベンダーは、 db2gse.gse_register_gc ストアード・プロシージャーを使って登録を行えます。コントロール・センターから登録することはできません。 db2gse.gse_register_gc についての詳細は、db2gse.gse_register_gc を参照してください。地理情報エクステンダーのストアード・プロシージャーの使用についての詳細は、 ストアード・プロシージャーを参照してください。

ジオコーダーは、以下の 2 つのモードで運用できます。

ジオコーダーを使用するときには、以下の要素を考慮することができます。

  1. コントロール・センターを使用するときは、「ジオコーダーの実行 (Run Geocoder)」ウィンドウを使用する前に、「地理情報レイヤーの作成 (Create Spatial Layers)」ウィンドウを使用するのが一般的です。つまり、バッチ・ジオコーディングを開始する前に、地理情報エクステンダーから増分ジオコーディング用のトリガーを設定できます。したがって、増分ジオコーディングは、バッチ・ジオコーディングの前に実行することができます。すべてのソース・データをバッチ・モードで処理する場合、ジオコーダーは、増分モードで操作したのと同じデータをジオコーディングします。このような冗長性があっても、複製は行われません (地理情報データが 2 回生成されると、 2 番目のデータ生成が最初のものを上書きします)。ただし、パフォーマンスは低下します。パフォーマンスの低下を回避する 1 つの方法として、バッチ・ジオコーディングが行われるまでトリガーの設定を据え置くことができます。
  2. バッチ・モードでジオコーディングできるときにトリガーが配置されている場合は、バッチ・ジオコーディングが完了するまでトリガーを非活動化しておくことをお勧めします。そのようなトリガーは、「ジオコーダーの実行 (Run Geocoder)」ウィンドウから非活動化するか、 db2gse.gse_disable_autogc ストアード・プロシージャーを呼び出すプログラムをコーディングすることにより、アプリケーション・プログラムから非活動化することができます。「ジオコーダーの実行 (Run Geocoder)」ウィンドウを使用する場合、地理情報エクステンダーは、ジオコーディングが完了した時点でそれらのトリガーを再び活動化します。 db2gse.gse_disable_autogc ストアード・プロシージャーを使用する場合は、 db2gse.gse_enable_autogc ストアード・プロシージャーを呼び出してトリガーを再び活動化できます。
  3. 索引を持つ地理情報列にデータを取り込むためにジオコーダーをバッチ・モードで実行したい場合は、最初に索引を使用不可にするか除去してください。一方、ジオコーダーの実行中に索引を操作できる状態が続くと、パフォーマンスは極端に低下します。コントロール・センターを使用する場合、索引は、「ジオコーダーの実行 (Run Geocoder)」ウィンドウから使用不可にできます。地理情報エクステンダーは、ジオコーディングが完了した時点で索引を自動的に再び使用可能にします。アプリケーション・プログラムを使用する場合、索引は、 SQL DROP ステートメントを使って除去できます。その場合は必ず、索引のパラメーターをメモに取っておいてください。そうすれば、バッチ・ジオコーディングの完了後に索引を再作成することができます。
  4. ジオコーダーはソース・データのレコードを読み取るとき、そのレコードを参照データ内の対応レコードと一致させようとします。その一致は、ジオコーダーがレコードを処理できるように、一定の度合い (精度 という) まで正確でなければなりません。たとえば、85 という精度は、ソース・レコードを処理するために、ソース・レコードと参照データ内の対応レコードの一致精度が、少なくとも 85 パーセントでなければならないことを意味します。

    精度の度合いは、ユーザーが指定します。精度は調整しなければならない場合もあるので注意してください。たとえば、精度が 100 であると仮定します。参照データよりも最新の住所を含むソース・レコードが多数ある場合、それらのレコードが参照データと 100 パーセントの精度で一致することは考えられません。結果として、ジオコーダーはそれらのレコードを拒否します。ジオコーダーが不十分なデータや、かなり不正確なデータを生成した場合、そのような問題は一般に、精度を変更してジオコーダーを再実行すれば解決できる可能性があります。

コミットが発行される前にジオコーダーが処理するレコードの数または範囲を制御するには、いくつかの方法があります。

メソッド 1

ジオコーダーは、毎回のコミットの前に、特定の数のレコードにある住所データをジオコードできます。このメソッドにより、作業単位のサイズを正確に管理することができます。ただし、このメソッドはここで説明する他のメソッドに比べて、かなり大きいオーバーヘッドを消費します。

メソッド 1 を開始するには、毎回のコミットの前に処理するレコードの数を指定します。コントロール・センターを使用する場合は、「ジオコーダーの実行 (Run Geocoder)」ウィンドウの「効力範囲のコミット (Commit scope)」スピン・ボタンでこの数を設定します。アプリケーション・プログラムを作成する場合は、 db2gse.gse_run_gc ストアード・プロシージャーの commitScope パラメーターにこの数を割り当てます。

メソッド 2

ジオコーダーは、コミットが発行される前に、表のすべてのレコードにある住所データをジオコードできます。このメソッドを使用すると、ジオコーダーはバッチ操作と同様の方法でレコードを処理し、メソッド 1 と比べて消費されるレコードあたりのオーバーヘッドがかなり少なくなります。ただし、作業単位のサイズに対する制御もメソッド 1 の場合より少なくなります。その結果、保留にするロックの数や、ジオコーダーが操作するときに行われるログ入力の数を制御できません。さらに、ロールバックが必要になるエラーが発生する場合、ジオコーダーがすべてのレコードに対して実行するように設定し直さなければなりません。表が非常に大きく、ほとんどのレコードが処理されたあとでエラーおよびロールバックが発生する場合、リソースにかかるコストは高くなることがあります。

メソッド 2 をコントロール・センターから開始するには、「ジオコーダーの実行 (Run Geocoder)」ウィンドウの「効力範囲のコミット (Commit scope)」スピン・ボタンをゼロに設定します。アプリケーション・プログラムを作成する場合は、 db2gse.gse_run_gc ストアード・プロシージャーの commitScope パラメーターをゼロに設定します。

メソッド 3

ジオコーダーは、毎回のコミットの前に、表のレコードのサブセットにある住所データをジオコードできます。次に、2 番目のサブセットにある住所データをジオコードし、必要に応じて 3 番目、4 番目と続きます。ジオコーダーはバッチ操作と同様の方法で各サブセットを処理し、メソッド 1 と比べて消費されるレコードあたりのオーバーヘッドがかなり少なくなります。しかし、メソッド 2 と同じように、メソッド 3 では作業単位のサイズに対して直接制御することはできません。さらに、ジオコーダーを複数回 (レコードの各サブセットごとに 1 回) 設定および実行するオーバーヘッドが必要になります。

コントロール・センターからレコードのサブセットを定義するには、次のようにします。

アプリケーション・プログラムでレコードのサブセットを定義するには、次のように db2gse.gse_run_gc ストアード・プロシージャーをコーディングします。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]