Reparar geometría (Administración de datos)

Resumen

Inspecciona las entidades para detectar problemas de geometría y los repara. Si se detecta un problema, se realizará una reparación, y una descripción de una línea identificará la entidad, así como el problema de geometría que se ha reparado.

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

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 modifican o actualizan los datos de entrada para obtener más información y estrategias para evitar cambios de datos no deseados.

  • Los formatos de entrada válidos son shapefiles y clases de entidad almacenadas en una geodatabase de archivos, base de datos, geodatabase corporativa, GeoPackage o base de datos SpatiaLite. Para las clases de entidad almacenadas en una base de datos corporativa o geodatabase corporativa, se admiten los siguientes tipos espaciales:

    • Microsoft SQL Server: Geometría y geografía
    • PostgreSQL: PostGIS, Geometría y Geografía
    • Oracle: SDO_Geometry

    Licencia:

    Una licencia de Desktop Basic le permite aplicar esta herramienta solo a shapefiles y clases de entidad almacenadas en una geodatabase de archivos, GeoPackage o base de datos SpatiaLite. Una licencia de Desktop Standard o Desktop Advanced le permite aplicar también esta herramienta a las clases de entidad almacenadas en una base de datos o geodatabase corporativa.

  • Las clases de entidad almacenadas en una geodatabase corporativa y registradas como versionadas no son compatibles.

  • El botón de alternancia Habilitar Deshacer no es válido para las entradas de una geodatabase corporativa.

  • A continuación, se detalla una lista de problemas de geometría y la correspondiente reparación que realizará la herramienta:

    • Null geometry: se eliminará el registro de la clase de entidad. Para conservar los registros con geometría nula, desactive el parámetro Eliminar entidades con geometría nula.
    • Short segment: se eliminará el segmento corto de la geometría.
    • Incorrect ring ordering: la geometría se actualizará con el orden correcto de los anillos.
    • Incorrect segment orientation: la geometría se actualizará con la orientación correcta de los segmentos.
    • 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.
    • Bad dataset extent: se actualizará la extensión de la clase de entidad para que sea correcta.

    A continuación, se muestra la lista de problemas de geometría que pueden derivarse de los datos almacenados en una geodatabase corporativa y la correspondiente reparación (si existe alguna) que realizará la herramienta:

    • NEEDS_REORDERING: se reordenará la forma y se eliminarán los puntos duplicados.
    • SE_INVALID_ENTITY_TYPE: no se reparará el tipo de entidad (se debe eliminar la entidad).
    • SE_SHAPE_INTEGRITY_ERROR: es posible que la forma no se pueda reparar.
    • SE_INVALID_SHAPE_OBJECT: es posible que el objeto de la forma no se pueda reparar.
    • SE_COORD_OUT_OF_BOUNDS: la coordenada no se reparará.
    • SE_POLY_SHELLS_OVERLAP: los shells superpuestos se fusionarán.
    • SE_TOO_FEW_POINTS: los puntos no se repararán.
    • SE_INVALID_PART_SEPARATOR: es posible que el separador de partes no se pueda reparar.
    • SE_INVALID_POLYGON_CLOSURE: se descartarán los shells sin cerrar (el polígono resultante se puede dejar vacío).
    • SE_INVALID_OUTER_SHELL: se hará un intento de reparar los shells exteriores de la entidad; es posible que se descarten shells en el proceso.
    • SE_ZERO_AREA_POLYGON: el polígono se convertirá en una forma vacía.
    • SE_POLYGON_HAS_VERTICAL_LINE: se eliminará la línea vertical (la forma puede convertirse a 2D).
    • SE_OUTER_SHELLS_OVERLAP: las partes superpuestas se fusionarán.
    • SE_SELF_INTERSECTING: se agregarán puntos de intersección según sea necesario.

    Nota:

    Es posible que algunos problemas asociados con los datos almacenados en una base de datos corporativa no se puedan reparar con las herramientas de ArcGIS.

  • Después de realizar una reparación, la herramienta volverá a evaluar la geometría resultante y, si encuentra otro problema, realizará la reparación correspondiente a ese problema. Por ejemplo, el resultado de reparar una geometría con el problema Incorrect ring ordering podría ser una geometría con el problema Null geometry.

  • La opción de validación de Esri garantiza que la geometría sea topológicamente correcta mediante el método Simplificar de Esri. Solo la validación Esri está disponible para los datos almacenados en una geodatabase corporativa.

  • El método de validación del Consorcio Geoespacial abierto (OGC) garantiza que la geometría cumpla con la especificación de OGC tal y como 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 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 geometría validada o reparada con la opción OGC será válida para la opción de Esri. Para más información sobre ambos métodos, consulte Qué es un polígono simple.

Parámetros

EtiquetaExplicaciónTipo de datos
Entidades de entrada

Clase de entidad o capa que se desea procesar.

Licencia:

Una licencia Desktop Basic solo admite shapefiles y clases de entidad almacenadas en una geodatabase de archivos, GeoPackage o base de datos SpatiaLite como formatos de entidad de entrada válidos. Las licencias de Desktop Standard o Desktop Advanced permiten también utilizar clases de entidad almacenadas en una base de datos o geodatabase corporativa como formatos de entidad de entrada válidos.

Feature Layer
Eliminar entidades con geometría nula
(Opcional)

Especifica si se eliminarán las entidades con geometrías nulas.

  • Activado: se eliminarán de la entrada las entidades con geometría nula. Esta es la opción predeterminada.
  • Desactivado: no se eliminarán de la entrada las entidades con geometría nula.

Nota:
Eliminar nulo no está disponible para los datos almacenados en una base de datos corporativa, geodatabase corporativa, GeoPackage o base de datos SpatiaLite.

Boolean
Método de validación
(Opcional)

Especifica el método de validación de geometría que se usará para identificar problemas de geometría.

  • EsriSe utilizará el método de validación de geometría de Esri. Esta es la opción predeterminada.
  • OGCSe utilizará el método de validación de geometría de OGC.
String

Salida derivada

EtiquetaExplicaciónTipo de datos
Entidades de entrada reparadas

Las entidades de entrada actualizadas.

Feature Layer

arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
NombreExplicaciónTipo de datos
in_features

Clase de entidad o capa que se desea procesar.

Licencia:

Una licencia Desktop Basic solo admite shapefiles y clases de entidad almacenadas en una geodatabase de archivos, GeoPackage o base de datos SpatiaLite como formatos de entidad de entrada válidos. Las licencias de Desktop Standard o Desktop Advanced permiten también utilizar clases de entidad almacenadas en una base de datos o geodatabase corporativa como formatos de entidad de entrada válidos.

Feature Layer
delete_null
(Opcional)

Especifica si se eliminarán las entidades con geometrías nulas.

  • DELETE_NULLSe eliminarán de la entrada las entidades con geometría nula. Esta es la opción predeterminada.
  • KEEP_NULLNo se eliminarán de la entrada las entidades con geometría nula.

Nota:
Solo KEEP_NULL es válido para las entradas de una base de datos corporativa, geodatabase corporativa, GeoPackage o base de datos SpatiaLite.

Boolean
validation_method
(Opcional)

Especifica el método de validación de geometría que se usará para identificar problemas de geometría.

  • ESRISe utilizará el método de validación de geometría de Esri. Esta es la opción predeterminada.
  • OGCSe utilizará el método de validación de geometría de OGC.
String

Salida derivada

NombreExplicaciónTipo de datos
out_feature_class

Las entidades de entrada actualizadas.

Feature Layer

Muestra de código

Ejemplo 1 de RepairGeometry (ventana de Python)

El siguiente script de la ventana de Python muestra cómo utilizar la función RepairGeometry en el modo inmediato en un shapefile.

import arcpy
arcpy.management.RepairGeometry("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 scripts.

# 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)

Entornos

Casos especiales

Factor de procesamiento en paralelo

Si no se establece el entorno (valor predeterminado) o si se establece en 0, se desactivará el procesamiento en paralelo. Si se configura como 100, la herramienta intentará distribuir el trabajo entre todos los núcleos lógicos del equipo. Especificar un factor entre 1 y 99 hará que la herramienta identifique el porcentaje de núcleos lógicos que debe usar aplicando la fórmula (Factor de procesamiento en paralelo / 100 * Núcleos lógicos) redondeada al entero más próximo. Si el resultado de la fórmula es 0 o 1, no se habilitará el procesamiento en paralelo.

Información de licenciamiento

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

Temas relacionados