空間インデックスの設定の概要
空間インデックスは、データの表示、編集、検索の際に、フィーチャをすばやく特定するために使用されます。このため、特に大量のデータを扱う場合には、空間インデックスが適切に設定されていることが重要となります。
空間インデックスの動作は、データ ソースによって異なります。ファイル ジオデータベースおよび DB2 の ArcSDE ジオデータベース、バイナリ ジオメトリ格納を使用する Oracle および SQL Server の ArcSDE ジオデータベース、ST_Geometry 格納を使用する Oracle の ArcSDE ジオデータベースは、最大で 3 つのグリッドからなる空間インデックスを使用します。パーソナル ジオデータベースはグリッドを 1 つ使用します。グリッドは、グリッド サイズと呼ばれるサイズによって定義されます。これはグリッドの各セルのサイズであり、フィーチャクラスの座標系の単位で指定されます。Oracle Spatial、および PostgreSQL はグリッド サイズを使用せず、R ツリー インデックスを使用します。同様に、SQL Server の空間タイプでも空間インデックスはグリッドを使用しません。
ファイル ジオデータベースと ArcSDE ジオデータベースでの空間インデックスの管理方法
ArcGIS は、ファイル ジオデータベースおよび ArcSDE ジオデータベースでの特定の操作の最後に空間インデックスを自動的に再構築して、空間インデックスを最適な状態に保ちます。次に、ArcGIS が空間インデックスを管理する方法を示します。
- [フィーチャクラスの新規作成] ウィザードで空のフィーチャクラスを作成すると、空間インデックスが作成されます。このフィーチャクラスが空間グリッド インデックスを使用する場合には、グリッド サイズ 0,0,0 でインデックスが作成され、未構築状態に設定されます。ArcCatalog のシンプル データ ローダーまたは [アペンド] ツールによってデータが読み込まれると、読み込みプロセスの最終ステップとして空間インデックスが構築されます。そして、新たに追加されたフィーチャに適したグリッド サイズが計算されます。
- パーソナル ジオデータベース、シェープファイル、またはカバレッジからデータをインポートする場合、あるいは CAD/SDC データをインポートする場合には、新しいフィーチャクラスの空間インデックスが自動的に計算されます。
- ArcCatalog の [コピー] コマンドと [貼り付け] コマンドを使用して、パーソナル ジオデータベースのフィーチャクラスをファイルまたは ArcSDE ジオデータベースにコピーすると、空間インデックスが自動的に再構築されます。空間インデックスは、Oracle Spatial または PostgreSQL からフィーチャクラスをコピーする場合にも再構築されます。グリッド サイズを使用するファイル ジオデータベースまたは ArcSDE ジオデータベース(Oracle バイナリと ST_Geometry、SQL Server バイナリ、DB2)のフィーチャクラスを、グリッド サイズを使用する別のジオデータベースにコピーする場合、空間インデックスはソース データとともにコピーされ、再構築されません。
- フィーチャクラスを作成するジオプロセシング ツールを使用する際には、作成されるフィーチャクラスに含まれるフィーチャを基に、新しい空間インデックスが自動的に計算されます。
- ArcMap でファイル ジオデータベースのフィーチャクラスに編集内容を保存すると、ArcGIS が空間インデックスを解析します。グリッド サイズが 0,0,0 に設定されている場合は、追加されたばかりのフィーチャに基づいて、空間インデックスを適切なグリッド サイズで自動的に再構築します。このプロセスは、ArcSDE ジオデータベースでは実行されません。
- 圧縮されたファイル ジオデータベースのフィーチャクラスは、圧縮されていないフィーチャクラスとは異なるタイプの空間インデックスを使用します。ファイル ジオデータベースのフィーチャクラスを圧縮すると、空間インデックスが自動的に再計算されます。この空間インデックスを変更することはできません。フィーチャクラスの圧縮を解除すると、圧縮前と同じ空間インデックスが自動的に再構築されます。
ファイル ジオデータベースと ArcSDE ジオデータベースで空間インデックスが更新されるタイミング
ファイル ジオデータベースと ArcSDE ジオデータベースの空間インデックスは ArcGIS によって管理されるため、空間インデックスを手動で設定または再計算する必要はほとんどありません。空間インデックスの変更または再計算が必要になるのは、次に示す特異な状況に限られます。
- フィーチャクラスにすでに存在するフィーチャとはサイズが異なるフィーチャを大量に追加した場合は、空間インデックスを手動で再計算します。これが当てはまるのは、編集セッションでのフィーチャの追加に限られます。たとえば、編集セッションを開始して、大量のライン フィーチャを手動で追加する、またはオブジェクト ローダーを使用してそれらを読み込むとします。追加したフィーチャの多くが、フィーチャクラスの既存のフィーチャよりもかなり長いか短い場合は、空間インデックスを新しいフィーチャで最適に機能するように更新する必要があります。このフィーチャクラスが空間グリッド インデックスを使用する場合には、編集内容を保存した後、[フィーチャクラス プロパティ] ダイアログ ボックスの [インデックス] タブにアクセスし、[再計算] ボタンをクリックして、空間インデックスを更新します。
- グリッド サイズが 0,0,0 のファイル ジオデータベースのフィーチャクラスにフィーチャを追加して、編集内容を保存すると、空間インデックスが自動的に構築されます。ただし、同じ編集セッションで引き続きフィーチャを追加した場合、グリッド サイズは 0,0,0 ではないので、それ以降の保存では空間インデックスは再計算されません。フィーチャの追加が完了したら、[フィーチャクラス プロパティ] ダイアログ ボックスの [インデックス] タブで [再計算] ボタンをクリックし、グリッド サイズを更新します。ただし、フィーチャクラスの既存のフィーチャと同じようなサイズのフィーチャを追加した場合は、空間インデックスを手動で再計算しても、空間インデックスがほとんどあるいはまったく変化しないことがあります。
- フィーチャクラスに大きなフィーチャを追加したい場合は、フィーチャを追加する前に空間インデックスを削除しなければならない可能性があります。これは、フィーチャを追加したときに、空間インデックスのグリッド サイズが無効であることを示すエラー メッセージが表示された場合です。この場合は、編集を中止して、[フィーチャクラス プロパティ] ダイアログ ボックスを開き、空間インデックスを削除します。次に、編集セッションを再開して、新しいフィーチャを追加します。フィーチャの追加が完了したら、新しい空間インデックスを再計算します。
ここまでの大部分は、空間グリッド インデックスについて ArcGIS によって計算されるデフォルトのグリッド サイズを使用する方法について説明してきました。ほとんどの場合、高速な空間検索にはデフォルトのグリッド サイズが適しています。ただし、データの特性やそのアクセス方法によっては、最適なサイズではない可能性があり、グリッド サイズを独自に設定すると、パフォーマンスが向上する場合があります。より適切なグリッド サイズを割り出すには、さまざまなサイズを試しながらパフォーマンス テストを実施して、その結果を比較します。ただし、既存のグリッド サイズがすでに最適な状態で、パフォーマンスを改善できないこともあります。
グリッド サイズを手動で入力した後、ArcGIS の既定サイズに戻す場合は、[フィーチャクラス プロパティ] ダイアログ ボックスの [インデックス] タブで [再計算] ボタンをクリックします。また、[デフォルト空間グリッド インデックスを計算(Calculate the default spatial grid index)] ジオプロセシング ツールを使用して適切なグリッド サイズを計算することもできますが、その場合は [再計算] ボタンをクリックしたときと同じサイズが得られます。
Microsoft SQL Server の空間タイプ インデックスを使用する場合にはグリッドを使用しないため、グリッドの再計算は必要ありません。
パーソナル ジオデータベースの空間インデックス
パーソナル ジオデータベースでフィーチャクラスを作成する場合は、[フィーチャクラスの新規作成] ウィザード、ジオプロセシング ツールなどの作成方法にかかわらず、空間インデックスのグリッド サイズが自動的に計算されます。計算されたグリッド サイズの変更はできません。計算されたグリッド サイズは、フィーチャクラス座標系の水平線を基準とし、常に最適サイズになります。