Cómo crear topología con ArcPy

La topología permite encontrar geometrías coincidentes o comunes tanto en entidades de puntos, líneas y polígonos, así como comprobar la integridad de la información y la validación de la veracidad en la misma. Describe las relaciones entre puntos, líneas y polígonos que representa los objetos espaciales de una región geográfica.

Topología con ArcPy

Que los datos geográficos con los que contamos de partida para la realización de cualquier análisis no contengan errores topológicos es algo fundamental para el éxito de cualquier proyecto.

ArcGIS nos proporciona un gran número de herramientas y reglas topológicas. El conjunto de herramientas de topología sirve para crear y administrar la topología de una geodatabase.

En ArcMap encontramos un asistente o «Wizard» que ayuda a crear la topología usando estas herramientas de forma sencilla:

En este post veremos cómo crear topología mediante código python en ArcGIS. La ArcPy nos proporciona una serie de clases para llevar a cabo esta tarea. Las herramientas que veremos son las siguientes:

  • Crear topología.
  • Añadir una clase de entidad a la topología.
  • Añadir regla a la toplogía.
  • Validar topología.

Herramienta Crear topología

Crea una topología. En un primer momento la topología no contendrá clases de entidad ni reglas.

Esta es la sintaxis de Python:

  • in_dataset: el Feature Dataset donde se crea la topología.
  • out_name: Nombre que se le dará a la topología creada.
  • in_cluster_tolerance: la tolerancia clúster que se establecerá en la topología, parámetro opcional. En caso de no rellenarse o ser cero, se usara la tolerancia xy del Dataset.

El resultado de esta herramienta es la topología vacía y sin reglas.

Una vez creada la topología debemos Agregar las clases de entidad (los objetos geográficos) a la topología y agregar las reglas a la topología.

Añadir clases de entidad a la topología

Añade un clase de entidad(objeto geográfico) a la topología. La nueva clase de entidad debe estar en el mismo dataset de entidad que la topología.

Sintaxis de Python:

  • in_topology: topología a la que se añadirá la clase de entidad.
  • in_featureclass: la entidad que se añade a la topología. Se ha de encontrar en el mismo Dataset que la topología.
  • xy_rank: el grado relativo de precisión asociado a los vértices. Un valor más pequeño (1) el tipo de dato de entrada es numérico tipo Long.
  • z_rank: Si la clase de entidad posee valores Z incorporados, cuando se establece la clasificación, se puede influenciar que los vértices con valores Z más exactos se agrupen con los que lo son menos.

El resultado es la agregación de dicha entidad a la topología.

Añadir regla a la topología

Agrega una regla nueva a una topología. Las reglas topológicas varias en función del tipo de geometría que se utilice. Pueden ser:

La sintaxis de Python es la siguiente:

  • in_topology: topología a la que se añadirá la clase de entidad.
  • rule_type: la regla topológica que se agrega, parámetro tipo string. Link a la diferentes reglas topológicas.
  • in_featureclass: clase de entidad de entrada u origen a la que se aplica dicha regla.
  • subtype: subtipo de la clase de entidad de entrada u origen. Se ha de introducir la descripción del subtipo no el código. Parámetro string opcional.
  • In_featureclass2: Clase de entidad de destino para la regla topológica. Parámetro opcional puesto que no todas las reglas topológicas necesitan de una segunda entidad.
  • subtype2: subtipo de la clase de entidad de destino. Se ha de introducir la descripción del subtipo no el código. Parámetro string opcional.

Validar topología

Valida una topología de geodatabase. La herramienta Validar topología realiza las siguientes operaciones (documentación de ESRI):

  • Generación y clustering de vértices de entidad para buscar las entidades que comparten geometría (tienen coordenadas en común).
  • Inserción de vértices de coordenada comunes en las entidades que comparten geometría.
  • Ejecución de un conjunto de comprobaciones de integridad para identificar cualquier infracción de las reglas definidas para la topología.

Esta es la sintaxis de Python:

  • in_topology: topología que será validada.
  • visible_extent: parámetro booleano opcional que determina si se ha de usar la extensión completa o la visible en el mapa. En caso de ejecutarlo con Python o en ArcCatalog, será validada toda la extensión independientemente del parámetro seleccionado.

El resultado es la validación de la topología.

Ejemplo completo

El siguiente script te muestra cómo aplicar las diferentes herramientas de topología para crear un script personalizado de Python. El siguiente ejemplo es la forma más básica, pero en programación tu siempre podrás personalizarlo, ampliarlo o aumentar su complejidad todo lo que quieras.

Como ves, el código no plantea ninguna dificultad ya que consiste en encadenar un proceso tras otro. En este ejemplo hemos añadido solo una regla, pero en caso de añadir varias, siempre podrías introducir estas en un array con las condiciones, iterando y adjuntando todas sin necesidad de repetir la función varias veces; al igual que se hace con AddFeaturesClassToTopology, donde, mediante Describe, obtenemos los nombres de las entidades que se encuentran dentro del dataset, agregando solamente las que son de tipo FeatureClass mediante el if.

Si quieres aprender a trabajar con Python en ArcGIS y tener el apoyo de un tutor, inscríbete en nuestros cursos de python para ArcGIS nivel inicial o avanzado, en que está incluída la creación de topología.