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

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

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

ArcGIS Desktop のフィーチャクラス

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

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

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

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

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

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

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

ライン

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

ポリゴン

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

アノテーション

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

ディメンション

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

マルチパッチ

Microsoft SQL Server では、カタログ ツリーに表示されるフィーチャクラスの名前には、フィーチャクラスが格納されているデータベースの名前、フィーチャクラスを所有しているユーザの名前、そしてフィーチャクラスの名前が含まれています。

たとえば、ジオデータベース「geodata」でユーザ「sasha」に所有されているフィーチャクラス「parcels」は、カタログ ツリーでは「geodata.SASHA.PARCELS」と表示されます。

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

Microsoft SQL Server データベースに格納されたフィーチャクラス

SQL Server データベースのフィーチャクラスでは、3 つのジオメトリ格納タイプ、バイナリ、Microsoft Geometry、または Microsoft Geography のいずれかが使用されます。

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

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

注意注意:

データを読み込むたび、または sdesetup を実行するたびに、データベースに複数の i テーブルとストアド プロシージャが定義されます。これらのストアド プロシージャと i テーブルは、フィーチャクラスのフィーチャ ID の生成に使用されます。i テーブルの名前には番号が含まれています。この番号は、SDE_table_registry テーブルのフィーチャクラスの registration_id に相当します。これらのテーブルまたはストアド プロシージャの編集はサポートされていません。

SQL Server データベースにバイナリ形式で格納されるフィーチャクラス

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

デフォルトでは、フィーチャは ArcSDE Compressed Binary タイプを使用して格納されます。

SQL Server のフィーチャクラスに対する f および s のベース テーブル
  • ベース テーブル

    ベース テーブルは、属性を格納する DBMS テーブルであり、空間列を追加することにより空間に対応します。ベース テーブルの名前は、フィーチャクラスの名前です。先の図では、ベース テーブルは PARCELS テーブルです。

    バイナリ スキーマ実装では、ベース テーブルの空間列(上記の例では PARCELS テーブルの SHAPE フィールド)に空間データを一意に参照するフィーチャ ID が含まれます。フィーチャ ID は、ベース テーブルをフィーチャ テーブルと空間インデックス テーブルに関連付けます。

    空間対応のベース テーブルには、ベース テーブルとフィーチャ テーブルのレコード間のリレーションシップを維持するために、データベース トリガが定義されます。

    すべてのバージョン非対応のフィーチャクラスのベース テーブルに、DELETE-UPDATE トリガと INSERT トリガが含まれています。INSERT トリガは、ベース テーブルの空間列に重複する値が含まれないようにします。DELETE-UPDATE トリガは、ベース テーブル、フィーチャ テーブル、空間インデックス テーブルの空間列に対する操作を管理します。

    これらのトリガは、スタンドアロンのフィーチャクラスまたはフィーチャ データセットのフィーチャクラスがマルチバージョン対応になるたびに、自動的に削除されます。フィーチャクラスのバージョン対応登録が解除されると、それらは再作成されます。これらのトリガのいずれを編集した場合も、フィーチャクラスをマルチバージョン対応にすると、トリガは削除されます。

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

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

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

    フィールド名

    フィールド タイプ

    説明

    NULL?

    fid

    int

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

    いいえ

    numofpts

    int

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

    いいえ

    entity

    smallint

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

    いいえ

    eminx

    float

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

    いいえ

    eminy

    float

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

    いいえ

    emaxx

    float

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

    いいえ

    emaxy

    float

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

    いいえ

    eminz

    float

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

    emaxz

    float

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

    min_measure

    float

    フィーチャの最小 M 値。

    max_measure

    float

    フィーチャの最大 M 値。

    面積

    float

    ジオメトリの面積。

    いいえ

    len

    float

    ジオメトリの外周の長さ。

    いいえ

    ポイント

    varbinarymax

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

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

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

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

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

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

    フィールド名

    フィールド タイプ

    説明

    NULL?

    sp_fid

    int

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

    いいえ

    gx

    bigint

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

    いいえ

    gy

    bigint

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

    いいえ

    eminx

    bigint

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

    いいえ

    eminy

    bigint

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

    いいえ

    emaxx

    bigint

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

    いいえ

    emaxy

    bigint

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

    いいえ

    すべてのフィーチャクラスのベース テーブルに、DELETE-UPDATE トリガと INSERT トリガが含まれています。INSERT トリガは、ベース テーブルの空間列に重複する値が含まれないようにします。DELETE-UPDATE トリガは、ベース テーブル、フィーチャ テーブル、空間インデックス テーブルの空間列に対する操作を管理します。これらのトリガは、スタンドアロンのフィーチャクラスまたはフィーチャ データセットのフィーチャクラスがマルチバージョン対応になるたびに、自動的に削除されます。フィーチャクラスのバージョン対応登録が解除されると、それらは再作成されます。これらのトリガのいずれを編集した場合、フィーチャクラスをバージョン対応登録すると、トリガは削除されます。ベース テーブルとフィーチャ テーブル間で参照整合性を維持することは重要です。フィーチャ テーブルまたは空間インデックス テーブルでレコードを編集しないでください。ベース テーブル、フィーチャ テーブル、空間インデックス テーブルには、参照整合性を維持するためのインデックスと制約が追加されています。ただし、これらのインデックスと制約は、フィーチャクラスが LOAD_ONLY_IO モードに変換され、フィーチャクラスへの高速なデータ挿入が有効な状態になったときに削除されます。

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

  • フィーチャクラスに関連するシステム テーブル

    GDB_ITEMS システム テーブルは、ジオデータベース内のデータセット(フィーチャクラス、ラスタ カタログなど)を管理するテーブルです。

    View a diagram of a feature class using binary storage in SQL Server..

    注意注意:

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

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

    GDB_ITEMS、SDE_table_registry、SDE_column_registry、SDE_layers テーブルのデータベース名フィールドにはすべて同じ値が含まれていますが、図が煩雑にならないように、これらのフィールド間の暗黙的なリレーションシップは示していません。同様に、これらすべてのテーブルの所有者フィールドにも同じ値が含まれていますが、この図ではリレーションシップは示されていません。

SQL Server データベースで Microsoft Geometry または Geography タイプを使用して格納されるフィーチャクラス

ArcGIS 9.3 以降のバージョンでは、SQL Server 2008 データベースに格納されたジオデータベースは、フィーチャの格納に Microsoft Geometry 空間データ型または Geography 空間データ型格納タイプを使用できます。このいずれかの格納タイプを使用するフィーチャクラスには、前のセクションで説明したようなベース テーブルが作成されます。ただし、このような格納タイプの場合は、フィーチャクラス ジオメトリが格納される GEOMETRY または GEOGRAPHY タイプの列がベース テーブルに含まれるため、関連するフィーチャ テーブルはありません。

Geometry または Geography 格納を使用するフィーチャクラス テーブルには、関連するシステム テーブルに加えて関連するビューもあります。

View a diagram of a feature class using SQL Server geometry or geography storage..

注意注意:

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

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

Geometry または Geography フィーチャクラスに使用されるビュー(ST_SPATIAL_REFERENCE_SYSTEMS および ST_GEOMETRY_COLUMNS)は図には表示されません。これらのビューが、すでに図中にある SDE_spatial_references および SDE_geometry_columns のシステム テーブルを基準としているためです。

フィーチャクラスで CAD エンティティの格納が有効になっていると、曲線などの CAD データを格納するための補助テーブルがフィーチャクラスに対して作成されます。ArcGIS Desktop で作成されるフィーチャクラスはすべて、CAD エンティティを格納するように設定されます。ArcSDE 管理コマンドを使用してデータをインポートするか、または ArcSDE に登録する場合、作成したフィーチャクラスに CAD データを格納できるかどうか指定します。フィーチャクラス図には SDE_geometry42 という CAD テーブルも示されています。テーブル名の 42 は、SDE_layers テーブルのフィーチャクラスの layer_id を参照しています。

CAD 補助テーブルに対する結合は、正曲線などの CAD データがフィーチャクラスに追加されるまで有効になりません。有効になると、フィーチャクラスに対するクエリには、CAD データがすでに存在しない場合であっても常に CAD 補助テーブルが含まれるようになります。

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

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

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

<DataElement xsi:type="esri:DEFeatureClass">
  <CatalogPath>/V=dbo.DEFAULT/FC=geodata.SASHA.Parcels</CatalogPath>
  <Name>geodata.SASHA.Parcels</Name>
  <DatasetType>esriDTFeatureClass</DatasetType>
  <DSID>22</DSID>
  <Versioned>false</Versioned>
  <CanVersion>true</CanVersion>
  <ConfigurationKeyword/>
  <HasOID>true</HasOID>
  <OIDFieldName>objectid</OIDFieldName>
  <Fields xsi:type="esri:Fields">
    <FieldArray xsi:type="esri:ArrayOfField">
      <Field xsi:type="esri:Field">
        <Name>objectid</Name>
        <Type>esriFieldTypeOID</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>

7/10/2012