Topologies d'une géodatabase dans PostgreSQL

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 PostgreSQL

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 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 PostgreSQL.

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

st_geometry

geometry

Shape, champ

t_<id>_pointerrors, t_<id>_lineerrors 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 ?

objectid

entier

Identifiant unique de l'entité d'erreur topologique dans la table d'erreurs topologiques correspondante ; les erreurs topologiques n'ont pas d'identifiant unique dans la topologie, seulement 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é 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 cible

destid

entier

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

toporuletype

entier

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

NOT NULL

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 ou non. 0 = Non marquée comme exception (valeur par défaut) ; 1 = marquée comme exception

NOT NULL

shape

st_geometry ou geometry

Indique le type de forme

Les tables de zones à valider et les tables d'erreurs topologiques sont créées dans la structure de l'utilisateur ayant créé la topologie, contrairement à l'autre table qui est une table système stockée dans la structure de l'administrateur de la géodatabase.

Le diagramme suivant présente les tables d'une topologie validée :

Tables de topologie dans PostgreSQL

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

Topologies dans un document d'espace de travail 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.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>

Thèmes connexes

9/12/2013