ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

ジオデータベース システム テーブル

  • GDB_Items テーブル
  • GDB_ItemTypes テーブル
  • GDB_ItemRelationships テーブル
  • GDB_ItemRelationshipTypes テーブル
  • ジオデータベース システム テーブルの XML
  • GDB_ テーブル間の関連
  • 共通 GDB_ テーブルのクエリ

エンタープライズ ジオデータベースは、データベース管理システムに格納されたシステム テーブル、プロシージャ、および関数で構成されています。GDB_ の接頭辞が付いたシステム テーブルは、データセットの定義、ルール、およびリレーションシップを指定するジオデータベース スキーマを表しています。それらのシステム テーブルは、ジオデータベースのプロパティ、データ整合チェック ルール、および振舞いを実装するために必要なメタデータを保持して管理します。次に、これらのテーブルを示します。

  • GDB_Items: フィーチャクラス、トポロジ、ドメインなど、ジオデータベースに格納されているすべてのアイテムのリストを保持します。
  • GDB_ItemTypes: Table など、認識されたアイテム タイプの定義済みリストを保持します。
  • GDB_ItemRelationships: フィーチャ データセット内にどのフィーチャクラスが含まれているかなど、アイテム間のスキーマ関連を保持します。
  • GDB_ItemRelationshipTypes: DatasetInFeatureDataset など、認識されたリレーションシップ タイプの定義済みリストを保持します。

GDB_Items テーブルと GDB_ItemRelationships テーブルは、特定のジオデータベース内のユーザー定義スキーマを表します。ジオデータベースのスキーマが変更されると、テーブルの内容も変更されます。ジオデータベースを作成すると GDB_ItemTypes テーブルと GDB_ItemRelationshipTypes テーブルにデータが入力されます。その値はソフトウェア リリース内で静的となります。以下の図は、これらの 4 つのテーブルの関係を示しています。

4 つの主要なジオデータベース システム テーブル

ヒント:

XML 定義については、ホワイトペーパー「XML Schema of the Geodatabase」をご参照ください。

ジオデータベース内では、GDB_Conflicts および GDB_Locks という、その他の 2 つの GDB_ テーブルを確認できます。これらは、現時点でリリースされている ArcGIS ソフトウェアでは使用されません。

GDB_Items テーブル

ジオデータベースは空間アイテムと非空間アイテムを格納します。アイテムの種類としては、表形式データセット (フィーチャクラス、テーブルなど)、データセット コンテナー (フィーチャ データセットやトポロジなど)、より高度なジオデータベースの振舞いを制御するデータセット、およびその他のアイテム (ドメイン、ツールボックス、ワークスペース エクステンションなど) があります。これらのアイテムはすべてジオデータベース内部の GDB_Items テーブルに格納されます。各アイテムはそれぞれ 1 行に格納されます。

アイテムにおいて、SQL でアクセスする可能性が最も高い 7 つの属性を以下に示します。

  • UUID: アイテムの一意な ID
  • Name: アイテムの名前。

    注意点として、アイテムの名前が一意であることは保証されません。たとえば、リレーションシップ クラスとフィーチャクラスの名前が同じでもかまいません。ただし、アイテムに同じ名前を付けることはお勧めできません。アイテム名は、そのアイテムの内容を区別できるわかりやすい名前にすべきです。

  • Type: レコード内のアイテムのタイプを表す UUID (一意の ID に相当する)
  • Definition: アイテムのプロパティを定義する XML ドキュメント。プロパティと XML スキーマはアイテム タイプごとに異なります。たとえば、オブジェクト クラスの定義にはサブタイプなどの情報が含まれ、コード値ドメインの定義にはコードと値のペアが含まれます。リレーションシップ クラスの定義にはリレーションシップ ルールなどが含まれます。
  • Documentation: アイテムのメタデータを格納している XML ドキュメント
  • プロパティ: ビットマスクと併用してアイテムの複数のブール型プロパティを取得するための整数値。現在、これはアイテムが ArcGIS Desktop で表示可能かどうかを示すためだけに使用されています。
  • Shape: 該当する場合、ポリゴンとしてのデータセットの範囲 (データ タイプは基本となるデータベース管理システムによって異なる)

次のリストに示す属性にはアイテムの定義の情報 (フィーチャクラスのジオメトリ タイプなど) が格納されます。これらの属性は、ジオデータベースを効率的に参照できるように、XML の定義とは別に複製されます。その例には、Dataset Subtype プロパティや Dataset Info プロパティがあり、 そのコードはアイテム タイプによって異なります。次に、これらの属性について説明します。

  • Physical Name: アイテムの完全修飾名
  • DatasetSubtype1: フィーチャクラスとラスター カタログの場合は、DatasetSubtype1 にテーブルのフィーチャ タイプが格納されます。トポロジの場合、トポロジ ID が格納されます。
  • DatasetSubtype2: フィーチャクラスとラスター カタログの場合は、DatasetSubtype2 にジオメトリ タイプが格納されます。リレーションシップ クラスの場合、リレーションシップが属性付きか属性なしかを示す値が格納されます。
  • DatasetInfo1: フィーチャクラス アイテムの Shape フィールドの名前が格納されます。
  • DatasetInfo2: トポロジに属しているフィーチャクラスの情報を格納
  • Path: アイテムに対する一意な相対パス
  • URL: アイテムに関連付けられた URL (カタログ サービスで使用)
  • Defaults: アイテムのメタデータ。ジオデータベースで直接使用されませんが、他のクライアントで使用されます。
  • ItemInfo: 元になるデータセットから独立したアイテムの情報 (シンボルなど) を格納

GDB_ItemTypes テーブル

GDB_ItemTypes テーブルは、ジオデータベースで認識されるアイテム タイプの定義済みセットを保持しています。アイテム タイプは、GDB_Items テーブルを正規化して (GDB_Items テーブルではアイテムのタイプは UUID として表されます)、将来的なジオデータベースの機能強化を支援し、タイプ階層を定義するために使用されます。親タイプはすべて抽象タイプです。そのため、親アイテムは GDB_Items テーブルには直接格納されません。

GDB_ItemTypes テーブルの内容は、アイテムが作成または削除されても変更されません。

アイテム タイプは以下の属性を持ちます。

  • UUID: アイテム タイプの一意な ID。GDB_Item テーブルの Type 列に対する外部キーです。
  • ParentTypeID: アイテム タイプの親タイプ

    抽象アイテム タイプの場合 (親がない場合)、これは NULL UUID です。

  • Name: アイテム タイプの名前 (Feature Class や Range Domain など)
  • ObjectID: GDB_ItemTypes テーブル用の一意な ID

GDB_ItemRelationships テーブル

ほとんどすべてのジオデータベース アイテムは、少なくとも 1 つの他のジオデータベース アイテムとのリレーションシップを持ちます。たとえば、スタンドアロン テーブルはジオデータベースのルート フォルダーに関係付けられ、ドメインは整合チェックで依存するフィーチャクラスまたはテーブルに関係付けられます。フィーチャクラスは、トポロジに所属する場合、トポロジに関係付けられます。GDB_ItemRelationships テーブルはこのようなリレーションシップを追跡するために使用されます。

アイテム リレーションシップは以下の属性を持ちます。

  • UUID: アイテム リレーションシップの一意な ID
  • Type: リレーションシップのタイプを表している UUID。アイテム リレーションシップのタイプの一意な ID と一致します。
  • OriginID: リレーションシップの関連元アイテムの一意な ID
  • DestinationID: リレーションシップの関連先アイテムの一意な ID
  • Attributes: アイテム リレーションシップの詳細な情報を含む XML ドキュメント

    多くのリレーションシップ タイプは Attributes を持ちません。Attributes は制御元のデータセットと制御されるデータセットの間のリレーションシップだけで使用されます。

  • ObjectID: 一意識別子
  • プロパティ: ビットマスクと併用してアイテムの複数のブール型プロパティを取得するための整数値。現在、これはリレーションシップに関与するアイテムが ArcGIS Desktop で表示可能かどうかを示すためだけに使用されています。

多くの場合、SQL でアクセスするのは最初の 5 つの属性だけです。

ヒント:

アイテム リレーションシップはリレーションシップ クラスとは異なることを理解することが重要です。どのリレーションシップ クラスも 2 つのオブジェクト クラス (関連元クラスと関連先クラス) とのアイテム リレーションシップ、に加えてそのコンテナー (ジオデータベースのルート フォルダーまたはフィーチャ データセット) とのアイテム リレーションシップを持ちます。

GDB_ItemRelationshipTypes テーブル

アイテム タイプの静的コレクションがアイテムの分類に使用されるのと同じように、アイテム リレーションシップ タイプの静的コレクションがアイテム リレーションシップの分類に使用されます。たとえば、DatasetInFeatureDataset (フィーチャクラス、リレーションシップ クラス、または制御元のデータセットがフィーチャ データセット内に存在することを示します) と DomainInDataset (データセットがクラスレベルまたはサブタイプレベルの整合チェックのためにドメインを使用することを示します) はアイテム リレーションシップのタイプです。アイテム タイプとは違って、アイテム リレーションシップ タイプには親タイプと子タイプという階層の概念はありません。

アイテム リレーションシップ タイプは以下の属性を持ちます。

  • UUID: アイテム リレーションシップ タイプの一意な ID。アイテム リレーションシップ テーブルの Type 列の主キーです。
  • Name: アイテム リレーションシップ タイプの名前 (DatasetInFolder など)
  • Forward Label: 関連元アイテムの文脈におけるリレーションシップの説明
  • Backward Label: 関連先アイテムの文脈におけるリレーションシップの説明
  • Origin Item Type ID: このタイプのアイテム リレーションシップで関連先アイテムとして使用できるアイテム タイプの UUID
  • Destination Item Type ID: このタイプのアイテム リレーションシップで関連先アイテムとして使用できるアイテム タイプの UUID
  • Is Containment: 関連元アイテムが削除された場合でも関連先アイテムが存在できるかどうかを示します。
ヒント:

Origin Item Type ID と Destination Item Type ID は多くの場合、抽象アイテム タイプの ID です。たとえば、DomainInDataset リレーションシップ タイプの Origin Item Type ID は Domain であり、 Range Domain と Coded Value Domain という 2 つのサブタイプを含む抽象アイテム タイプです。

ジオデータベース システム テーブルの XML

前のセクションで述べたように、一部のフィールドでは XML データ タイプが使用されます。IBM Db2、Microsoft SQL Server、および PostgreSQL のジオデータベースの場合、XML 列ではデータベース管理システムのネイティブ XML が使用されているため SQL で XPath 式を使用してクエリを実行できます。

Oracle と Informix のジオデータベースの場合、XML 列では ArcSDE XML が使用され、一連の別テーブルに BLOB として情報が格納されます。そのため、SQL で XML 列に直接アクセスすることはできません。

Oracle のジオデータベースでシステム テーブルの XML 列の内容を表示できるように、ジオデータベース システム テーブルの XML 列の内容を CLOB データ タイプで格納するシステム ビューが 2 つ用意されています。GDB_Items_vw は、GDB_Items テーブルの Definition、Documentation、ItemInfo の各列の内容を CLOB 列に格納します。GDB_ItemRelationships_vw は、GDB_Relationships テーブルの Attributes 列の内容を CLOB 列に格納します。CLOB 列の内容はテキストとして読み取ることができます。

これらのビューを検索するときは、CLOB 列から文字列を抽出し、XML タイプに変換してから、XPath クエリを実行します。空白の文字列を含む列の XML タイプを作成しようとした場合、Oracle ではサポートされていないため、[XML の解析に失敗しました] というメッセージを伴って失敗します。

CLOB 列の内容に対してクエリを実行するには、SQL 接続を受け入れるように Oracle サーバーを設定する必要があります。詳細については、「Oracle の ST_Geometry にアクセスするための extproc の構成」をご参照ください。

GDB_ テーブル間の関連

ジオデータベース機能を追跡するシステム テーブルがどのように連携しているかを確認する最も良い方法は、SQL を使用してシステム テーブルを調べることです。GDB_Items テーブルからすべての行と列を選択し、その内容を確認します。

[タイプ] 列の値は UUID として保存されます。UUID は、GDB_ItemTypes テーブルの [UUID] 列に関連しています。したがって、以下のような SQL クエリを使用して、各アイテムのアイテム タイプを返すことができます。

SELECT gdb_items.UUID, gdb_itemtypes.name AS "Type", gdb_items.name
   FROM gdb_items INNER JOIN gdb_itemtypes
   ON gdb_items.type = gdb_itemtypes.UUID;

これによって、以下のテーブルに示すように、各アイテムに対してタイプ値が返されます。

UUID種類名前順

DF7A67CF-D8B2-461C-A4BF-74AF52AF2BD3

フォルダー

5E53E5C2-874E-4538-A6AB-1F0BBCABA885

ワークスペース

ワークスペース

2AC65400-919D-4241-A1A5-83C219A8ACD0

Coded Value Domain

製品

897D8FA2-BE31-4A5D-94A5-B93A32BF2146

Coded Value Domain

DitDiam

B75E3FDF-F864-4FA1-A31A-A56716BBDEA7

Range Domain

RotAngle

同様に、GDB_ItemRelationships テーブルにも、他のテーブルのキー値である UUID が含まれています。各リレーションシップには、上の GDB_Items テーブルにある UUID 値が 2 つあります。1 つはリレーションシップの関連先アイテムの UUID で、もう 1 つは元のアイテムの UUID です。これらを判読可能な文字列へと解決するには、GDB_ItemRelationships テーブルを GDB_Items テーブルに 2 回結合する必要があります。リレーションシップ タイプを表示するには、以下の SQL の例に示すように、GDB_ItemRelationshipTypes テーブルに結合を含めます。

--SQL Server and PostgreSQL query SELECT reltypes.name AS type,   origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items,   gdb_itemrelationships AS relationships,   gdb_items AS dest_items,   gdb_itemrelationshiptypes AS reltypes WHERE   origin_items.UUID = relationships.originid AND   dest_items.UUID = relationships.destid AND   relationships.type = reltypes.UUID;
--Oracle query SELECT reltypes.name AS type,   origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items,   sde.gdb_itemrelationships relationships,   sde.gdb_items dest_items,   sde.gdb_itemrelationshiptypes reltypes WHERE   origin_items.UUID = relationships.originid AND   dest_items.UUID = relationships.destid AND
   relationships.type = reltypes.UUID;

以下に、前述のクエリが返す値の例を示します。

種類関連元の名前関連先の名前

DatasetInFeatureDataset

County.PW.Cadastre

County.PW.PrivRdName

DatasetInFeatureDataset

County.PW.Cadastre

County.PW.TaxParcelNo

DomainInDataset

County.PW.PIN

PINB

FeatureClassInTopology

County.PW.Cadastre_Topology

County.PW.TaxBlocks

DatasetsRelatedThrough

County.PW.PIN_Condo

County.PW.PIN_Condo2Parcel

共通 GDB_ テーブルのクエリ

GDB_ テーブルに対して実行される SQL クエリの一般的なタイプの詳細については、以下のトピックをご参照ください。

  • リレーションシップの検索
  • XML 列の検索
  • 空間検索

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • Esri ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2019 Esri. | プライバシー | リーガル