¿Existe una función o complemento QGIS para dibujar una línea ondulada?
He usado Spline Tool para dibujar manualmente algunas ondas, pero lleva mucho tiempo. Si es posible, me gustaría dibujar algo como:
Inkscape Function Plotter
( sin(x)
curva).
qgis
line
visualisation
linestring
Kazuhito
fuente
fuente
Respuestas:
Propongo una solución usando PyQGIS. Debería funcionar tanto para las capas Linestring como MultiLineString.
Esta solución se basa en la creación de anillos semicirculares, por lo que debe establecer un valor para el diámetro (es decir, la
step
variable en el código a continuación). El paso que elija no será el paso real utilizado porque se ajusta en función de la longitud de la línea (pero sería muy similar al valor establecido inicialmente). Debe hacer algunos intentos antes de encontrar el mejor valor para lastep
variable.El código también requiere un segundo parámetro (opcional) (llamado
crv_angle
), que ayuda a disminuir o aumentar la curvatura de los anillos (realicé algunas pruebas para ello, por lo que sugiero dejar 45 grados como ángulo predeterminado ya que conduciría a una circular real anillos).Solo necesita ejecutar este código desde la consola de Python:
y creará una nueva capa de memoria de línea con el resultado esperado:
fuente
Respuesta corta: puede obtenerlo usando un SVG personalizado. Ver al final de esta publicación para uno.
Respuesta larga:
Creo que es mejor representarlo que modificar la geometría de la línea. Si desea mover una arista o realizar otras acciones en la geometría, sería una pesadilla administrar si las oscilaciones son parte de la geometría en lugar de solo una representación de una línea recta.
Puedes jugar con la línea de marcador de estilo. Hay una manera de acercarse fácilmente a lo que necesita, y con un poco más de esfuerzo es posible obtenerlo exactamente.
Para obtener esto, debe diseñar la línea con dos líneas de marcador. Cada línea de marcador está hecha de un marcador simple, el semicírculo. El primero se gira 180. Ambos están configurados en transparente.
En la línea de Marcador, le indica a uno de ellos que se desplace para que los dos símbolos no se dibujen uno frente al otro, sino uno al lado del otro. Si usa offest = 1/2 * tamaño de intervalo, la salida será una curva sinusoidal. Te sugiero que juegues con el tamaño del intervalo, el desplazamiento y los tamaños de los símbolos.
La principal limitación con este enfoque es la línea de diámetro de los semicírculos, que se suma a la línea original. Si su fondo es blanco (o cualquier color normal), puede agregar una tercera línea simple usando el color de fondo.
** EDITAR **
Otra opción para deshacerse de la línea central es crear un nuevo símbolo SVG. Modifiqué la media curva, solo viviendo la parte redondeada. Funciona, aunque una 1/2 elipse podría ser más atractiva. La captura de pantalla se realizó con el tamaño de símbolo 10, intervalo 4, desplazamiento 2.
guarde el código a continuación en un archivo half_circle_line.svg y asegúrese de que la ruta al svg esté establecida en
QGIS // Settings / Options / System / SVG Paths
fuente
Pen style
a No Pen :)