Después de consultar expertos en la materia, programadores de diversas áreas y profesores dimos con la solución al dilema y la dejamos plasmada en este post.
Solución:
Aunque no es una herramienta GIS, esto es algo para lo que podría usar Gephi. Especialmente si quieres que se parezca a tu ilustración. Líneas rectas, no hay problema. Las curvas son más desafiantes.
Gephi es para análisis y trazado de redes. Por lo general, se usa para cosas como el análisis de redes sociales (por ejemplo, analizar las redes de Facebook o Twitter)
Este ejemplo muestra una captura de pantalla: esta es una red de carreteras, tomada de OpenStreetMap. Los nodos están coloreados por Centralidad.
Si instala el complemento GeoLayout para Gephi, puede obligar a los nodos a adherirse a (lon, lat) u otras coordenadas proyectadas, lo que lo hace adecuado para las visualizaciones geográficas.
En tu caso,
- tus nodos son ubicaciones, y
- los pesos de borde son el tráfico entre esas ubicaciones
Los bordes pueden ser unidireccionales o bidireccionales.
La forma más fácil es crear un par de tablas CSV en QGIS (o programáticamente). Esto probablemente será más fácil de hacer si tiene sus datos en una base de datos en lugar de un archivo de forma.
Crear una tabla de nodos
- asigne una identificación única a cada nodo (por ejemplo, Town_A)
- agregue valores X e Y junto con el nombre del nodo (y exporte a CSV usando Geometry AS_XY)
Crear una tabla de borde
Agregue otra tabla que vincule el nodo A con el nodo B junto con el valor de ponderación para formar su tabla de bordes. Necesitaría una fila para cada respuesta, con un recuento de la cantidad de veces que alguien hace un viaje de A a B, por ejemplo
From, To, Count
Town_A, Volcano_A, 1
Town_A, Town_B, 1
Beach_A, Beach_B, 1
.. etc..
Beach_B, Town_A, 2
Beach_B, Beach_A, 2
Luego impórtelos a Gephi como CSV
En el lado del análisis, también puede obtener información adicional sobre centralidad, intermediación, agrupamiento y otras métricas.
(Puede obtener algunos de estos de GRASS; sin embargo, eso no aborda la representación).
Para una solución QGIS pura, consulte https://anitagraser.com/2019/05/04/flow-maps-in-qgis-no-plugins-needed/
los key es crear una capa virtual: Capas virtuales: Capa | Añadir capa | Agregar/Editar capa virtual
SELECT StartID, DestID, Weight,
make_line(a.geometry, b.geometry)
FROM edges
JOIN nodes a ON edges.StartID = a.ID
JOIN nodes b ON edges.DestID = b.ID
WHERE a.ID != b.ID
Las líneas de flujo resultantes se pueden diseñar con el renderizador de flecha incorporado:
Nos puedes sustentar nuestra función escribiendo un comentario y valorándolo te estamos eternamente agradecidos.