Resumen
Simplifica polígonos quitando de curvaturas extrañas y preserva la forma esencial.
Ilustración
Uso
Existen dos métodos de simplificación:
- POINT_REMOVE es el más rápido de los dos algoritmos. Quita los vértices redundantes. Utilice este método para comprimir los datos o para obtener una simplificación más gruesa, especialmente cuando los datos son conocidos. La angulosidad (esquinas nítidas) del polígono resultante aumenta considerablemente a medida que aumenta la tolerancia y, por lo tanto, es posible que el polígono sea menos agradable estéticamente que la entrada.
- BEND_SIMPLIFY es más lento, pero generalmente produce resultados más fieles al original y más agradables estéticamente. Funciona eliminando curvaturas insignificantes a lo largo de los contornos de los polígonos. Utilice este método para obtener una simplificación refinada.
El parámetro Área mínima se aplica solamente a los polígonos simplificados. Todo polígono que sea más pequeño que el área mínima después de que se completa el proceso de simplificación se quitará de la clase de entidad de salida. Para un grupo de polígonos adyacentes que comparten bordes, este parámetro se aplica al área total del grupo.
Esta herramienta produce dos clases de entidad de salida: una clase de entidad poligonal para almacenar los polígonos simplificados y una clase de entidad de puntos para almacenar los puntos que representan los polígonos que se contrajeron a un área cero. El nombre y la ubicación de salida del punto se derivan automáticamente del nombre del polígono de salida por medio de un sufijo _Pnt. La salida del polígono contiene todos los campos de entrada, mientras que la salida del punto no contiene ninguno de los campos de entrada.
Los polígonos multiparte se simplifican como partes individuales.
Existen tres opciones para el manejo de errores topológicos en la salida:
- No verificar errores topológicos (error_option = 'NO_CHECK' en Python): el resultado generado por el proceso de simplificación no comprobará la existencia de errores topológicos. El procesamiento es más rápido. Utilice esta opción solamente cuando confíe en la precisión topológica de los datos. Esta es la opción predeterminada.
- Marcar errores (error_option = 'FLAG_ERRORS' en Python): se comprobarán los errores topológicos en el resultado del proceso de simplificación y se marcarán las entidades con errores topológicos. Utilice esta opción cuando sea más importante identificar errores topológicos que resolver errores. Esta opción no es compatible en una sesión de edición.
- La salida del polígono contiene dos campos nuevos que indican si una entidad tiene un error topológico. Los campos InPoly_FID y SimPlyFlag contienen los Id. de las entidades de entrada y los errores topológicos, respectivamente.
- El campo InPoly_FID vincula los puntos contraídos con sus respectivos polígonos de entrada.
- En el campo SimPlyFlag, un valor de 1 indica que se introdujo un error, mientras que un valor de 0 (cero) indica que no se introdujeron errores.
- Después de que se resuelva un error topológico, los valores del marcador se mantendrán en su lugar. Utilice el campo SimPlyFlag para examinar las entidades que tengan errores topológicos.
- Resolver errores topológicos (error_option = 'RESOLVE_ERRORS' en Python): Repara errores topológicos introducidos por el proceso de simplificación. El tiempo de procesamiento será mayor. Esta opción no es compatible en una sesión de edición.
- La tolerancia que se especifica puede ser adecuada para la mayoría de los polígonos, pero no para todos, especialmente en áreas congestionadas. Cuando se detecta un error topológico después del primer proceso de simplificación, se ubican los segmentos de límites involucrados (no los polígonos enteros) y se utiliza una tolerancia reducida.
- Se utiliza una nueva tolerancia un 50% más pequeña para volver a simplificar estos segmentos. Esta iteración se repite las veces que sea necesario hasta que no se encuentren más errores topológicos.
- La clase de entidad de salida de polígono contendrá el mismo número de polígonos que la entrada. Tendrá dos campos nuevos, MaxSimpTol y MinSimpTol, que almacenan las tolerancias máxima y mínima que se utilizan en la simplificación de cada polígono por medio de la iteración. Si no se introdujeron errores, los valores de los campos MaxSimpTol y MinSimpTol serán iguales a la tolerancia de simplificación especificada.
- Para las opciones NO_CHECK y FLAG_ERRORS, es posible que, durante el proceso de simplificación, se cree una geometría cerrada que se reparará automáticamente. Por ejemplo, si un polígono se cruza a sí mismo, se reparará para transformarse en un polígono multiparte de manera que ninguna parte se cruce con otra, a pesar de que el polígono siga pareciendo cruzado.
La salida del punto se completará cuando se utilicen las opciones NO_CHECK o FLAG_ERRORS, o si se activa la casilla de verificación Mantener los puntos contraídos. Si un polígono de entrada contiene varias partes y una de ellas se transforma en un punto contraído, la entidad de puntos que representa esa parte también se incluirá en la salida del punto.
Sintaxis
SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option})
Parámetro | Explicación | Tipo de datos |
in_features | Entidades poligonales que se simplifican. | Feature Layer |
out_feature_class | La clase de entidad poligonal de salida que se creará. | Feature Class |
algorithm | Especifica el algoritmo de simplificación de polígono.
| String |
tolerance | La tolerancia que determina el grado de simplificación. Se debe especificar una tolerancia, la cual debe ser mayor que cero. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad.
| Linear unit |
minimum_area (Opcional) | Establece el área mínima para un polígono simplificado que se retendrá. El valor predeterminado es cero, es decir, se mantienen todos los polígonos. Puede elegir la unidad que prefiera para el valor especificado; el valor predeterminado es la unidad de la entidad. | Areal unit |
error_option (Opcional) | Especifica cómo se manejarán los errores topológicos (posiblemente introducidos en el proceso, incluidos el cruce de línea, la superposición de línea y las líneas contraídas a una longitud de cero).
| String |
collapsed_point_option (Opcional) | Especifica si los polígonos contraídos a un área de cero se deben mantener como puntos, de encontrarse algunos en el proceso. Esta opción solo se aplica cuando se especifica NO_CHECK o FLAG_ERRORS.
| Boolean |
Muestra de código
Ejemplo de SimplifyPolygon (Ventana de Python)
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta SimplifyPolygon en el modo inmediato.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
Ejemplo 2 de SimplifyPolygon (secuencia de comandos independiente)
La siguiente secuencia de comandos independiente muestra cómo utilizar la herramienta SimplifyPolygon.
# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"
# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY")
# Simplify lake polygons.
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")
Entornos
Información sobre licencias
- ArcGIS Desktop Basic: No
- ArcGIS Desktop Standard: Sí
- ArcGIS Desktop Advanced: Sí