En QGIS hay dos archivos de forma que representan los datos en movimiento entre las celdas y una capa adicional, vea la imagen a continuación
Datos móviles definidos por:
Polígono
"LayerA"
(cuadrados transparentes con contorno rojo). Además, también se relaciona con círculos que representan los movimientos dentro de las células, visualizados en la posición de los"LayerA"
geocentroides.Capa de polilínea
"Flows"
(flechas amarillas / grises), transmite valores a través de conexiones entre geocentroides de"LayerA"
entidades
Capa de destino:
Además, ya he transferido "FLUX"
y valores de movimiento dentro de las células de "LayerA"
en "LayerB"
polígonos, véase mi anterior pregunta: heredada valores entre polígonos en QGIS? . Se realiza mediante el %
de $area
cálculo.
Puede haber una solución / enfoque significativo para transferir / transmitir / transformar conexiones de flujo representadas por "Flows"
y sus valores de relaciones de "LayerA"
a relaciones de "LayerB"
.
¿Cómo puedo lograr esas conexiones como polilíneas?
Además, los nuevos flujos heredarán un estilo similar a "Flows"
.
Por solicitud, puedo proporcionar una muestra de los datos.
Los flujos no existirán entre las características de "LayerA"
, sino entre las características de "LayerB"
. El objetivo principal es lograr el atributo "FLUX"
(es decir, de / a) para conexiones entre "LayerB"
posibles como tabla / matriz de origen-destino.
Hay algunos requisitos / criterios que deben cumplirse:
1. No hay conexiones de flujo entre las partes de las características (seleccionadas en amarillo) en la misma celda
2. No hay conexiones entre la misma característica, incluso sus partes están en celdas diferentes
3. Existen conexiones entre partes de características "LayerB"
(basadas en la "Union"
salida) si están completamente dentro de dos características de "LayerA"
celda distintas
4. El nuevo "FLUX"
valor que se transmite se calculará como se muestra en la imagen a continuación.
Por ejemplo, hay una conexión entre dos celdas I
y II
, donde "FLUX"
está 100
. Asumiendo otros valores, el "NEW_FLUX"
intermedio A'
y B''
estará alrededor 1.5625
. 100
Es solo un ejemplo.
Referencias
fuente
Respuestas:
Con las capas virtuales, en teoría, es posible (con archivos de forma, el proceso será más largo, pero si las capas están en una base de datos espacial, creo que es mucho más rápido).
Aquí el código:
La salida gráfica se verá así
El resultado fue probado manualmente. La diferencia de
"FLUX"
valores es despreciable.El resultado final heredará estilos de
"Flow"
y se verá comoRecomiendo probarlo con unos pocos datos, y si toma demasiado tiempo para grandes conjuntos de datos, ejecute las consultas paso a paso (
"inter_ab"
,"new_flux"
) y guarde el resultado y ejecute la siguiente consulta.fuente
Polygon_b
capa, y su campo clave esid_geofla
. Hice la corrección.Puede hacer una unión entre las tres capas, luego agregar por
layerB
. Es probable que se puedan usar capas virtuales. No estoy seguro de si los datos importantes están enlayerA
o en laflow
capa. Aquí hay una posibilidad (no probada):fuente
"Flows"
.sum(f.flow_var)
o inclusosum(fl.flow_var * a.poly_var)