ここでは、ジオコーディングのプロセスを示し、コントロール・センターからジオコーダーをバッチ・モードで実行する方法について説明します。
前述のとおり、DB2 地理情報エクステンダーはジオコーダー という機能を使用して、 2 つのアクティビティーを実行します。すなわち、住所データを地理情報データに変換し、この地理情報データを表列に入れます。この節では、ジオコーダーとそのソース間に見られる基本的な相違を区別します。また、ジオコーダーを操作できる 2 つのモードについて説明し、ジオコーダーの使用を計画する際に考慮すべき要素も取り上げます。
デフォルト・ジオコーダーは米国の住所をジオコーディングし、それらを ST_Point データに変換できます。その他の地理情報データ・タイプのデータを格納する必要がある場合は、そのようなデータを生成するためのジオコーダーをプラグインできます。米国以外の場所、または住所を持たない場所 (地目が異なる農地など) を表す地理情報データが必要であれば、その必要に合ったジオコーダーをプラグインすることもできます。
プラグイン・ジオコーダーを使用するには、まずその登録を済ませる必要があります。ユーザーおよびベンダーは、 db2gse.gse_register_gc ストアード・プロシージャーを使って登録を行えます。コントロール・センターから登録することはできません。 db2gse.gse_register_gc についての詳細は、db2gse.gse_register_gc を参照してください。地理情報エクステンダーのストアード・プロシージャーの使用についての詳細は、 ストアード・プロシージャーを参照してください。
ジオコーダーは、以下の 2 つのモードで運用できます。
ジオコーダーを使用するときには、以下の要素を考慮することができます。
精度の度合いは、ユーザーが指定します。精度は調整しなければならない場合もあるので注意してください。たとえば、精度が 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 ストアード・プロシージャーをコーディングします。