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 classes d'entités), 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 Desktop
Dans l'arborescence du Catalogue, les topologies s'affichent dans le jeu de classes d'entités où figurent les classes d'entités participantes. La topologie est représentée avec l'icône suivante :
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 classes d'entités qui participent à la topologie sélectionnée.
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.
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 |
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 ; elle 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
|
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.
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 classes d'entités 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>