Resumen
Genera un informe de problemas de geometría en una clase de entidad.
Para obtener información adicional sobre problemas de geometría, su impacto en el software y las posibles causas, consulte Verificar y reparar geometrías.
Uso
Los formatos de entrada válidos son shapefiles y las clases de entidad almacenadas en un archivo o una geodatabase corporativa. Para las clases de entidad almacenadas en una geodatabase corporativa, se admiten los siguientes tipos espaciales:
- Microsoft SQL Server Geometría y geografía
- PostgreSQL PostGIS Geometría y geografía
- Oracle Geometría SDO
La Tabla de salida tendrá un registro para cada problema de geometría que se descubra. Si no se encuentran problemas, la tabla estará vacía.
El contenido de la Tabla de salida, incluidos los códigos de PROBLEM, se escribe en inglés.
En las entidades de puntos, solo es posible el problema de geometría nula.
Para facilitar la revisión de las entidades en las que se han detectado problemas de geometría, puede unir las entidades de entrada a la tabla de salida utilizando la herramienta Agregar unión, junto con el campo OBJECTID o FID de la entrada y el campo FEATURE_ID de la tabla de salida.
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. 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.
El método de 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 con el dataset de entrada antes de ejecutar la herramienta Verificar geometría. Para evitar cambiar de forma irreversible segmentos no lineales al ejecutar la herramienta Densificar, realice primero una copia de los datos. Para determinar si sus datos tienen segmentos no lineales, utilice la herramienta Agregar atributos de geometría.
Los problemas identificados por esta herramienta se pueden solucionar de las siguientes formas:
- Edite y repare manualmente la entidad con problemas de geometría. Algunos de los problemas no se pueden reparar mediante una edición.
- Use la herramienta Reparar geometría. 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.
La Tabla de salida tiene los siguientes campos:
- CLASS: ruta completa y nombre de la clase de entidad en la que se encontró el problema.
- FEATURE_ID: Id. de entidad (FID) o Id. de objeto (OID) de la entidad con el problema de geometría.
- PROBLEM: breve descripción del problema.
El campo PROBLEM contendrá uno de los siguientes códigos:
- Short segment: algunos segmentos son más cortos de lo permitido por las unidades del sistema de la referencia espacial asociada a la geometría.
- Null geometry: la entidad no tiene geometría o no hay nada en el campo SHAPE.
- Incorrect ring ordering: el polígono es topológicamente simple, pero sus anillos pueden no estar orientados de la manera correcta (los anillos exteriores en el sentido de las agujas del reloj; los anillos interiores en sentido contrario a las agujas del reloj).
- Incorrect segment orientation: los segmentos individuales no están orientados de manera consistente. El punto hasta del segmento i debe ser incidente en el punto desde del segmento i+1.
- Self intersections: un polígono no debe intersecar con sí mismo.
- Unclosed rings: el último segmento en un anillo debe tener su incidente del punto "hasta" en el punto "desde" del primer segmento.
- Empty parts: la geometría tiene varias partes y una de ellas está vacía (no tiene geometría).
- Duplicate vertex: la geometría tiene dos o más vértices secuenciales con coordenadas idénticas.
- Mismatched attributes: la coordenada Z o M de un extremo del segmento de línea no coincide con la coordenada Z o M del extremo coincidente en el siguiente segmento.
- Discontinuous parts: una de las partes de la geometría está compuesta de partes desconectadas o discontinuas.
- Empty Z values: la geometría tiene uno o más vértices con un valor Z vacío (por ejemplo, NaN).
- Bad envelope: el sobre no coincide con la extensión de coordenadas de la geometría.
- Bad dataset extent: la propiedad de extensión del dataset no contiene todas las entidades del dataset. Con este problema, FEATURE_ID será -1.
Para los datos almacenados en geodatabases corporativas, el campo PROBLEM contendrá uno de los siguientes códigos:
- NEEDS_REORDERING: la forma es correcta excepto porque es necesario reordenarla y eliminar puntos duplicados.
- SE_INVALID_ENTITY_TYPE: tipo de entidad no válida.
- SE_SHAPE_INTEGRITY_ERROR: error de integridad de forma.
- SE_INVALID_SHAPE_OBJECT: el manipulador del objeto de la forma dada no es válido.
- SE_COORD_OUT_OF_BOUNDS: la coordenada especificada supera el rango de coordenada válido.
- SE_POLY_SHELLS_OVERLAP: se superponen dos donuts o dos shells exteriores.
- SE_TOO_FEW_POINTS: el número de puntos es menos que el necesario para la entidad.
- SE_INVALID_PART_SEPARATOR: separador de partes en la posición incorrecta.
- SE_INVALID_POLYGON_CLOSURE: el polígono no se cierra correctamente.
- SE_INVALID_OUTER_SHELL: el shell exterior de polígono no encierra por completo todos los donuts de la parte.
- SE_ZERO_AREA_POLYGON: el shell de polígono no tiene área.
- SE_POLYGON_HAS_VERTICAL_LINE: el shell de polígono contiene una línea vertical.
- SE_OUTER_SHELLS_OVERLAP: el área multiparte tiene partes superpuestas.
- SE_SELF_INTERSECTING: el límite de la cadena de líneas o del polígono es el de autointersección.
Sintaxis
arcpy.management.CheckGeometry(in_features, out_table, {validation_method})
Parámetro | Explicación | Tipo de datos |
in_features [in_feature,...] | Una o más clases de entidad o capas de entidades para ver si hay en ellas problemas de geometría. | Feature Layer |
out_table | El informe (en forma de tabla) de los problemas descubiertos. | Table |
validation_method (Opcional) | Especifica el método de validación de geometría que se usará para identificar problemas de geometría.
| String |
Muestra de código
El siguiente script de la ventana de Python muestra cómo utilizar la función CheckGeometry en el modo inmediato en una geodatabase de archivos.
import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.CheckGeometry_management(["contours", "roads", "vegetation"], "CheckGeom_Result")
En el siguiente script independiente se utiliza la función CheckGeometry creando un bucle en todas las clases de entidad de una geodatabase de archivos.
# BatchCheckGeometry.py
# Description: Loops through all the feature classes in a geodatabase, and
# generates a report of the problems encountered with feature
# geometry.
# Import modules
import arcpy
import os
# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
# A variable that will hold the list of all the feature classes
# inside the geodatabase
fc_list = []
# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace,
datatype='FeatureClass'):
for fc in fcs:
fc_list.append(os.path.join(path, fc))
print("Running the check geometry tool on {} feature classes".format(
len(fc_list)))
arcpy.CheckGeometry_management(fc_list, out_table)
print("{} geometry problems found, see {} for details.".format(
arcpy.GetCount_management(out_table)[0], out_table))
Entornos
Información de licenciamiento
- Basic: Sí
- Standard: Sí
- Advanced: Sí