ArcGIS Server Banner

Topologies in a geodatabase in Oracle

Topologies in a geodatabase in Oracle

Release 9.3 E-mail This TopicPrintable VersionGive Us feedback

Topologies are rules that enforce data integrity and manage the behavior of spatially related feature classes. A geodatabase topology stores information about the feature classes (which must be in the same feature dataset) that participate in the topology, the cluster tolerance assigned to the topology, the relative rank of each feature class in the topology, and a list of the rules that apply to that topology.

For more information on the concepts related to topologies, see Topology basics and Topology in ArcGIS.

Topologies in ArcCatalog

Topologies in an Oracle database management system (DBMS) in the Catalog tree appear under the feature dataset in which the participating feature classes reside. The topology itself will look like the following:

Topology in ArcCatalog (Oracle)

You can right-click the topology and click Properties to open the Topology Properties dialog box. The General tab lists the name of the topology and the cluster tolerance. You can click on the Feature Classes tab to see which feature classes within the feature dataset participate in this topology.

Topology Properties dialog box

Clicking on the Rules tab will show you the rules that apply to the topology. After the topology has been validated, you can generate a list of the errors and exceptions for each rule from the Errors tab.

Top of page

Topologies in an Oracle DBMS

In the DBMS, the system tables associated with a topology are GDB_TOPOLOGIES, GDB_TOPORULES, and GDB_TOPOCLASSES. The GDB_TOPOLOGIES table stores the name of the topology and is associated with the GDB_FEATUREDATASET table, which provides the link between the topology and the participating feature classes by way of the GDB_OBJECTCLASSES table.

The GDB_TOPORULES table stores the rules of the toplogy and is related to the GDB_TOPOLOGIES table and the GDB_OBJECTCLASSES table.

When you validate a topology, the dirty areas and topology errors found associated with each topology are stored in a set of tables in the schema of the user connected to the geodatabase. These are the T_<ID>_DIRTYAREAS, T_<ID>_LINEERRORS, T_<ID>_POINTERRORS, and T_<ID>_POLYERRORS tables. The ID in the table names correspond to the value in the ID field of the GDB_TOPOLOGIES table. Each error table stores the violated rule in the TopoRuleID field. This field is linked to the GDB_TOPORULES table. Each error table is also associated to the feature class containing the error by way of the GDB_OBJECTCLASSES table.

The following is a definition of the dirty areas and topology errors tables and an example of the topology tables as they appear in an Oracle DBMS.

T_<ID>_DIRTYAREAS

Dirty areas, or unvalidated parts of the topology, are stored in the geodatabase as geometries. They are tracked in the T_<ID>_DIRTYAREAS table.

This table will not appear in your database until you have validated a topology.


Field name Field type Description
OBJECTID NUMBER(38) Unique identifier of the dirty area feature in the topology

NOT NULL
ISRETIRED NUMBER(38) Code indicating whether the dirty area has reached the maximum number of vertices (250); when this limit is reached, a new dirty area feature will be created and this one retired (IsRetired value changes to 1).

0 = Max verticies limit not yet reached

1 = Max vertices limit

NOT NULL
DIRTYAREA NUMBER(38)

(ST_GEOMETRY if using the Spatial Type geometry storage

SDO_GEOMETRY if using Oracle spatial geometry storage)
Shape field

T_<ID>_LINEERRORS, T_<ID>_POINTERRORS, and T_<ID>_POLYERRORS

Any violations of the topology rules are represented as error features. As with dirty areas, these error features are also stored and managed in separate topology error tables. These tables all share an almost identical schema definition, with the exception of the additional fields specific to the shape type of the topology error. As indicated by the table names, they store information about topology errors based on the type of feature for which the error occurred—line, point, or polygon.

These tables will not appear in your database until you have validated a topology.


Field name Field type Description
OBJECTID NUMBER(38) Unique ID of the topology error feature in the specified topology error table; topology errors do not have unique IDs in the topology, only in their specific table.

NOT NULL
ORIGINCLASSID NUMBER(38) Object class ID of the origin feature class

NOT NULL
ORIGINID NUMBER(38) Feature ID of the feature from the origin feature class that is related to the topology error.

DESTCLASSID NUMBER(38) Object class ID of the destination feature class

DESTID NUMBER(38) Feature ID of the feature from the destination feature class that is related to the topology error.

TOPORULETYPE NUMBER(38) The type of topology rule; corresponds to a value from the esriTopologyRuleType constant

NOT NULL
TOPORULEID NUMBER(38) The ID of the topology rule; foreign key to the ID field in the GDB_TOPORULES table

NOT NULL
ISEXCEPTION NUMBER(38) A code that indicates whether or not the topology error has been marked as an exception.

0 = Not an exception (the default)

1 = Marked as an exception

NOT NULL
SHAPE NUMBER(38)

(ST_GEOMETRY if using the Spatial Type geometry storage

SDO_GEOMETRY if using Oracle spatial geometry storage)
Indicates shape type

Click on the following link to view a diagram of the tables for a validated topology:

Oracle topology tables diagram

The dashed lines indicate an implicit relationship between tables. Solid lines represent relationships between tables that are explicity defined in the database.

The dirty areas and topology errors tables get created in the schema of the user who created the topology, unlike the other tables, which are system tables that are part of the ArcSDE administrator (SDE) user's schema.

Top of page

Topologies in an XML document

Topologies are types of datasets, so they appear in an XML document under a DataElement tag of type FeatureDataset. The topology rules are included and grouped with a TopologyRule tag. For the Landbase_Topology example in the Landbase feature dataset, the entry in the XML document looks like the following:

<DatasetDefinitions xsi:type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DEFeatureDataset">
    <CatalogPath>/V=sde.DEFAULT/FD=GDB.Landbase</CatalogPath> 
    <Name>GDB.Landbase</Name> 
  <Children xsi:type="esri:ArrayOfDataElement">
    <DataElement xsi:type="esri:DETopology">
          <CatalogPath>/V=sde.DEFAULT/FD=GDB.Landbase/TOPO=GDB.Landbase_Topology</CatalogPath> 
        <Name>GDB.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>

Top of page

See Also

  • Feature datasets in a geodatabase stored in Oracle