Estoy tratando de recrear una trama Origen-Destino como esta:
He logrado combinar los datos en una tabla MSOA a LAD y puedo dibujar un mapa como este para uno de los MSOA de origen.
Lo que una vez que permite las distancias (ahora ridículas) que las personas en el Peak District viajan al trabajo está cerca.
Pero me gusta bastante el efecto que el autor ha logrado al "extender" las líneas. Obviamente, con flujos de 522 y 371, no puedo ir por una sola línea por viajero, pero sería bueno producir un arco proporcional de líneas para mostrar la cantidad de personas que hacen el viaje.
Pensé que sería capaz de usar el Geometry Generator, pero sin una construcción de bucle, parece que no puedo avanzar.
qgis-3
geometry-generator
Ian Turton
fuente
fuente
Respuestas:
¡Un gran desafío!
Esta respuesta utiliza principalmente el generador de geometría y se escribió en QGIS 3.2. QGIS se bloqueó (¡sin que yo haya guardado!) Justo después de construir las líneas por primera vez y casi me doy por vencido, pero la lista de expresiones utilizada recientemente salvó el día, otra ventaja de usar el generador de Geometría
Comencé con dos conjuntos de puntos, una fuente y tres destinos. Los destinos están etiquetados con los recuentos:
Luego generé líneas que conectan el punto de origen a todos los destinos usando una capa virtual usando el siguiente código:
Luego utilicé la siguiente expresión del generador de Geometría para diseñar las líneas:
Esto toma cada línea y aplica los siguientes pasos:
tapered_buffer
para comprender por qué esto es necesario)Al escribir los pasos, me doy cuenta de que la conversión hacia y desde una matriz no es necesaria, y toda la manipulación de WKT se puede hacer con expresiones regulares. Esta expresión está debajo, y si la
tapered_array
función puede ser reemplazada por otra diferente, esto también podría usarse en QGIS 2.18.fuente
Tu pregunta me hizo curioso.
Esta solución solo funciona para QGIS 2.x en la consola de Python
Como mencioné en mi comentario aquí, es mi idea crear el arco de líneas con Python.
Tengo dos capas de puntos:
yo. Uno que tiene la capital (id, capital)
ii. Uno que tiene las ciudades (id, ciudad, viajeros)
La cantidad de viajeros se "separa en billetes" y estas serán las líneas que construirán el arco. Entonces, 371 viajeros son una combinación de 3x100, 1x50, 2x10 y 1x1 y en total 7 billetes. Posteriormente, las líneas se diseñan con un estilo basado en reglas.
Aquí está el código:
El resultado podría verse así:
ACTUALIZACIÓN: distinción hombre / mujer
Resultados en 4 capas de memoria.
El resultado podría verse así:
Una cosa que no es ideal desde el punto de vista cartográfico:
El tamaño de un arco de línea puede ser irritante a primera vista, en la forma en que un arco más grande podría representar a más viajeros. Un arco puede ser más grande con menos viajeros (289 viajeros / 11 billetes) que otro con más viajeros (311 viajeros / 5 billetes).
fuente