Topologies d'une géodatabase dans SQL Server

Les topologies sont des règles qui garantissent l'intégrité des données et gèrent le comportement des classes d'entités spatialement reliées entre elles. Une topologie de géodatabase stocke des informations sur : les classes d'entités qui font partie de la topologie (elles doivent être dans le même jeu de données d'entité), la tolérance d'agrégat attribuée à la topologie, le classement relatif de chaque classe d'entités dans la topologie et la liste des règles qui s'appliquent à la topologie.

Pour en savoir plus sur les concepts liés aux topologies, reportez-vous aux rubriques Principes de base d'une topologie et Topologie dans ArcGIS.

Topologies dans ArcGIS for Desktop

Dans l'arborescence du Catalogue, les topologies s'affichent dans le jeu de données d'entité où figurent les classes d'entités participantes. La topologie est représentée avec l'icône suivante :

Icône de topologie

L'onglet Classes d'entités de la boîte de dialogue Propriétés de la topologie indique les classes d'entités du jeu de données d'entité qui participent à la topologie sélectionnée.

Boîte de dialogue Propriétés de la topologie

Cliquez sur l'onglet Règles pour afficher les règles qui s'appliquent à la topologie. Après la validation de la topologie, vous pouvez générer une liste des erreurs et des exceptions pour chaque règle à partir de l'onglet Erreurs.

Topologies dans une base de données Microsoft SQL Server

Dans le SGBD, les topologies sont stockées dans la table GDB_ITEMS. Les règles associées à la topologie sont stockées dans la colonne Definition.

Lorsque vous validez une topologie, les zones à valider et les erreurs topologiques rencontrées pour chaque topologie sont stockées dans un ensemble de tables de la structure de l'utilisateur connecté à la géodatabase. Il s'agit des tables T_<ID>_DIRTYAREAS, T_<ID>_LINEERRORS, T_<ID>_POINTERRORS et T_<ID>_POLYERRORS. L'identifiant (ID) dans les noms de table correspond à l'identifiant de la topologie du champ DatasetSubtype1 de la table GDB_ITEMS. Chaque table d'erreurs stocke la règle violée dans le champ TopoRuleID. Ce champ est lié au champ col_iteminfo de la table GDB_ITEMS.

Vous trouverez ci-dessous une définition des tables de zones à valider et des tables d'erreurs topologiques ainsi qu'un exemple des tables de topologie telles qu'elles apparaissent dans SQL Server.

T_<ID>_DIRTYAREAS

Cette table est créée lorsque vous validez une topologie.

Nom du champ

Type de champ

Description

Nul ?

objectid

integer

Identifiant unique de l'entité de zone à valider dans la topologie

NOT NULL

isretired

integer

Ce code indique si la zone à valider a atteint le nombre maximal de sommets (250).

Lorsque cette limite est atteinte, une nouvelle entité de zone à valider est créée et la zone existante est supprimée (la valeur passe à 1).

0 = Nombre limite de sommets non atteint ou 1 = Nombre limite de sommets atteint

NOT NULL

dirtyarea

integer

geometry

geography

Shape, champ

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

Toute violation des règles de topologie est représentée comme entité d'erreur. De même que les zones à valider, ces entités d'erreur sont stockées et gérées dans des tables d'erreurs topologiques distinctes. Ces tables ont une définition de structure presque identique, à l'exception des champs supplémentaires spécifiques au type de forme de l'erreur topologique. Comme leur nom l'indique, elles stockent les informations utiles sur les erreurs topologiques par type d'entité (ligne, point ou polygone).

Ces tables n'apparaissent dans votre base de données qu'à compter de la validation d'une topologie.

Nom du champ

Type de champ

Description

Nul ?

IdObjet

entier

Identifiant unique de l'entité d'erreur topologique dans la table d'erreur topologique spécifiée

Les erreurs topologiques n'ont pas d'identifiant unique dans la topologie ; elles n'en ont un que dans leur table spécifique.

NOT NULL

OriginClassID

entier

Identifiant de classe d'objets de la classe d'entités d'origine

NOT NULL

OriginID

entier

Identifiant de l'entité issue de la classe d'entités d'origine liée à l'erreur topologique

DestClassID

entier

Identifiant de classe d'objets de la classe d'entités de destination

DestID

entier

Identifiant de l'entité issue de la classe d'entités de destination liée à l'erreur topologique

TopoRuleType

entier

Type de règle de topologie ; correspond à une valeur de la constante esriTopologyRuleType

TopoRuleID

entier

Identifiant de la règle de topologie stockée dans la colonne ItemInfo de la table GDB_ITEMS

NOT NULL

IsException

entier

Code indiquant si l'erreur topologique a été marquée comme exception

  • 0 = Non marquée comme exception (valeur par défaut)
  • 1 = Marquée comme exception

NOT NULL

Forme

entier

Indique le type de forme

Les zones à valider et tables d'erreurs topologiques sont créées dans la structure de l'utilisateur qui crée la topologie. Les autres tables sont créées dans la structure de l'utilisateur administratif ArcSDE.

Tables de topologie dans SQL Server

Les lignes pointillées indiquent les relations implicites entre colonnes.

Topologies dans un document XML

Les topologies sont des types de jeux de données, dans les documents XML ils sont donc délimités par une balise DataElement de type FeatureDataset. Les règles de topologie sont incluses et regroupées avec une balise TopologyRule. Pour la topologie u_topo dans un jeu de données d'entité Water, les informations dans un document XML se présentent comme suit :

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

Thèmes connexes

9/12/2013