SDO_GEOMETRY ジオメトリ格納を使用したフィーチャクラスの作成

ジオデータベースの SDO_GEOMETRY 格納でフィーチャクラスを作成すると、次の処理が発生します。

SDO_GEOMETRY 列を含むテーブルが作成されます。

Oracle のジオデータベースにフィーチャクラスを作成するときに、GEOMETRY_STORAGE パラメータが SDO_GEOMETRY に設定された DBTUNE コンフィグレーション キーワードを指定すると、ArcGIS は、シェープ フィールドに SDO_GEOMETRY 列を使用します。

次の例のフィーチャクラスには、一意の識別子(ObjectID)フィールド、NAME 属性と POPULATION 属性、および SDO_GEOMETRY シェープ列があります。

名前

データ タイプ

NULL?

NAME

VARCHAR2(32)*

POPULATION

NUMBER(11)

SHAPE

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

注意注意:

*Unicode 文字列を使用する場合は VARCHAR2(32) ではなく NVARCHAR2(32) が使用されます。

SDO_GEOMETRY 列に空間インデックスが作成されます。

ArcGIS は、デフォルトでフィーチャクラスの SDO_GEOMETRY 列に R ツリー空間インデックスを作成します。ArcGIS は Oracle の SDO_FILTER ファンクションを使用してフィーチャクラスに対して空間検索を実行するため、空間検索に空間インデックスが必要です。

ArcGIS はフィーチャクラスの LOAD_ONLY_IO モードと NORMAL_IO モードが切り替えられるたびに、ArcGIS によって作成された Oracle Spatial インデックスを自動的に削除して再作成します。Oracle Spatial Index Advisor アプリケーションによって定義された空間インデックス、または SQL を使って作成された空間インデックスは、ArcGIS がフィーチャクラスを LOAD_ONLY_IO モードに切り替えても削除されません。

Oracle Spatial メタデータ ビューにレコードが追加されます。

ArcGIS が SDO_GEOMETRY 列を含むフィーチャクラスを作成するときに、必要な Oracle Spatial メタデータ レコードが USER_SDO_GEOM_METADATA ビューに追加されます。このメタデータには、テーブルの名前、SDO_GEOMETRY 列の名前、SRID、および座標ディメンション情報が含まれています。

ArcGIS を使用してフィーチャクラスを削除すると、Oracle Spatial メタデータも削除されます。

座標ディメンションが指定されます。

ArcGIS のジオメトリは、2D(X、Y)、2D とメジャー(X、Y、M)、3D(X、Y、Z)、または 3D とメジャー(X、Y、Z、M)で作成できます。SDO_GEOMETRY 列を含む新しいフィーチャクラスを作成すると、ArcGIS によって、メタデータ ビューの DIMINFO 列に Oracle Spatial ディメンション情報が配置されます。

SDO_GEOMETRY 列にデータが設定されます。

ジオデータベースにジオメトリを格納する際、ArcGIS は SE_SHAPE という名前の API オブジェクトから SDO_GEOMETRY 値を設定します。SE_SHAPE オブジェクトには、標高、メジャー、CAD データ、アノテーション、サーフェス パッチを含め、シンプル ジオメトリとコンプレックス ジオメトリを追加することができます。SDO_GEOMETRY データ タイプはこれらのジオメトリック プロパティの一部をサポートしています。SDO_GEOMETRY と SE_SHAPE オブジェクトのコンポーネントは 1 対 1 で対応していないため、ArcGIS はデータを Oracle Spatial テーブルに格納するときに、一連のルールに従います。

注意注意:

ArcGIS では SDO_GEOMETRY オブジェクトに種類の異なるジオメトリを追加することはできません。また、ArcGIS は SDO_GEOMETRY オブジェクトに SDO_ETYPE が 0 のエレメントをエンコードしません。SDO_ETYPE が 0 のエレメントは、アプリケーション固有のエレメントです。

CAD およびアノテーション プロパティを格納する場合は、追加の列がビジネス テーブルに追加されます。

SDO_GEOMETRY タイプでは、ArcGIS 格納でサポートしなければならないすべてのタイプのジオメトリック エレメントを格納することができません。これらのエレメントの格納領域が必要な場合(フィーチャクラスの作成時にジオメトリ タイプ フラグから決定されます)、ArcGIS は SE_ANNO_CAD_DATA という名前の列をビジネス テーブルに追加します。このトピックの最初のセクションにあるフィーチャクラスの例の場合、この時点でビジネス テーブルには次の列が含まれます。

名前

データ タイプ

NULL?

NAME

VARCHAR2(32)*

POPULATION

NUMBER(11)

SHAPE

MDSYS.SDO_GEOMETRY

SE_ANNO_CAD_DATA

BLOB

OBJECTID

NUMBER(38)

NOT NULL

注意注意:

*Unicode 文字列を使用する場合は VARCHAR2(32) ではなく NVARCHAR2(32) が使用されます。

ArcGIS はデータ ソースに CAD データが含まれていることを検出すると、CAD データのシンプル ジオメトリ表現を SDO_GEOMETRY 値に書き込み、変更していない CAD データを SE_ANNO_CAD_DATA 値に書き込みます。データ ソースに CAD データが含まれていない場合、ArcGIS は SE_ANNO_CAD_DATA 値 をNULL に設定します。SE_ANNO_CAD_DATA プロパティには、さまざまな ArcGIS コンポーネントのデータが含まれます。

Oracle Spatial フィルタ関数を使用してフィーチャクラスで空間検索が実行されます。

ArcGIS は Oracle Spatial の SDO_FILTER 関数を使用して、1 次空間検索を実行します。ArcGIS はアプリケーションが要求する空間リレーションシップに基づいて、SDO_GEOMETRY の 2 次空間検索を実行します。

アプリケーションが ArcGIS に指定する SQL WHERE 句には、Oracle Spatial の 1 次フィルタ関数と 2 次フィルタ関数が含まれていることがあります。アプリケーションは WHERE 句に空間フィルタを使用することで、空間検索をデータベース サーバ、ArcSDE アプリケーション サーバ、およびアプリケーションそのものに分散させることができます。

5/10/2014