Oracle に格納されたジオデータベースのフィーチャクラス

フィーチャクラスは、すべてが同じジオメトリ タイプ(ポイント、ライン、ポリゴン、マルチポイント、アノテーション、ディメンション、またはマルチパッチ)の地理フィーチャのコレクションです。たとえば、1 つのフィーチャクラスに線路沿いのすべての列車車庫のポイントを格納することができます。別のフィーチャクラスには、すべての鉄道線路を表すラインを格納することできます。

このトピックでは、カタログ ウィンドウ、DBMS(データベース管理システム)、および XML ドキュメントでのフィーチャクラスの表示について説明します。

ArcGIS for Desktop のフィーチャクラス

ArcGIS for Desktop で作成可能なフィーチャクラスには、ポイント、マルチポイント、ライン、ポリゴン、アノテーション、ディメンション、およびマルチパッチの 7 つのタイプがあります。

カタログ ツリーでは、フィーチャクラスのタイプをアイコンに基づいて判断できます。次の表に、フィーチャクラスの各タイプを表すアイコンを示します。

フィーチャクラスのアイコン

フィーチャクラスのタイプ

ポイントまたはマルチポイント フィーチャクラスのアイコン

ポイントまたはマルチポイント

ライン フィーチャクラスのアイコン

ライン

ポリゴン フィーチャクラスのアイコン

ポリゴン

アノテーション フィーチャクラスのアイコン

アノテーション

ディメンション フィーチャクラスのアイコン

ディメンション

マルチパッチ フィーチャクラスのアイコン

マルチパッチ

Oracle では、カタログ ツリーに表示されるフィーチャクラスの名前に、フィーチャクラスを所有するユーザの名前とフィーチャクラス自体の名前が含まれます。

たとえば、ユーザ Perrita が所有している parcels フィーチャクラスは、カタログ ツリーに「PERRITA.Parcels」として表示されます。

フィーチャクラスの各タイプについては、「フィーチャクラスの基礎」をご参照ください。

Oracle データベースでのフィーチャクラス テーブル

Oracle データベースのフィーチャクラスでは、ST_Geometry(デフォルト)、バイナリ、または SDO_Geometry の 3 つのジオメトリ格納タイプのいずれかを使用します。

すべてのフィーチャクラスにはベース テーブル(ビジネス テーブル)が作成され、属性情報、ObjectID、および Shape フィールドが格納されます。ObjectID および Shape フィールドには別の名前を付けることができますが、これらのフィールドはフィーチャクラスのベース テーブルに存在している必要があります。

ヒントヒント:

アノテーション フィーチャクラスとディメンション フィーチャクラスのベース テーブルには、追加の必須フィールドがあります。これらのフィールドのリストについては、「アノテーション フィーチャクラス プロパティの管理」と「ディメンション フィーチャのプロパティ」をご参照ください。

Oracle データベースに ST_Geometry タイプで格納されるフィーチャクラス テーブル

ST_Geometry ユーザ定義タイプで格納されるフィーチャクラスは、ベース テーブルと空間インデックスで構成されます。ST_Geometry フィーチャクラスでは、フィーチャクラスのジオメトリを ST_LineString、ST_MultiPoint、ST_Polygon などのサブクラスを使用して ST_Geometry 空間列に格納します。ジオメトリ値は、この空間列に直接格納されます。

ST_Geometry フィーチャクラスにも関連する空間インデックス(S)テーブルがあります。空間インデックス テーブルの命名規則は、フィーチャクラスの空間インデックスの作成時に ST_GEOMETRY_INDEX テーブルに生成される ID に関連しています。たとえば、ST_GEOMETRY_INDEX テーブルの空間インデックスの INDEX_ID の値が 16 である場合、名前は S16_IDX$ になります。

テーブルで空間インデックスを作成すると、ST_GEOMETRY_COLUMNS システム テーブルと ST_GEOMETRY_INDEX システム テーブルにそのテーブルのエントリが作成されます。選択と DML メタデータの操作には、ST_GEOMETRY_COLUMNS 情報スキーマ テーブルが使用されます。ST_GEOMETRY_COLUMNS テーブルに対するエントリの挿入と削除には、ストアド プロシージャが使用されます。

フィーチャクラスが ST_Geometry 格納を使用して作成されると、ST_Geometry 列を持つビジネス テーブルが所有者のスキーマに作成されます。また、フィーチャクラスに関する情報を追跡するために、sde ユーザのスキーマ内の LAYERS、TABLE_REGISTRY、ST_GEOMETRY_COLUMNS、COLUMN_REGISTRY、ST_SPATIAL_REFERENCES(空間参照が定義された場合)、および GDB_ITEMS テーブルにレコードが追加されます。sde ユーザのスキーマ内の GDB_ITEMTYPES テーブルは、データのタイプ(この場合はフィーチャクラス)を定義します。

注意注意:

ST_Geometry 列のあるテーブルを作成しても、ST_Geometry メタデータは挿入されません。このメタデータ情報は明示的に(またはアプリケーションで)登録しなければなりません。

Esri では、システム テーブルの手動による操作をサポートしていません。ST_Geometry 空間列を持ち、ArcSDE に登録されている、または ArcSDE によって作成されたテーブルでは、そうしたテーブルのメタデータを手動で変更しないことが重要となります。

View a diagram of a feature class using ST_Geometry storage in Oracle.

注意注意:

このファイルを開くには、Adobe Acrobat Reader が必要です。

破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。

Oracle データベースにバイナリ ジオメトリ タイプで格納されるフィーチャクラス テーブル

Oracle のジオデータベースにバイナリ形式(ArcSDE Compressed Binary またはジオメトリの OGC Well-Known Binary 表現)で格納されるフィーチャクラスは、ここで説明するように、ベース テーブル、関連するフィーチャ テーブル、空間インデックス テーブルで構成されます。

  • ベース テーブル

    バイナリ スキーマ実装では、ベース テーブルの空間列に空間データを一意に参照するフィーチャ ID が含まれています。フィーチャ ID は、ベース テーブルを 2 つの別のテーブル(フィーチャ テーブルと空間インデックス テーブル)に関連付けます。空間対応のバージョン対応登録されていないベース テーブルには、ベース テーブルとフィーチャ テーブルのレコード間のリレーションシップを維持するために、データベース トリガが定義されます。すべてのバージョン対応登録されていないベース テーブルには、ベース テーブルの空間列が削除された場合にフィーチャ テーブルからもそれを削除するための、CASCADE DELETE トリガがあります。これらのトリガは Oracle Enterprise Manager で確認することができます。これらのトリガは、スタンドアロンのフィーチャクラスまたはフィーチャ データセットのフィーチャクラスがバージョン対応登録されるたびに、自動的に削除されます。フィーチャクラスのバージョン対応登録が解除されると、それらは再作成されます。これらのトリガのいずれかを編集した場合、フィーチャクラスをバージョン対応登録すると、トリガは削除されます。

  • フィーチャ テーブル(F<レイヤ ID>)

    フィーチャ テーブルは、各フィーチャのジオメトリック シェープを格納します。このテーブルは、LAYERS テーブルの LAYER_ID 列の番号によって識別されます。ベース テーブルとフィーチャ テーブル間のリレーションシップは、フィーチャ ID(FID)を通じて管理されます。ArcSDE によって管理されるこのキーは、空間列において一意です。

    フィーチャ テーブルの定義

    フィールド名

    フィールド タイプ

    説明

    NULL?

    FID

    NUMBER(38)

    主キー。フィーチャ テーブルをベース テーブルに結合する一意な ID

    NOT NULL

    NUMOFPTS

    NUMBER(38)

    フィーチャを定義するポイントの数

    NOT NULL

    ENTITY

    NUMBER(38)

    空間列に格納されるジオメトリのタイプ(ポイント、ライン、ストリングなど)

    NOT NULL

    EMINX

    FLOAT(64)

    フィーチャの最小 X 値。eminy、emaxx、emaxy とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMINY

    FLOAT(64)

    フィーチャの最小 Y 値。eminx、emaxx、emaxy とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMAXX

    FLOAT(64)

    フィーチャの最大 X 値。eminx、eminy、emaxy とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMAXY

    FLOAT(64)

    フィーチャの最大 Y 値。eminx、eminy、emaxx とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMINZ

    FLOAT(64)

    3D フィーチャの最小 Z 値

    EMAXZ

    FLOAT(64)

    3D フィーチャの最大 Z 値

    MIN_MEASURE

    FLOAT(64)

    フィーチャの最小 M 値

    MAX_MEASURE

    FLOAT(64)

    フィーチャの最大 M 値(NULL 値を許可)

    AREA

    FLOAT(64)

    ジオメトリの面積

    LEN

    FLOAT(64)

    ジオメトリの外周の長さ

    POINTS

    LONG RAW

    ジオメトリを定義するポイント座標のバイト ストリーム

    フィーチャが挿入または更新されると、extents や numofpts といった列の値は自動的に再計算されます。

    ベース テーブルとフィーチャ テーブル間のリレーションシップは、空間列と FID 列を通じて管理されます。ArcSDE によって管理されるこのキーは一意です。ベース テーブルとフィーチャ テーブル間で参照整合性を維持することは重要です。フィーチャ テーブルまたは空間インデックス テーブルでレコードを編集しないでください。ベース テーブル、フィーチャ テーブル、空間インデックス テーブルには、参照整合性を維持するためのインデックスと制約が追加されています。ただし、これらのインデックスと制約は、フィーチャクラスが LOAD_ONLY_IO モード(フィーチャクラスへの高速なデータ挿入が有効な状態)に変換されたときに削除されます。

    フィーチャクラスが NORMAL_IO モードに戻され、ArcSDE クライアントを通じてフィーチャクラスを検索できる状態になると、インデックスが作成され、制約が有効になります。NORMAL_IO モードへの変換は、ベース テーブルの空間列またはフィーチャ テーブルの FID 列で一意インデックスを構築できなければ失敗します。また、ベース テーブルの空間列に存在する値がフィーチャ テーブルの FID 列に存在しない場合にも失敗します。この場合は、無効なベース テーブルのレコードへの参照が SDE_EXCEPTIONS テーブルに読み込まれます。

    フィーチャ テーブルは、ジオメトリ、アノテーション、CAD エレメントを POINTS 列に格納します。POINTS 列は、DBTUNE キーワードの GEOMETRY_STORAGE パラメータの設定に応じて、BLOB または LONG RAW として定義することができます。LONG RAW として定義された列で Compressed Binary 空間データを格納したい場合は、DBTUNE キーワードの GEOMETRY_STORAGE パラメータを SDEBINARY に設定します。BLOB として定義された列で Compressed Binary 空間データを格納したい場合は、SDELOB に設定します。

  • 空間インデックス テーブル(S<レイヤ ID>)

    バイナリ実装の空間インデックスは、空間インデックス テーブルです。このテーブルは、シンプルな均一のグリッドに基づいて、シェープへの参照を格納します。このテーブルは、LAYERS テーブルの LAYER_ID 列の番号によって識別されます。

    空間インデックスには空間検索をサポートするためのシェープとグリッド セルの組み合わせごとに、エントリが 1 つ含まれます。3 つのグリッド セルにまたがるフィーチャの場合は、テーブルに 3 つのエントリが含まれます。空間検索を実行すると、検索エリアのグリッド セルが特定され、候補ジオメトリのリストを取得するために使用されます。

    空間インデックス テーブルの定義

    フィールド名

    フィールド タイプ

    説明

    NULL?

    SP_FID

    NUMBER(38)

    主キー。空間インデックス テーブルをベース テーブルに結合する一意な ID

    NOT NULL

    GX

    NUMBER(38)

    空間インデックス グリッドの X 値

    NOT NULL

    GY

    NUMBER(38)

    空間インデックス グリッドの Y 値

    NOT NULL

    EMINX

    NUMBER(38)

    フィーチャの最小 X 値。eminy、emaxx、emaxy とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMINY

    NUMBER(38)

    フィーチャの最小 Y 値。eminx、emaxx、emaxy とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMAXX

    NUMBER(38)

    フィーチャの最大 X 値。eminx、eminy、emaxy とともにフィーチャのエンベロープを定義します。

    NOT NULL

    EMAXY

    NUMBER(38)

    フィーチャの最大 Y 値。eminx、eminy、emaxx とともにフィーチャのエンベロープを定義します。

    NOT NULL

    空間インデックス テーブル

    空間インデックス テーブルは、ArcSDE フィーチャクラスのすべてのジオメトリのグリッド範囲を定義します。

    • sp_fid - フィーチャ テーブルをベース テーブルに結合する一意の ID を含んでいます。
    • gx/gy - フィーチャの範囲をグリッド セルで定義します。
    • eminx/eminy/emaxx/emaxy - フィーチャの範囲をシステム単位で定義します。

    次の例では、WELLS ベース テーブルの FEATURE-ID 列が、フィーチャ テーブルと空間インデックス テーブルのフィーチャを参照しています。

    WELL_ID	DEPTH	ACTIVE	FEATURE-ID
    1	30029	Yes	101
    2	13939	No	102
    3	92891	No	103
    …	…		…
    
    FID
    AREA	LEN	EMINX,EMINY,…	POINTS
    101				<compressed feature>
    102				<compressed feature>
    103				<compressed feature>
    …				…
    
    SP_FID	GX	GY	{EMINX,EMINY,EMAXX,EMAXY}
    101	70	100	
    102	70	100	
    103	71	100	
    …			
            A business/feature/spatial index key reference

注意注意:

バイナリ タイプのフィーチャクラスの空間インデックスは LAYERS テーブルの LAYER_ID 値によって識別されますが、ST_Geometry タイプのフィーチャクラスの空間インデックス テーブルは ST_GEOMETRY_INDEX テーブルに生成された INDEX_ID によって識別されます。

View a diagram of a feature class using binary storage in Oracle.

注意注意:

このファイルを開くには、Adobe Acrobat Reader が必要です。

破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。

Oracle データベースに Oracle Spatial ジオメトリ タイプで格納されるフィーチャクラス テーブル

Oracle Spatial は、空間ジオメトリ タイプ(MDSYS.SDO_GEOMETRY)を使用します。これらのフィーチャクラスでもベース テーブルが作成されますが、ベース テーブルにはフィーチャクラスのジオメトリを格納する SDO_Geometry 空間列があります。ジオメトリ値は、この空間列に直接格納されます。

View a diagram of a feature class using SDO_Geometry storage in Oracle..

注意注意:

このファイルを開くには、Adobe Acrobat Reader が必要です。

破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。

XML ドキュメントのフィーチャクラス

フィーチャクラスは DataElement エレメント内で定義されます。フィーチャクラスを定義する DataElement タグには、esri:DEFeatureClass のタイプが設定されます。フィーチャクラスの DataElement 内には、Field、Domain、ConfigurationKeyword、SpatialReference elements などのフィーチャクラスを定義する他のエレメントが配置されます。

次に、Parcels フィーチャクラスを定義する XML ドキュメントのコンテンツの一部を示します。

<DataElement xsi:type="esri:DEFeatureClass">
           <CatalogPath>/V=SDE.DEFAULT/FC=PERRITA.PARCELS</CatalogPath> 
           <Name>PERRITA.PARCELS</Name> 
           <DatasetType>esriDTFeatureClass</DatasetType> 
           <DSID>21</DSID> 
           <Versioned>false</Versioned> 
           <CanVersion>true</CanVersion> 
           <HasOID>true</HasOID> 
           <OIDFieldName>OID</OIDFieldName> 
           <Fields xsi:type="esri:Fields">
              <FieldArray xsi:type="esri:ArrayOfField">
                 <Field xsi:type="esri:Field">
                   <Name>OID</Name> 
                   <Type>esriFieldTypeInteger</Type> 
                   <IsNullable>false</IsNullable> 
                   <Length>4</Length> 
                   <Precision>10</Precision> 
                   <Scale>0</Scale>
                   <Required>true</Required>
                   <Editable>false</Editable>
                   <AliasName>OBJECTID</AliasName>
                   <ModelName>OBJECTID</ModelName> 
                 </Field>

フィーチャクラスを定義するその他のすべてのエレメント

</DataElement>

関連トピック

5/10/2014