Topologías de una geodatabase en PostgreSQL
Las topologías son reglas que aplican la integridad de datos y administran el comportamiento de las clases de entidad relacionadas espacialmente. Una topología de geodatabase almacena información sobre las clases de entidad (que deben estar en el mismo dataset de entidades) que participan en la topología, la tolerancia cluster asignada a la topología, la clasificación relativa de cada clase de entidad en la topología y una lista de reglas que se aplican a esa topología.
Para obtener más información sobre los conceptos relacionados con las topologías, consulteConceptos básicos de topología yTopología en ArcGIS.
Topologías en ArcGIS Desktop
En el árbol de catálogo, las topologías aparecen en el dataset de entidades en que residen las clases de entidad participantes. La topología está representada con el siguiente icono:
Puede ver qué clases de entidad en una dataset de entidades participan en la topología si busca en la pestaña Clases de entidad del cuadro de diálogo Propiedades de topología.
Si hace clic en la pestaña Reglas, se visualizan las reglas que se aplican a la topología. Una vez que la topología se valida, puede generar una lista de errores y excepciones para cada regla desde la pestaña Errores.
Topologías en una base de datos PostgreSQL
En el DBMS, las topologías se almacenan en la tabla gdb_items. Las reglas asociadas a la topología se almacenan en la columna definition.
Cuando valida una topología, los errores de topología y las áreas sin validar que se encuentran y que están asociados con cada topología se almacenan en un conjunto de tablas en el esquema del usuario conectado a la geodatabase. Son las tablas t_<id>_dirtyareas, t_<id>_lineerrors, t_<id>_pointerrors y t_<id>_polyerrors. El Id. en los nombres de tabla corresponde al Id. de topología en el campo datasetsubtype1 de la tabla gdb_items. Cada tabla de errores almacena la regla infringida en el campo toporuleid. El campo está vinculado al campo iteminfo de la tabla gdb_items.
Lo siguiente es una definición de las tablas de los errores de topología y las áreas sin validar, y un ejemplo de las tablas de topología como aparecen en PostgreSQL.
t_<id>_dirtyareas
Esta tabla se crea cuando valida una topología.
Nombre de campo |
Tipo de campo |
Descripción |
¿Nulo? |
---|---|---|---|
objectid |
integer |
Identificador único de la entidad del área sin validar en la topología |
NO NULO |
isretired |
integer |
Este código indica si el área sin validar ha alcanzado la cantidad máxima de vértices (250). Cuando se alcanza ese límite, se crea una nueva entidad de área sin validar y se retira la existente (el valor cambia a 1). 0 = Aún no se alcanzó el límite máximo de vértices o 1 = Límite máximo de vértices |
NO NULO |
dirtyarea |
st_geometry geometry |
Campo de forma |
t_<id>_pointerrors, t_<id>_lineerrors y t_<id>_polyerrors
Las infracciones a las reglas de topología se representan como entidades de error. Como sucede con las áreas sin validar, estas entidades de error también se almacenan y se administran en tablas de error de topología separadas. Todas estas tablas comparten una definición de esquema casi idéntica, a excepción de los campos adicionales específicos al tipo de forma del error de topología. Como se indica en los nombres de tabla, almacenan información sobre los errores de topología basados en el tipo de entidad en la que ocurre el error: línea, punto o polígono.
Estas tablas no existen en la base de datos hasta que haya validado la topología.
Nombre de campo |
Tipo de campo |
Descripción |
¿Nulo? |
---|---|---|---|
Object ID |
entero |
Id. único de la entidad de error de topología en la tabla de errores de topología especificada; los errores de topología no tienen Id. únicos en la topología, sólo en sus tablas específicas. |
NO NULO |
originclassid |
entero |
Id. de clase de objeto de la clase de entidad de origen |
NO NULO |
originid |
entero |
Id. de entidad de la entidad desde la clase de entidad de origen que está en relación con el error de topología. |
|
destclassid |
entero |
Id. de clase de objeto de la clase de entidad de destino |
|
destid |
entero |
Id. de entidad de la entidad procedente de la clase de entidad de destino que está en relación con el error de topología. |
|
toporuletype |
entero |
El tipo de regla topológica; corresponde a un valor de la constante esriTopologyRuleType |
NO NULO |
toporuleid |
entero |
El Id. de la regla topológica almacenado en la columna iteminfo de la tabla gdb_items |
NO NULO |
isexception |
entero |
Se trata de un código que indica si un error de topología se ha marcado como excepción o no. 0 = No es una excepción (el predeterminado); 1 = Marcado como excepción |
NO NULO |
forma |
st_geometry o geometría |
Indica el tipo de forma |
Las tablas de los errores de topología y las áreas sin validar se crean en el esquema del usuario que creó la topología, a diferencia de la otra tabla, que es una tabla del sistema almacenada en el esquema del usuario administrador de ArcSDE.
El siguiente es un diagrama de las tablas de una topología validada:
Las líneas discontinuas indican relaciones implícitas entre las columnas.
Topologías en un documento de espacio de trabajo XML
Las topologías son tipos de datasets, por lo que aparecen en un documento XML en una etiqueta DataElement del tipo FeatureDataset. Las reglas de topología están incluidas y agrupadas con una etiqueta TopologyRule. Para una topología, u_topo, en un dataset de entidades, water, la entrada en el documento XML se muestra de la siguiente manera:
<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>