Resumen
Suaviza ángulos cerrados en líneas para mejorar la calidad estética o cartográfica.
Ilustración
Uso
Existen dos métodos de suavizado:
- El método Aproximación polinómica con núcleo exponencial (PAEK) (PAEK en Python) 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 Interpolación de Bézier (BEZIER_INTERPOLATION en Python) suaviza líneas sin utilizar una tolerancia al crear curvas de Bézier aproximadas que coinciden con las líneas de entrada.
Utilice el parámetro Capas de barrera de entrada para identificar las entidades que las líneas suavizadas 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 estos casos, considere la posibilidad de procesar los datos de entrada por partición identificando una clase de entidad poligonal relevante en la configuración de entornoParticiones cartográficas. Las partes de los datos definidos por los límites de partición se procesarán en secuencia. La clase de entidad 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.
La clase de entidad de línea 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 de línea de salida. La clase de entidad de salida incluye dos campos adicionales: InLine_FID y SmoLnFlag, que contienen los Id. de entidad de entrada y los errores topológicos de la entrada, respectivamente. Un valor de SmoLnFlag de 1 indica que existe un error topológico; un valor de 0 (cero) indica que no hay errores.
Sintaxis
arcpy.cartography.SmoothLine(in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
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 | 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 Interpolación de Bézier. | Linear Unit |
endpoint_option (Opcional) | Este es un parámetro heredado que ya no se utiliza. Antes se utilizaba para especificar si se conservaban los extremos de líneas cerradas. Este parámetro sigue incluido en la sintaxis de la herramienta a efectos de compatibilidad con los scripts y modelos, pero está oculto en el cuadro de diálogo de la herramienta. Especifica si se conservarán los extremos de 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 en el proceso, como el cruce o superposición de línea).
| String |
in_barriers [in_barriers,...] (Opcional) | Entradas que contienen las entidades que actuarán como barreras para el suavizado. Las líneas suavizadas resultantes no tocarán ni cruzarán las entidades de barrera. Por ejemplo, al suavizar líneas de curvas de nivel, las entidades de altura de punto introducidas como barreras garantizan que las líneas de curvas de nivel suavizadas no se suavizarán a lo largo de estos puntos. La salida no infringirá la elevación indicada mediante alturas de punto medidas. | Feature Layer |
Muestra de código
Ejemplo de SmoothLine (ventana de Python)
La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función SmoothLine de modo inmediato.
import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothLine("contours.shp", "C:/output/output.gdb/smoothed_contours", "PAEK", 100)
Ejemplo 2 de SmoothLine (script independiente)
La siguiente secuencia de comandos independiente muestra cómo utilizar la función SmoothLine.
# Name: SmoothLine_Example2.py
# Description: Simplify and then Smooth coastlines
# Import system modules
import arcpy
import arcpy.cartography as CA
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inCoastlineFeatures = "coastlines"
barriers = "C:/data/Portland.gdb/Structures/buildings"
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", barriers)
# Smooth coastlines.
CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "",
"FLAG_ERRORS", barriers)
Entornos
Información de licenciamiento
- Basic: No
- Standard: Sí
- Advanced: Sí