¿Hay alguna manera de representar líneas con curvas suaves (bezier) en QGIS?


33

Estoy pasando de crear mapas con Illustrator a crearlos con QGIS y datos reales. Una de las cosas que no he podido recrear en QGIS son las líneas curvas suaves que puedo obtener en Illustrator. No estoy hablando de estilos de unión y cap, sino de cómo se representa una línea completa.

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

Además, me doy cuenta de que podrían considerarse una representación inexacta, pero, en su mayor parte, estos mapas son para darles a los pasajeros una idea de dónde están y no necesariamente tienen que ser una representación exacta.

Aquí hay un ejemplo de lo que quiero decir: ingrese la descripción de la imagen aquí


2
¿Cómo se almacenan sus datos? La mayoría de los formatos de datos (por ejemplo, shapefile) no permiten arcos. Creo que algunas bases de datos ahora sí.
Darren Cope

Respuestas:


24

Echa un vistazo al complemento Generalizer, debe hacer lo que quieras. El complemento tiene opciones de suavizado que funcionan bastante bien.

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

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


No puedo encontrar este complemento para QGIS 1.7.3 aunque tengo repositorios de terceros habilitados. ¿Puedes mostrar cómo habilitarlo / encontrarlo? Parece interesante y directo.
SaultDon

3
Extraño. Debe estar en el instalador del complemento ya que proviene del repositorio principal del complemento QGIS.
Nathan W

3
Tienes razón, pero desde el instalador de complementos de Python tuve que ir a la pestaña de opciones y cambiar "Complementos permitidos" a: "Mostrar todos los complementos, incluso aquellos marcados como experimentales".
SaultDon

Terminé jugando con este complemento un poco esta noche y en realidad funcionó mejor para mí, ya que no tuve que usar una capa GRASS y podría convertir mi archivo de forma actual.
Brian Kelly

Tuve que hacerlo en dos pasos para mi digitalización muy detallada pero irregular: primero simplificar (por ejemplo, el algoritmo Lang) y luego suavizar. Trabajó un placer.
un ben diferente

16

Usando el complemento QGIS + GRASS:

Agregue la barra de herramientas Grass desde la ventana "Administrar complementos". agregue el complemento de herramientas de hierba a qgis

Sus líneas deberán ser un vector de hierba, por lo tanto, conviértalas en un conjunto de mapas GRASS nuevo o existente.

En la barra de herramientas de GRASS, seleccione Herramientas de GRASS ... ingrese la descripción de la imagen aquí

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

Luego puede elegir varios algoritmos de generalización diferentes: Herramienta GRASS v.generalizar selección de algoritmos

Tenga en cuenta los algoritmos: Chaiken, Hermite o incluso Sliding Average. ¡Hay varios otros también!

Las diferencias se pueden ver en las imágenes wiki: v.generalizar simplificar diferencias ejemplo

de 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 se puede ver en el imagen [arriba]. (La línea negra es la línea original, la línea verde es "Chaiken" y la azul es "Hermite")


Usando uDig + jgrasstools o hierba:

Si tiene dificultades para obtener resultados deseables de v.generalize de GRASS, pruebe la última versión de uDig con jgrasstools . También puedes agarrar la jarra de hierba del mismo lugar que jgrasstools.

Una vez que uDig esté instalado y en funcionamiento, habilite Spatial Toolbox : Window> Show View> Other ... habilitar caja de herramientas espacial en uDig

Desenganche la barra de herramientas para facilitar la lectura (haga clic con el botón derecho en la pestaña Caja de herramientas espacial> Separar ...): separar caja de herramientas espacial en uDig

Cargue los módulos jgrasstools y grass (opcionales) necesarios: cargar jgrasstools / grass en udig

No olvide establecer sus parámetros de hierba (señale el archivo ejecutable de hierba o el archivo bat en Windows, o el comando de hierba en Linux, es decir, / usr / bin / grass) si carga también el archivo jar de hierba: establecer parámetros de hierba en uDig

¡Finalmente! Usando las herramientas de jgrasstools (no hierba) puede generalizar la línea fácilmente con Vector Processing> LineSmootherJaiTools Procesamiento de vectores a LineSmootherJaiTools en uDig

Asegúrese de configurar la entrada y la salida correctamente (solo funciona en Shapefiles, por lo que no es necesario convertir sus datos en mapas / ubicaciones para el césped) : configuración de entrada y salida para Spatial Toolbox en uDig

Una vez que haya terminado de configurar la tolerancia de suavizado (0.0 - 1.0) y la entrada / salida, presione el botón Reproducir en la ventana de Spatial Toolbox (arriba a la derecha): módulo de reproducción en Spatial Toolbox para uDig

Resultados:
uDig simplifica los resultados de jgrasstools ...


¿Altera esto los datos originales o los filtra antes de que QGIS los procese?
Brian Kelly

Ah, eso se responde aquí: "El suavizado (línea) es un proceso" inverso "que toma como entrada una línea y produce una aproximación más suave del original. En algunos casos, esto se logra insertando nuevos vértices en la línea original, y puede totalizar hasta el 4000% del número de vértices en el original. En tal caso, siempre es una buena idea simplificar la línea después de suavizar ". de grass.osgeo.org/grass64/manuals/html64_user/v.generalize.html
Brian Kelly el

Entonces parece que esto es algo que probablemente aplicarías una vez que hayas confirmado que tus líneas son correctas y no necesitas más edición (a menos que desees ajustar todos los vectores adicionales y luego suavizarlos nuevamente)
Brian Kelly

@spline Sí, debido a que tiene que trabajar con un "conjunto de datos de hierba" que es esencialmente - NO un archivo de forma, querrá asegurarse de que el archivo de forma original esté completo. Simplificar la línea para eliminar vértices adicionales también es una opción dependiendo de qué tan larga sea la línea y la cantidad de vértices presentes en la curva de Bezier .
SaultDon

Oh, mi palabra, la hierba no tiene sentido para mí ... nombres de mapas, nombres de ubicaciones, dbase, PERMANENTES ... Traté de "descubrir" cómo usar esta respuesta (sin admitir conocimiento previo de hierba), y fallé miserablemente. Los archivos parecen ir donde menos lo esperas (aunque supongo que no son archivos), no pude elegir mi capa convertida en el cuadro de diálogo generalizar después de finalmente descubrir cómo seleccionar un mapa (no es que sepa lo que se entiende por un mapa) ... pesadilla. Mira los productos si pudiera resolverlo todo :)
un ben diferente

1

Hay otra forma, posiblemente de esta manera solo desde la versión QGIS 2.0:

En Procesamiento> Caja de herramientas puede acceder a las herramientas GRASS y SAGA. Para suavizar, allí encontrará v.generalize, pero también simplificación de línea de SAGA. Estas herramientas funcionan en archivos de forma regulares, por lo que no se necesita un vector de hierba:

ingrese la descripción de la imagen aquí

El modo de lote aún no está tan bien resuelto (haga clic con el botón derecho en el menú de la derecha y elija "Ejecutar como lote", ya que uno tiene que elegir cada archivo manualmente. El complemento generalizador mencionado más arriba le permite elegir muchos archivos de manera más simple , pero esto solo funciona en este momento si uno no especifica un archivo para guardar, de lo contrario el complemento falla.


1

Hay un algoritmo de geometría suave debajo Processing Toolbox -> QGis geoalghoritms -> Vector.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.