36 votos

¿Existe una forma de renderizar líneas con curvas suaves (bezier) en QGIS?

Estoy pasando de crear mapas con Illustrator a hacerlos con QGIS y datos reales. Una de las cosas que no he podido recrear en QGIS son las líneas curvas suaves que puedo conseguir en Illustrator. No me refiero a los estilos de unión y tapa, sino a cómo se renderiza una línea completa.

Estoy buscando una respuesta que no incluya exportar como SVG a Illustrator y terminar el mapa allí.

Además, soy consciente de que podrían considerarse una representación inexacta pero, en su mayor parte, estos mapas sirven para que los ciclistas se hagan una idea de dónde están y no tienen por qué ser una representación exacta.

He aquí un ejemplo de lo que quiero decir: enter image description here

24voto

Jauder Ho Puntos 3172

Comprueba el plugin Generalizer, debería hacer lo que quieres. El plugin tiene opciones de suavizado que funcionan bastante bien.

No cambia la forma en que se renderizan las líneas, sino que crea un nuevo archivo shape con suavizado (o simplificación/generalización) aplicado.

enter image description here

enter image description here

16voto

DavidWhitney Puntos 1957

Utilizando QGIS + el plugin de GRASS:

Añade la barra de herramientas Grass desde la ventana "Gestionar complementos". add grass tools plugin to qgis

Sus líneas tendrán que ser un vector de hierba, así que conviértalas en un mapset nuevo o existente de GRASS.

En la barra de herramientas de GRASS, seleccione Herramientas de GRASS... enter image description here

Busque el módulo: v.generalize ( Tutorial WIKI aquí )

A continuación, puede elegir varios algoritmos de generalización diferentes: GRASS tool v.generalize algorithms selection

Observe los algoritmos: Chaiken, Hermite o incluso Sliding Average. También hay varios más.

Las diferencias pueden verse en las imágenes de la wiki: v.generalize simplify differences example

de la Wiki: "Tenga en cuenta que una diferencia entre "Chaiken" y "Hermite" es que las líneas producidas por "Chaiken" "inscriben" las líneas originales mientras que las líneas "Hermite" "circunscriben" las líneas originales como puede verse en la imagen [arriba]. (La línea negra es la línea original, la verde es "Chaiken" y la azul es "Hermite")

Usando uDig + jgrasstools o hierba:

Si tiene dificultades para obtener los resultados deseados de v.generalize de GRASS, pruebe la última versión de uDig con jgrasstools . También puedes coger el bote de hierba del mismo sitio que jgrasstools.

Una vez que uDig esté instalado y en funcionamiento, active el Caja de herramientas espacial : Ventana > Mostrar vista > Otros... enable spatial toolbox in uDig

Desacople la barra de herramientas para facilitar la lectura (haga clic con el botón derecho en la pestaña Caja de herramientas espacial > Desacople...): detaching spatial toolbox in uDig

Cargue los módulos necesarios de jgrasstools y grass (opcional): loading jgrasstools/grass into udig

No te olvides de configurar los parámetros de grass (apunta al ejecutable de grass o al archivo bat en windows, o al comando grass en linux, es decir, /usr/bin/grass) si también cargas el archivo jar de grass: setting grass parameters in uDig

¡Por fin! Usando las herramientas de jgrasstools (no grass) puedes generalizar la línea fácilmente con Procesamiento vectorial > LineSmootherJaiTools Vector Processing to LineSmootherJaiTools in uDig

Asegúrese de configurar correctamente la entrada y la salida (sólo funciona con Shapefiles, por lo que no es necesario convertir los datos en conjuntos de mapas/localizaciones para la hierba) : input and output settings for Spatial Toolbox in uDig

Una vez que haya configurado la tolerancia de suavizado (0,0 - 1,0) y la entrada/salida, pulse el botón Reproducir de la ventana Caja de herramientas espacial (arriba a la derecha): play module in Spatial Toolbox for uDig

Resultados:
uDig simplify jgrasstools results...

4voto

Anton8000 Puntos 165

Puede utilizar el generador de geometría para suavizar sin cambiar los datos originales:

enter image description here

2voto

Shreyas Puntos 733

Hay un Suave geoalghoritm bajo Processing Toolbox -> Vector geometry -> Smooth .

smooth

Este algoritmo suaviza las geometrías en una capa de líneas o polígonos. En crea una nueva capa con las mismas características que las de la capa de entrada, pero con geometrías que contienen un mayor número de vértices y esquinas en las geometrías suavizadas.

El parámetro iteraciones dicta cuántas iteraciones de suavizado se aplicarán a cada geometría. Un mayor número de iteraciones resulta en geometrías más suaves con el coste de un mayor número de nodos en las geometrías.

El parámetro de desfase controla el grado de "ajuste" de las geometrías suavizadas con respecto a las geometrías originales. Los valores más pequeños dan como resultado un más ajustado, y los valores más grandes crearán un ajuste más flojo.

El parámetro de ángulo máximo puede utilizarse para evitar el suavizado de nodos con ángulos grandes. Cualquier nodo en el que el ángulo de los segmentos a cualquier lado es mayor que esto no será suavizado. Por ejemplo el ángulo máximo a 90 grados o menos preservaría los ángulos rectos en la geometría. ángulos rectos en la geometría.

Si las geometrías de entrada contienen valores Z o M, éstos también se suavizarán y la geometría de salida mantendrá la misma dimensionalidad que la geometría de entrada.

1voto

Max Puntos 195

Hay otra manera, posiblemente esta manera sólo desde la versión QGIS 2.0:

En Processing>Toolbox puede acceder a las herramientas GRASS y SAGA. Para el suavizado, se encuentra v.generalize, pero también la simplificación de líneas de SAGA. Estas herramientas funcionan con archivos shapefiles normales, por lo que no se necesita un vector de hierba:

enter image description here

El modo por lotes aún no está bien resuelto (haga clic con el botón derecho en el menú de la derecha y elija "Ejecutar como lote", ya que hay que elegir cada archivo manualmente. El plug-in generalizador mencionado más arriba permite elegir muchos archivos de forma más sencilla, pero por ahora sólo funciona si no se especifica un archivo para guardar, de lo contrario el plug-in se bloquea.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X