Resumen
Simplifica contornos de polígonos con la eliminación de vértices relativamente extraños y preserva la forma esencial.
Más información sobre el funcionamiento de Simplificar línea y Simplificar polígono
Uso
Esta herramienta emplea distintos algoritmos de simplificación para diferentes finalidades:
- El algoritmo POINT_REMOVE funciona identificando y eliminando vértices relativamente redundantes para simplificar los datos a fin de visualizarlos a escalas más pequeñas. Es el algoritmo de simplificación más rápido de esta herramienta. Este algoritmo se suele utilizar para la compresión de datos o para una simplificación más gruesa. La angulosidad del contorno de polígono resultante se incrementa considerablemente a medida que aumenta la tolerancia. Este algoritmo se basa en el algoritmo de Douglas-Peucker: Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer 10(2), 112–122 (1973).
- El algoritmo BEND_SIMPLIFY funciona identificando y eliminando curvaturas relativamente insignificantes para simplificar los datos a fin de visualizarlos a escalas más pequeñas. Suele ser más fiel a la geometría de entrada que el algoritmo POINT_REMOVE, pero puede tardar más tiempo en procesarse. Es más lento, pero generalmente produce resultados más fieles a las entidades originales. Funciona eliminando curvaturas insignificantes a lo largo de los contornos de los polígonos. Este algoritmo se basa en el algoritmo definido en Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998).
- El algoritmo WEIGHTED_AREA funciona identificando primero triángulos de un área efectiva para cada vértice. A continuación, estos triángulos se ponderan mediante un conjunto de métricas para comparar la lisura, el sesgo y la convexidad de cada área. Las áreas ponderadas determinan la eliminación de sus vértices correspondientes para simplificar el contorno del polígono manteniendo a la vez la mayor cantidad de carácter posible. Este algoritmo se basa en el algoritmo definido en Zhou, Sheng and Jones, Christopher B., (2005) Shape-Aware Line Generalisation with Weighted Effective Area" in Fisher, Peter F. (Ed.) Developments in Spatial Handling 11th International Symposium on Spatial Handling, 369–80.
El valor del parámetro Tolerancia de simplificación determina el grado de simplificación. Cuanto más grande sea la tolerancia, más gruesa será la geometría resultante. Con tolerancias más pequeñas se genera una geometría más fiel a la entrada. MinSimpTol y MaxSimpTol se agregan a la salida para almacenar la tolerancia que se utilizó.
- Para el algoritmo POINT_REMOVE, la tolerancia será la distancia perpendicular máxima permitida entre cada vértice y la nueva línea creada.
- Para el algoritmo BEND_SIMPLIFY, la tolerancia será el diámetro de un círculo que se aproxima a una curvatura significativa.
- Para el algoritmo WEIGHTED_AREA, el cuadrado de la tolerancia será el área de un triángulo significativo definido mediante tres vértices adyacentes.
Todo polígono que sea más pequeño que el valor del parámetro Área mínima se quitará de la clase de entidad de salida. Para un grupo de polígonos adyacentes que comparten bordes, el área mínima se aplica al área total del grupo. Utilice el parámetro Mantener puntos contraídos para mantener un registro de los polígonos eliminados como entidades de puntos.
Los polígonos multiparte se simplifican como partes individuales.
Utilice el parámetro Mantener puntos contraídos (collapsed_point_option en Python) para crear una clase de entidad de puntos de salida para almacenar los puntos que representan los polígonos que se eliminaron porque estaban por debajo del área mínima. Se deriva la salida de puntos; utilizará el mismo nombre y ubicación que el parámetro Clase de entidad de salida (out_feature_class en Python) pero con el sufijo _Pnt. La clase de entidad poligonal de salida contiene todos los campos presentes en la clase de entidad de entrada. La clase de entidad de punto de salida no contiene ninguno de estos campos.
La clase de entidad poligonal de salida será correcta desde el punto de vista topológico. Todos los errores topológicos de los datos de entrada se marcarán en la clase de entidad poligonal de salida. La clase de entidad de salida incluye dos campos adicionales: InPoly_FID y SimPgnFlag que contienen los Id. de entidad de entrada y los errores topológicos de la entrada, respectivamente. Un valor de SimPgnFlag de 1 indica que existe un error topológico; 0 (cero) indica que no hay errores.
Utilice el parámetro Capas de barrera de entrada para identificar las entidades que los polígonos simplificados no deben cruzar. Las entidades de barrera pueden ser puntos, líneas o polígonos.
El procesamiento de datasets grandes podría superar los límites de memoria. En este caso, considere el procesamiento de los datos de entrada por partición al identificar una clase de entidad poligonal relevante en la configuración de entorno Particiones cartográficas. Las partes de los datos definidos por los límites de partición se procesarán en secuencia. La clase de entidad de salida resultante será sin fisuras y coherente en los bordes de la partición. Consulte Generalizar datasets grandes usando particiones para obtener más información.
Sintaxis
SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option}, {in_barriers})
Parámetro | Explicación | Tipo de datos |
in_features | Entidades poligonales de entrada que se van a simplificar. | Feature Layer |
out_feature_class | La clase de entidad poligonal de salida simplificada. Contiene todos los campos incluidos en la clase de entidad de entrada. La clase de entidad poligonal de salida será correcta desde el punto de vista topológico. La herramienta no introduce errores topológicos, sino que los errores topológicos de los datos de entrada se marcan en la clase de entidad poligonal de salida. La clase de entidad de salida incluye dos campos adicionales: InPoly_FID y SimPgnFlag que contienen los Id. de entidad de entrada y los errores topológicos de la entrada, respectivamente. Un valor de SimPgnFlag de 1 indica que existe un error topológico de la entrada; 0 (cero) indica que no hay errores de la entrada. | Feature Class |
algorithm | Especifica el algoritmo de simplificación de polígono.
| String |
tolerance | La tolerancia determina el grado de simplificación. Puede elegir la unidad que prefiera; de lo contrario, se utilizarán las unidades de la entrada.MinSimpTol y MaxSimpTol se agregan a la salida para almacenar la tolerancia que se utilizó durante el procesamiento.
| Linear Unit |
minimum_area (Opcional) | Establece el área mínima para un polígono 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; de lo contrario, se utilizarán las unidades de la entrada. | Areal Unit |
error_option (Opcional) | String | |
collapsed_point_option (Opcional) | Indica si se va a crear una clase de entidad de puntos de salida para almacenar los centros de cualquier polígono eliminado porque es más pequeño que el valor del parámetro minimum_area. Se deriva la salida de puntos; se le asignará el mismo nombre que la clase de entidad poligonal de salida que especifique en el parámetro out_feature_class pero con el sufijo _Pnt y se ubicará en la misma carpeta.
| Boolean |
in_barriers [in_barriers,...] (Opcional) | Entradas que contienen las entidades que van a actuar como barreras para la simplificación. Los polígonos simplificados resultantes no tocarán ni cruzarán las entidades de barrera. Por ejemplo, al simplificar áreas boscosas, los polígonos forestales simplificados resultantes no cruzarán las entidades de carreteras definidas como barreras. | Feature Layer |
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
import arcpy.cartography as CA
arcpy.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
# Import system modules
import arcpy
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
arcpy.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, #, "KEEP_COLLAPSED_POINTS")
# 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í
Temas relacionados
- Una vista general de las herramientas de Generalización
- Comprender la resolución de conflictos y la generalización
- Automatizar los flujos de trabajo de resolución de conflictos y generalización con geoprocesamiento
- Simplificar línea
- Simplificar edificio
- Cómo funciona Simplificar línea y Simplificar polígono