Resumen
Simplifica polígonos quitando de curvaturas extrañas y preserva la forma esencial.
Ilustración
Uso
Existen dos métodos de simplificación:
- El método Retener puntos críticos (POINT_REMOVE en Python) es el más rápido de los dos procesos. Quita los vértices redundantes. Utilice este método para comprimir los datos o para obtener una simplificación mayor o más gruesa, especialmente cuando los datos son conocidos. La angulosidad (esquinas nítidas) del polígono que se cree aumentará considerablemente a medida que aumente la tolerancia y, por lo tanto, es posible que el polígono se torne menos agradable estéticamente.
- El método Retener curvaturas críticas (BEND_SIMPLIFY en Python) es más lento, pero generalmente produce resultados más fieles al original y más agradables estéticamente. Opera con quitando de las curvaturas insignificantes a lo largo de los polígonos. Utilice este método para obtener una simplificación menor o más 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 (NO_CHECK en Python): el resultado generado por el proceso de simplificación no comprobará 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.
- Marcar errores (FLAG_ERRORS en Python): se comprobarán los errores topológicos en el resultado del proceso de simplificación, 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 (RESOLVE_ERRORS en Python): repara errores topológicos introducidos por el proceso de simplificación. El tiempo de procesamiento es 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.
- Esta tolerancia reducida es el cincuenta por ciento de la utilizada anteriormente y se utiliza 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 poligonal contiene la misma cantidad de polígonos que en la entrada y tiene 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.
- Es posible que un polígono pequeño que se encuentre cerca de un polígono más grande termine dentro del polígono grande debido a un valor de Tolerancia de simplificación relativamente alto. El programa no detectará este error de relación espacial.
- 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 la casilla de verificación Mantener las líneas colapsadas como puntos se encuentra activada. Si un polígono de entrada contiene varias partes y una de ellas se transforma en un punto colapsado, el punto 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 se aplica solamente cuando se especifican las opciones NO_CHECK o FLAG_ERRORS.
| Boolean |
Ejemplo 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 for Desktop Basic: No
- ArcGIS for Desktop Standard: Sí
- ArcGIS for Desktop Advanced: Sí