ArcGIS は、空間インデックスを使用して、フィーチャクラスの空間検索パフォーマンスを向上させます。ArcGIS Pro では、フィーチャの個別属性表示、ボックスのポイントまたはドラッグによるフィーチャの選択、画面移動とズームを実行する場合に、空間インデックスを使用してフィーチャを特定する必要があります。
空のフィーチャクラスを作成するか、ArcGIS からデータをインポートしてジオデータベース内にフィーチャクラスを作成すると、フィーチャクラスに空間インデックスが作成されます。空間インデックスは、データの検索および編集中に使用されます。
メモ:
これに対する例外は Db2 です。Db2 のジオデータベースに空のフィーチャクラスを作成する場合、空間インデックスは作成されません。
空間インデックス タイプ
空間インデックスは、データ ソースによって異なります。以下のタイプのデータベース内のフィーチャクラスは、グリッドベースの空間インデックスを使用します。
- ファイル ジオデータベース
- Db2 のジオデータベース
- Oracle のジオデータベース (フィーチャクラスに Esri ST_Geometry 列が含まれている場合)
Oracle Spatial (SDO_Geometry) データ タイプを含む Oracle のフィーチャクラスは、R ツリー空間インデックスを使用します。
PostgreSQL のフィーチャクラスは、GiST (Generalized Search Tree) インデックスを使用します。
Geometry または Geography 空間列を含んでいる Microsoft SQL Server のフィーチャクラスは、変更された B-ツリー空間インデックスを使用します。Geometry 空間列の空間インデックスには、境界四角形の座標も格納されています。境界四角形については、Microsoft SQL Server のマニュアルをご参照ください。
ArcGIS の空間インデックス管理
ArcGIS が空間インデックスを作成または再構築する方法は、ジオデータベースのタイプによって異なります。エンタープライズ ジオデータベースの場合は、使用するデータベース管理システムによって異なります。次の 2 つのセクションでは、これらの機能の違いについて説明します。
ファイル ジオデータベースの空間インデックス
- フィーチャクラスを作成する際、ArcGIS は空間インデックスを作成します。
- フィーチャクラスをジオデータベースからファイル ジオデータベースにコピーする際、ソース フィーチャクラスがグリッドベースのインデックス (Oracle Esri ST_Geometry、Db2、またはファイル ジオデータベース) を使用している場合、空間インデックスはソース データとともにコピーされます。ソース データがその他のインデックス タイプを使用している場合は、ターゲット ファイル ジオデータベースで空間インデックスが再構築されます。
- 圧縮されたファイル ジオデータベースのフィーチャクラスは、圧縮されていないフィーチャクラスとは異なるタイプの空間インデックスを使用します。ファイル ジオデータベースのフィーチャクラスを圧縮すると、空間インデックスが自動的に再計算されます。この空間インデックスを変更することはできません。フィーチャクラスを解凍すると、圧縮前と同じ空間インデックスが自動的に再構築されます。
エンタープライズ ジオデータベースの空間インデックス
次のリストでは、サポート対象の各データベース管理システムのジオデータベースにあるフィーチャクラスの空間インデックスを ArcGIS が管理する方法について説明します。
- Db2
- フィーチャクラスを作成する際、ArcGIS は空間インデックスを作成しません。
- 空間インデックスを含まないフィーチャクラスにフィーチャの編集を保存すると、空間インデックスが作成されます。
- フィーチャクラスをジオデータベースから Db2 のジオデータベースにコピーする際、ソース フィーチャクラスがグリッドベースのインデックス (Oracle Esri ST_Geometry、Db2、またはファイル ジオデータベース) を使用している場合、空間インデックスはソース データとともにコピーされます。ソース データがその他のインデックス タイプを使用している場合、ArcGIS はコピーされたフィーチャに基づいて、Db2 のターゲット ジオデータベースに空間インデックスを作成します。
- Oracle
- フィーチャクラスを作成する際、ArcGIS は空間インデックスを作成します。
- 空間インデックスを含まないフィーチャクラスにフィーチャの編集を保存すると、空間インデックスが作成されます。
- フィーチャクラスをジオデータベースから Oracle のジオデータベースにコピーし、フィーチャクラスに Esri ST_Geometry タイプを使用する際、ソース フィーチャクラスがグリッドベースのインデックス (Oracle Esri ST_Geometry、Db2、またはファイル ジオデータベース) を使用している場合、空間インデックスはソース データとともにコピーされます。ソース データがその他のインデックス タイプを使用している場合、ArcGIS はコピーされたフィーチャに基づいて、Oracle のターゲット ジオデータベースに空間インデックスを作成します。
- PostgreSQL
- フィーチャクラスを作成する際、ArcGIS は空間インデックスを作成します。
- 空間インデックスを含まないフィーチャクラスにフィーチャの編集を保存すると、空間インデックスが作成されます。
- フィーチャクラスをジオデータベースから PostgreSQL のジオデータベースにコピーする場合、ArcGIS はコピーされたフィーチャに基づいて、PostgreSQL のフィーチャクラスに空間インデックスを作成します。
- SQL Server
- フィーチャクラスを作成する際、ArcGIS は空間インデックスを作成します。
- 空間インデックスを含まないフィーチャクラスにフィーチャの編集を保存しても、空間インデックスは作成されません。
- フィーチャクラスをジオデータベースから SQL Server のジオデータベースにコピーする場合、ArcGIS はコピーされたフィーチャに基づいて、SQL Server のフィーチャクラスに空間インデックスを作成します。
- SAP HANA は検索のパフォーマンス向上のために空間インデックスを使用しません。このため、ArcGIS は空間インデックスを作成または維持しません。
空間インデックスの更新時期
Geometry 空間タイプを使用する SQL Server のフィーチャクラスの場合、空間インデックスは境界四角形を使用します。この境界四角形は、フィーチャの挿入および削除時に手動で更新する必要があります。SQL Server のフィーチャクラスの空間インデックスを再計算するタイミングを判断するには、[フィーチャクラス プロパティ] ダイアログ ボックスで [整合チェック] 操作を使用します。
その他のすべてのジオデータベースおよび空間タイプで、空間インデックスを管理する必要はほとんどありません。ただし、多数のフィーチャを追加または削除した後に空間クエリのパフォーマンスが低下する場合は、影響を受けているフィーチャクラスで空間インデックスを再構築 (Oracle) または再作成することで、空間クエリのパフォーマンスが向上することがあります。