Suavizar polígono (Cartografía)
Resumen
Suaviza ángulos cerrados en contornos de polígonos para mejorar la calidad estética o cartográfica.
Ilustración
Uso
-
Se pueden elegir dos métodos de suavizado:
- El método PAEK (Aproximación polinomial con núcleo exponencial) suaviza polígonos basado en una tolerancia de suavizado. Cada polígono suavizado puede tener más vértices que el polígono de origen. El parámetro Tolerancia del suavizado controla la longitud de una ruta "en movimiento" que se utiliza para calcular los nuevos vértices. Cuanto menor sea la longitud, más detalles se preservarán y mayor será el tiempo de procesamiento.
- El método BEZIER_INTERPOLATION suaviza polígonos sin utilizar una tolerancia al crear curvas de Bézier que coinciden con las líneas de entrada. Si la salida es un shapefile, las curvas de Bézier serán aproximadas, debido a que las curvas de Bézier no se pueden almacenar en shapefiles.
-
El suavizado puede introducir errores topológicos como cruces de contorno de polígono. Utilice la opción FLAG_ERRORS en el parámetro Manejar errores topológicos para identificar estos errores. Se agregarán dos campos (InPoly_FID y SmoPlyFlag) para contener los Id de entidad de entrada y los errores topológicos. Los valores de 1 en el campo SmoPlyFlag indican un error topológico; 0 (cero) indica que no hay errores. El campo InPoly_FID vincula los polígonos de salida con los polígonos de entrada. La opción FLAG_ERRORS no se puede utilizar dentro de una sesión de edición.
-
Se puede crear una geometría no válida (cerrada) durante el proceso de suavizado, y también se puede reparar pero no se puede mejorar. Por ejemplo, si un polígono se cruza a sí mismo, se convertirá en un polígono multiparte pero seguirá apareciendo como cruzándose a sí mismo.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_features |
Las entidades poligonales que se suavizarán. | Feature Layer |
out_feature_class |
La clase de entidad poligonal de salida que se creará. | Feature Class |
algorithm |
Especifica el algoritmo de suavizado.
| String |
tolerance |
Establece una tolerancia utilizada por el algoritmo PAEK. Se debe especificar una tolerancia, la cual debe ser mayor que cero. Puede especificar la unidad que prefiera; el valor predeterminado es la unidad de la entidad. Debe introducir 0 como marcador de posición cuando utilice el algoritmo de suavizado BEZIER_INTERPOLATION. | Linear unit |
endpoint_option (Opcional) |
Especifica si se preservarán los extremos para anillos de polígonos aislados. Esta opción funciona sólo con el algoritmo PAEK.
| Boolean |
error_option (Opcional) |
Especifica cómo se manejarán los errores topológicos (posiblemente introducidos en el proceso, como el cruce o superposición de línea).
| String |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta SmoothPolygon en el modo inmediato.
import arcpy from arcpy import env import arcpy.cartography as CA env.workspace = "C:/data" CA.SmoothPolygon("soils.shp", "C:/output/output.gdb/smoothed_soils", "PAEK", 100)
La siguiente secuencia de comandos independiente muestra cómo utilizar la herramienta SmoothPolygon.
# Name: SmoothPolygon_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.cartography as CA import arcpy.management as DM # 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")