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
-
Esta herramienta utiliza la misma lógica que la herramienta Verificar geometría para evaluar si una geometría tiene un problema.
-
A continuación se detalla una lista de problemas de geometría y el arreglo correspondiente que aplicará la herramienta:
- Geometría nula: se eliminará el registro de la clase de entidad. Para guardar los registros de geometría nula, desmarque la opción Eliminar entidades con geometría nula del cuadro de diálogo de la herramienta o, en una secuencia de comandos, establezca el parámetro delete_null en KEEP_NULL.
- Segmento corto: se eliminará el segmento corto de la geometría.
- Ordenamiento incorrecto del anillo: se actualizará la geometría para que tenga un ordenamiento de anillo correcto.
- Orientación incorrecta del segmento: se actualizará la geometría para que tenga una orientación de segmento correcta.
- Intersecciones propias: se disolverán las áreas de superposición en un polígono.
- Anillos sin cerrar: se cerrarán los anillos conectando sus extremos.
- Partes vacías: se eliminarán las partes que son nulas o están vacías.
- Vértice duplicado: se eliminará uno de los vértices.
- Atributos no concordantes: se actualizarán las coordenadas Z o M para que concuerden.
- Partes discontinuas: se crearán varias partes a partir de la parte discontinua existente.
- Valores Z vacíos: el valor Z se establecerá en 0.
-
Las geodatabases de SDE verifican y reparan automáticamente las geometrías de entidades cuando las entidades se cargan en la base de datos, por lo que no es necesario utilizar las herramientas Verificar geometría y Reparar geometría con las clases de entidad de SDE.
-
Después de aplicar una de las reparaciones anteriores, la herramienta volverá a evaluar la geometría resultante y, si encuentra otro problema, aplicará el arreglo correspondiente.
Desde la versión 10.0, una geometría de línea ya no se considera "autointersecante" si se cruza a sí misma. No se produjo ningún efecto adverso en estos tipos de geometría; por lo tanto, la herramienta Verificar geometría ya no informará la entidad como un problema, y la herramienta Reparar geometría ya no realizará una "reparación" en la geometría de la entidad. Antes de la versión 10.0, la herramienta Reparar geometría agregaba vértices al punto de intersección de las líneas "autointersecantes". Si desea agregar vértices cuando las entidades de línea intersecar con sí mismas, utilice la herramienta Integrar.
Esta herramienta modifica los datos de entrada. Vea Herramientas sin salidas para ver más información y estrategias para evitar cambios de datos no deseados.
Sintaxis
Parámetro | Explicación | Tipo 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.
| Boolean |
Ejemplo de código
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")
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)