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 Interpolación de Bézier (BEZIER_INTERPOLATION en Python) 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 Marcar errores (FLAG_ERRORS en Python) en el parámetro Manejar errores topológicos para identificar estos errores. Se agregarán dos campos (InPoly_FID y SmoPlyFlag), que contendrán 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 sus polígonos de entrada correspondientes. La opción Marcar errores 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
SmoothPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option})
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 |
Muestra de código
Ejemplo de SmoothPolygon (ventana de Python)
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta SmoothPolygon en el modo inmediato.
import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothPolygon("soils.shp", "C:/output/output.gdb/smoothed_soils", "PAEK", 100)
Ejemplo 2 de SmoothPolygon (secuencia de comandos independiente)
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
# Import system modules
import arcpy
import arcpy.cartography as CA
import arcpy.management as DM
# 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, "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í