Reparar geometría (Administración de datos)

Resumen

Inspecciona cada entidad de una clase de entidad en busca de problemas de geometría. Cuando descubre un problema, se aplica una solución y se imprime una descripción de una línea que identifica la entidad, así como el problema de geometría que se ha corregido.

Más información sobre la verificación y reparación de geometrías

Uso

    Precaución:

    Esta herramienta modifica los datos de entrada. Consulte Herramientas que no crean datasets de salida para obtener más información y estrategias para evitar cambios de datos no deseados.

  • Esta herramienta utiliza la misma lógica que la herramienta Verificar geometría para identificar problemas de geometría.

  • A continuación se detalla una lista de problemas de geometría y el arreglo correspondiente que aplicará la herramienta:

    • Null geometry: se eliminará el registro de la clase de entidad. Para guardar los registros con geometría nula, desactive Eliminar entidades con geometría nula (utilice la opción KEEP_NULL del parámetro delete_null de Python).
    • Short segment: se eliminará el segmento corto de la geometría.
    • Incorrect ring ordering: se actualizará la geometría para que tenga un ordenamiento de anillo correcto.
    • Incorrect segment orientation: se actualizará la geometría para que tenga la orientación de segmento correcta.
    • Self intersections: se disolverán las áreas de superposición en un polígono.
    • Unclosed rings: se cerrarán los anillos abiertos conectando sus extremos.
    • Empty parts: se eliminarán las partes que son nulas o están vacías.
    • Duplicate vertex: se eliminará uno de los vértices.
    • Mismatched attributes: se actualizará la coordenada z o m para que coincida.
    • Discontinuous parts: se crearán varias partes a partir de la parte discontinua existente.
    • Empty Z values: el valor z se establecerá en 0.
    • Bad envelope: se actualizará el sobre de la entidad para que sea correcto.
  • Después de aplicar una corrección, la herramienta volverá a evaluar la geometría resultante y, si encuentra otro problema, aplicará la solución correspondiente a ese problema. Por ejemplo, el resultado de arreglar una geometría con el problema Incorrect ring ordering puede producir una geometría con el problema Null geometry.

  • En Reparar geometría no hay ninguna solución para bad dataset extent. Para resolver este problema, ejecute la herramienta Recalcular la extensión de clase de entidad en el dataset.

  • El método de validación de Esri garantiza que la geometría sea topológicamente legal utilizando el método de simplificación de Esri.

  • El método de validación de OGC garantiza que la geometría cumple con la especificación de OGC que se define en el Estándar de implementación de OpenGIS para información geográfica - acceso a entidades simples - Parte 1: arquitectura común.

  • Después de reparar la geometría de una entidad utilizando la opción de OGC, las siguientes ediciones o modificaciones podrían provocar que la geometría no cumpla con la especificación de OGC. Tras la modificación de la entidad, ejecute la herramienta Verificar geometría para comprobar si hay nuevos problemas relacionados con la geometría. Si es necesario, vuelva a ejecutar la herramienta Reparar geometría.

  • La simplificación de OGC no admite segmentos no lineales, por ejemplo, curvas de Bézier, arcos circulares y arcos elípticos. Estos tipos de segmentos se deberán densificar utilizando la herramienta Densificar en el dataset de entrada antes de ejecutar la herramienta Reparar geometría. Para evitar cambiar de forma irreversible segmentos no lineales al ejecutar la herramienta Densificar, realice primero una copia de los datos y, a continuación, utilice Reparar geometría en la copia. Para determinar si sus datos tienen segmentos no lineales, utilice la herramienta Agregar atributos de geometría.

Sintaxis

RepairGeometry(in_features, {delete_null}, {validation_method})
ParámetroExplicaciónTipo de datos
in_features

Clase de entidad o capa que se desea procesar.

Feature Layer
delete_null
(Opcional)

Especifica la acción que se deberá llevar a cabo cuando existan geometrías nulas.

  • DELETE_NULL Se eliminarán de la entrada las entidades con geometría NULA. Esta es la opción predeterminada.
  • KEEP_NULL No se eliminarán de la entrada las entidades con geometría NULA.
Boolean
validation_method
(Opcional)

Especifica qué método de validación de la geometría se utilizará para identificar problemas relacionados con la geometría.

  • ESRI Se utilizará el método de validación de geometría de Esri. Esta es la opción predeterminada.
  • OGC Se utilizará el método de validación de geometría de Open Geospatial Consortium (OGC).
String

Salida derivada

NombreExplicaciónTipo de datos
out_feature_class

Las entidades de entrada actualizadas.

Capa de entidades

Muestra de código

Ejemplo 1 de RepairGeometry (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función RepairGeometry en modo inmediato.

import arcpy
arcpy.RepairGeometry_management("c:/data/sketchy.shp")
Ejemplo 2 de RepairGeometry (script independiente)

El siguiente script independiente es un simple ejemplo de cómo aplicar la función RepairGeometry en secuencias de comandos.

# Description: 
#   Goes through the table generated by the Check Geometry tool and does 
#   the following
#   1) backs-up all features which will be 'fixed' to a "_bad_geom" feature class
#   2) runs repairGeometry on all feature classes listed in the table 

import arcpy
import os
 
# Table that was produced by Check Geometry tool
table = r"c:\temp\data.gdb\cg_sample1"
 
# Create local variables
fcs = []
 
# Loop through the table and get the list of fcs
for row in arcpy.da.SearchCursor(table, ("CLASS")):
    # Get the class (feature class) from the cursor
    if not row[0] in fcs:
        fcs.append(row[0])
 
# Now loop through the fcs list, backup the bad geometries into fc + "_bad_geom"
# then repair the fc
print("> Processing {0} feature classes".format(len(fcs)))
for fc in fcs:
    print("Processing " + fc)
    lyr = 'temporary_layer'
    if arcpy.Exists(lyr):
        arcpy.Delete_management(lyr)
    
    tv = "cg_table_view"
    if arcpy.Exists(tv):
        arcpy.Delete_management(tv)

    arcpy.MakeTableView_management(table, tv, ("\"CLASS\" = '%s'" % fc))
    arcpy.MakeFeatureLayer_management(fc, lyr)
    arcpy.AddJoin_management(lyr, arcpy.Describe(lyr).OIDFieldName, tv, "FEATURE_ID")
    arcpy.CopyFeatures_management(lyr, fc + "_bad_geom")
    arcpy.RemoveJoin_management(lyr, os.path.basename(table))
    arcpy.RepairGeometry_management(lyr)

Información de licenciamiento

  • Basic: Sí
  • Standard: Sí
  • Advanced: Sí

Temas relacionados