Suavizar línea (Cartografía)
Resumen
Suaviza ángulos cerrados en líneas 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 las líneas en función de una tolerancia de suavizado. Cada línea suavizada puede tener más vértices que la línea 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 líneas 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 línea. Utilice la opción FLAG_ERRORS en el parámetro Manejar errores topológicos para identificar estos errores. Se agregarán dos campos (InLine_FID y SmoLnFlag) para contener los Id de entidad de entrada y los errores topológicos. El valor 1 en el campo SmoLnFlag indica un error topológico; 0 (cero) indica que no hay ningún error. El campo InLineFID vincula las líneas de salida a las líneas 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 una línea se cruza a sí misma, se convertirá en una línea multiparte pero seguirá apareciendo como cruzándose a sí misma.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_features |
Las entidades lineales que se suavizarán. | Feature Layer |
out_feature_class |
La clase de entidad 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 elegir 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 preservan los extremos para líneas cerradas. 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, como el cruce de línea).
| String |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta SmoothLine en el modo inmediato.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SmoothLine("contours.shp", "C:/output/output.gdb/smoothed_contours", "PAEK", 100)
La siguiente secuencia de comandos independiente muestra cómo utilizar la herramienta SmoothLine.
# Name: SmoothLine_Example2.py
# Description: Simplify and then Smooth coastlines
# Import system modules
import arcpy
from arcpy import env
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inCoastlineFeatures = "coastlines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/coastlines_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/coastlines_smoothed"
# Simplify coastlines.
CA.SimplifyLine(inCoastlineFeatures, simplifiedFeatures, "POINT_REMOVE", 50, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth coastlines.
CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", "FLAG_ERRORS")