PostgreSQL に格納されたジオデータベースのトポロジ

トポロジとはデータ整合性を適用し、空間的に関連するフィーチャクラスの振舞いを管理するためのルールです。ジオデータベース トポロジはトポロジに属するフィーチャクラス(同じフィーチャ データセットに含まれている必要があります)、トポロジに割り当てられるクラスタ許容値、トポロジでの各フィーチャクラスの相対ランク、トポロジに適用されるルールのリストに関する情報を格納します。

トポロジ関連の概念の詳細については、「トポロジの基礎」と「ArcGIS のトポロジ」をご参照ください。

ArcGIS for Desktop のツールボックス

カタログ ツリーのトポロジは、トポロジに属するフィーチャクラスが含まれているフィーチャ データセットの下に表示されます。トポロジは次のアイコンで表されます。

トポロジのアイコン

[トポロジ プロパティ] ダイアログ ボックスの [フィーチャクラス] タブをみると、フィーチャ データセットのどのフィーチャクラスがトポロジに属しているかが確認できます。

[トポロジ プロパティ] ダイアログ ボックス

[ルール] タブをクリックすると、トポロジに適用されるルールが表示されます。トポロジを整合チェックした後、[エラー] タブで各ルールのエラーと例外のリストを生成することができます。

PostgreSQL データベース のトポロジ

DBMS では、トポロジは gdb_items テーブルに格納されます。トポロジに関連付けられたルールは definition 列に格納されます。

トポロジ整合チェックを実行すると、各トポロジで検出されたダーティ エリアとトポロジ エラーが、ジオデータベースに接続しているユーザのスキーマで一連のテーブルに格納されます。これらは、t_<id>_dirtyareast_<id>_lineerrorst_<id>_pointerrorst_<id>_polyerrors の各テーブルです。テーブル名に含まれている ID は、gdb_items テーブルの datasetsubtype1 フィールドのトポロジ ID に相当します。各エラー テーブルは違反したルールを toporuleid フィールドに格納します。このフィールドは、gdb_items テーブルの iteminfo フィールドにリンクされています。

次に、PostgreSQL でのダーティ エリア テーブルとトポロジ エラー テーブルの定義とトポロジ テーブルの例を示します。

t_<id>_dirtyareas

このテーブルは、トポロジの整合チェックを実行したときに作成されます。

フィールド名

フィールド タイプ

説明

NULL?

objectid

integer

トポロジのダーティ エリア フィーチャの一意な ID

NOT NULL

isretired

integer

このコードは、ダーティ エリアが頂点の最大数(250)に達したかどうかを示します。

この制限に達すると、新しいダーティ エリア フィーチャが作成され、既存のダーティ エリア フィーチャは使用されなくなります(値が 1 に変わります)。

0 = 頂点の最大数にまだ達していない、1 = 頂点の最大数

NOT NULL

dirtyarea

st_geometry

geometry

Shape フィールド

t_<id>_pointerrorst_<id>_lineerrorst_<id>_polyerrors

トポロジ ルールへの違反はエラー フィーチャとして表されます。ダーティ エリアの場合と同様に、これらのエラー フィーチャも個別のトポロジ エラー テーブルに格納され、そこで管理されます。これらのテーブルはほぼ同じスキーマ定義を共有しますが、トポロジ エラーのシェープ タイプ固有の追加フィールドがあります。テーブル名が示しているように、それらはエラーが発生したフィーチャのタイプ(ライン、ポイント、ポリゴン)に基づいて、トポロジ エラーに関する情報を格納します。

これらのテーブルは、トポロジの整合チェックを行っていない場合、データベースに存在しません。

フィールド名

フィールド タイプ

説明

NULL?

objectid

integer

指定されたトポロジ エラー テーブルにあるトポロジ エラー フィーチャの一意な ID。トポロジ エラーはトポロジで一意な ID を持つのではなく、それら固有のテーブルでのみ一意な ID を持ちます。

いいえ

originclassid

integer

関連元フィーチャクラスのオブジェクト クラス ID

いいえ

originid

integer

トポロジ エラーの関連元フィーチャクラスのフィーチャのフィーチャ ID。

destclassid

integer

関連先フィーチャクラスのオブジェクト クラス ID

destid

integer

トポロジ エラーの関連先フィーチャクラスのフィーチャのフィーチャ ID

toporuletype

integer

トポロジ ルールのタイプ。esriTopologyRuleType 定数の値に対応します。

いいえ

toporuleid

integer

gdb_items テーブルの iteminfo 列に格納されたトポロジ ルールの ID

いいえ

isexception

integer

トポロジ エラーが例外としてマークされているかどうかを示すコード:0 = 例外ではない(デフォルト); 1 = 例外としてマークされている

いいえ

shape

st_geometry または geometry

シェープ タイプを示します

ダーティ エリア テーブルとトポロジ エラー テーブルは、他のテーブル(ジオデータベース管理者ユーザのスキーマに格納されたシステム テーブル)とは異なり、トポロジを作成したユーザのスキーマに作成されます。

次に、整合チェックされたトポロジのテーブルの図を示します。

PostgreSQL のトポロジ テーブル

破線はテーブル間の暗黙的なリレーションシップを示しています。

XML ワークスペース ドキュメントのトポロジ

トポロジはデータセットに分類されるため、XML ドキュメントの FeatureDataset タイプの DataElement タグの下に定義されます。トポロジ ルールは TopologyRule タグで追加され、グループ化されます。フィーチャ データセット water のトポロジ landbase_topology の場合、XML ドキュメントのエントリは次のようになります。

<DatasetDefinitions xsi:type="esri:ArrayOfDataElement">
- <DataElement xsi:type="esri:DEFeatureDataset">
    <CatalogPath>/V=sde.DEFAULT/FD=sde.sasha.Landbase</CatalogPath> 
    <Name>sde.sasha.Landbase</Name> 
  - <Children xsi:type="esri:ArrayOfDataElement">
    - <DataElement xsi:type="esri:DETopology">
          <CatalogPath>/V=sde.DEFAULT/FD=sde.sasha.Landbase/TOPO=sde.sasha.Landbase_Topology</CatalogPath> 
        <Name>sde.sasha.Landbase_Topology</Name> 
        <DatasetType>esriDTTopology</DatasetType> 
        <DSID>-1</DSID> 
        <Versioned>true</Versioned> 
        <CanVersion>true</CanVersion> 
      - <Extent xsi:type="esri:EnvelopeN">
           <XMin>503924.656249088</XMin> 
           <YMin>680110.56250334</YMin> 
           <XMax>512514.562497088</XMax> 
           <YMax>689084.187511697</YMax> 
        - <SpatialReference xsi:type="esri:ProjectedCoordinateSystem">
  <WKT>PROJCS["NAD_1927_StatePlane_Alabama_East_FIPS_0101", GEOGCS["GCS_North_American_1927", DATUM["D_North_American_1927", SPHEROID["Clarke_1866",6378206.4,294.9786982]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], PROJECTION["Transverse_Mercator"], PARAMETER["False_Easting",500000.0], PARAMETER["False_Northing",0.0], PARAMETER["Central_Meridian", -85.83333333333333], PARAMETER["Scale_Factor",0.99996], PARAMETER["Latitude_Of_Origin",30.5], UNIT["Foot_US",0.3048006096012192]]</WKT> 
             <XOrigin>489871.255812</XOrigin> 
             <YOrigin>665787.099562</YOrigin> 
             <XYScale>499999.999534338</XYScale> 
             <ZOrigin>0</ZOrigin> 
             <ZScale>1</ZScale> 
             <MOrigin>0</MOrigin> 
             <MScale>1</MScale> 
             <XYTolerance>6.56166666666667E-04</XYTolerance> 
             <ZTolerance>2</ZTolerance> 
             <MTolerance>2</MTolerance> 
             <HighPrecision>true</HighPrecision> 
          </SpatialReference>
       </Extent>
     - <SpatialReference xsi:type="esri:ProjectedCoordinateSystem">
  <WKT>PROJCS["NAD_1927_StatePlane_Alabama_East_FIPS_0101", GEOGCS["GCS_North_American_1927", DATUM["D_North_American_1927", SPHEROID["Clarke_1866",6378206.4,294.9786982]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], PROJECTION["Transverse_Mercator"], PARAMETER["False_Easting", 500000.0], PARAMETER["False_Northing",0.0], PARAMETER["Central_Meridian", -85.83333333333333], PARAMETER["Scale_Factor",0.99996], PARAMETER["Latitude_Of_Origin",30.5], UNIT["Foot_US",0.3048006096012192]]</WKT> 
             <XOrigin>489871.255812</XOrigin> 
             <YOrigin>665787.099562</YOrigin> 
             <XYScale>499999.999534338</XYScale> 
             <ZOrigin>0</ZOrigin> 
             <ZScale>8192</ZScale> 
             <MOrigin>0</MOrigin> 
             <MScale>8192</MScale> 
             <XYTolerance>6.56166666666667E-04</XYTolerance> 
             <ZTolerance>2</ZTolerance> 
             <MTolerance>2</MTolerance> 
             <HighPrecision>true</HighPrecision> 
      </SpatialReference>
      <ClusterTolerance>0.5</ClusterTolerance> 
      <ZClusterTolerance>-1</ZClusterTolerance> 
      <MaxGeneratedErrorCount>-1</MaxGeneratedErrorCount> 
    - <FeatureClassNames xsi:type="esri:Names">
         <Name>sde.RJP.Blocks</Name> 
         <Name>sde.RJP.Parcels</Name> 
      </FeatureClassNames>
    - <TopologyRules xsi:type="esri:ArrayOfTopologyRule">
      - <TopologyRule xsi:type="esri:TopologyRule">
           <HelpString /> 
           <RuleID>183</RuleID> 
           <Name /> 
           <GUID>7D3E7075-16CF-47AD-A8F4-842B921B1E1E</GUID> 
           <TopologyRuleType>esriTRTAreaNoOverlap</TopologyRuleType> 
           <OriginClassID>100</OriginClassID> 
           <OriginSubtype>0</OriginSubtype> 
           <DestinationClassID>100</DestinationClassID> 
           <DestinationSubtype>0</DestinationSubtype> 
           <TriggerErrorEvents>false</TriggerErrorEvents> 
           <AllOriginSubtypes>true</AllOriginSubtypes> 
           <AllDestinationSubtypes>true</AllDestinationSubtypes> 
        </TopologyRule>
      - <TopologyRule xsi:type="esri:TopologyRule">
           <HelpString /> 
           <RuleID>184</RuleID> 
           <Name /> 
           <GUID>6F58891D-5BD9-4848-802E-90458152B0CE</GUID> 
           <TopologyRuleType>esriTRTAreaCoveredByArea</TopologyRuleType> 
           <OriginClassID>100</OriginClassID> 
           <OriginSubtype>1</OriginSubtype> 
           <DestinationClassID>98</DestinationClassID> 
           <DestinationSubtype>1</DestinationSubtype> 
           <TriggerErrorEvents>false</TriggerErrorEvents> 
           <AllOriginSubtypes>false</AllOriginSubtypes> 
           <AllDestinationSubtypes>false</AllDestinationSubtypes> 
        </TopologyRule>
    </TopologyRules>
</DataElement>

関連トピック

5/10/2014