Reparar geometría (Administración de datos)

Resumen

Inspecciona cada entidad en una clase de entidad en busca de problemas de geometría. Cuando descubre un problema de geometría, se realiza el arreglo adecuado y se imprime una descripción de una línea que identifica la entidad y el problema.

Los shapefiles y las clases de entidad de geodatabase de archivos o personal son entradas válidas.

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

Uso

Sintaxis

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

Capa o clase de entidad que será reparada. Los shapefiles y las clases de entidad de geodatabase de archivos y personal son entidades de entrada válidas.

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

Ejemplo de código

Ejemplo de Reparar geometría (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función RepairGeometry en el modo inmediato.

import arcpy arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
Ejemplo 2 de Reparar geometría (secuencia de comandos independiente)

La siguiente secuencia de comandos independiente es un ejemplo de cómo aplicar la función RepairGeometry en las 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 
# Author: ESRI

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

Temas relacionados

9/11/2013