В QGIS есть два шейп-файла, представляющих движущиеся данные между ячейками и один дополнительный слой, см. Изображение ниже
Перемещение данных определяется:
Многоугольник
"LayerA"
(прозрачные квадраты с красным контуром). Кроме того, оно также относится к кругам, представляющим движения внутри клеток, визуализируемые на позиции"LayerA"
геоцентроидов.Слой полилинии
"Flows"
(желтые / серые стрелки), передает значения через связи между геоцентроидами"LayerA"
объектов
Целевой слой:
Кроме того, я уже передал "FLUX"
и значение движения в клетках из "LayerA"
в "LayerB"
многоугольники, см моих предыдущих вопроса: унаследованные значений между полигонами в QGIS? , Это было сделано с помощью %
из $area
расчета.
Может существовать реальное решение / подход передачи / передачи / преобразования потоковых соединений, представленных как, "Flows"
и его значений из отношений "LayerA"
в отношения "LayerB"
.
Как я могу добиться этих связей в виде полилиний?
Кроме того, новые потоки будут наследовать аналогичный стиль "Flows"
.
По запросу могу предоставить образец данных.
Потоки будут существовать не между особенностями "LayerA"
, а между особенностями "LayerB"
. Основная цель заключается в достижении атрибута "FLUX"
(то есть от / до) для соединений между "LayerB"
возможными в виде таблицы / Матрицы происхождения-назначения.
Есть некоторые требования / критерии, которые следует соблюдать:
1. Нет потоковых соединений между частями объектов (выделены желтым цветом) в одной ячейке
2. Нет связи между одной и той же функцией, даже если ее части находятся в разных ячейках
3. Существуют связи между частями объектов "LayerB"
(на основе "Union"
выходных данных), если они полностью находятся в двух разных "LayerA"
элементах ячейки.
4. Новое "FLUX"
значение, которое передается, будет рассчитано, как показано на рисунке ниже.
Например, существует связь между двумя ячейками I
и II
, где "FLUX"
есть 100
. Предполагая другие значения, "NEW_FLUX"
между A'
и B''
будет вокруг 1.5625
. 100
это только один пример.
Ссылки:
- Унаследованные значения между полигонами в QGIS?
- Настройка стилей карты потоков в QGIS 2
- Вычислить пропорциональную площадь многоугольника внутри многоугольника другого слоя
- Бесплатные и открытые источники ГИС Ramblings | Данные о движении в ГИС: проблемы и идеи
- Сохранение геометрии с помощью виртуального слоя в QGIS 2
источник
Ответы:
С виртуальными слоями, теоретически, это возможно (с шейп-файлами процесс будет очень длинным, но если слои находятся в пространственной базе данных, я думаю, что это намного быстрее).
Вот код:
Графический вывод будет выглядеть
Результат был проверен вручную. Разница в
"FLUX"
значениях пренебрежимо мала.Окончательный результат будет наследовать стили от
"Flow"
и выглядеть какЯ рекомендую протестировать его с несколькими данными, и, если для больших наборов данных это займет слишком много времени, выполните пошаговые запросы (
"inter_ab"
,"new_flux"
), сохраните результат и выполните следующий запрос.источник
Polygon_b
слоя, и это ключевое полеid_geofla
. Я сделал исправление.Вы можете сделать соединение между тремя слоями, а затем агрегировать по
layerB
. Виртуальные слои могут быть использованы. Я не уверен, что важные данные находятся вlayerA
или вflow
слое. Вот (непроверенная) возможность:источник
"Flows"
.sum(f.flow_var)
или дажеsum(fl.flow_var * a.poly_var)