Я пытаюсь воссоздать сюжет Origin-Destination так:
Мне удалось объединить данные в таблицу MSOA to LAD и нарисовать карту, подобную этой, для одного из исходных MSOA.
Который, как только вы учитываете (теперь смешные) расстояния, которые люди в Пиковом районе добираются до работы, близок.
Но мне очень нравится эффект, которого автор достиг, "расклеивая" линии. Очевидно, что с потоками 522 и 371 я не могу выбрать одну линию на каждого пассажира, но было бы неплохо создать пропорциональную дугу линий, чтобы показать количество людей, совершающих поездку.
Я думал, что смогу использовать Geometry Generator, но без конструкции цикла я не могу добиться прогресса.
qgis-3
geometry-generator
Ян Тертон
источник
источник
Ответы:
Отличный вызов!
Этот ответ в основном использует генератор геометрии и был написан в QGIS 3.2. Сбой QGIS (без сохранения!) Сразу после того, как я сначала построил линии, и я почти сдался, но недавно использованный список выражений спас день - еще один бонус к использованию генератора геометрии
Я начал с двух наборов точек, одного источника и трех пунктов назначения. Направления помечены со счетом:
Затем я сгенерировал линии, соединяющие исходную точку со всеми пунктами назначения, используя виртуальный слой, используя следующий код:
Затем я использовал следующее выражение генератора Geometry для стилизации линий:
Это занимает каждую строку и применяет следующие шаги:
tapered_buffer
чтобы понять, почему это необходимо)При написании шагов я понимаю, что преобразование в массив и из него не нужно, и все манипуляции с WKT можно выполнять с помощью регулярных выражений. Это выражение ниже, и если
tapered_array
функция может быть заменена другой, то это также может быть использовано в QGIS 2.18.источник
Ваш вопрос сделал меня любопытным.
Это решение работает только для QGIS 2.x в консоли Python
Как упомянуто в моем комментарии здесь моя идея создать дугу линий с Python.
У меня есть два точечных слоя:
я. Тот, кто держит капитал (id, капитал)
II. Один держит города (идентификатор, город, пассажиры)
Количество пассажиров «разделено на банкноты», и это будут линии, которые образуют дугу. Таким образом, пассажиры 371 представляют собой комбинацию 3х100, 1х50, 2х10 и 1х1 и всего 7 банкнот. После этого линии оформляются стилем, основанным на правилах.
Вот код:
Результат может выглядеть так:
ОБНОВЛЕНИЕ: различие мужчина / женщина
Результаты в 4 слоя памяти.
Результат может выглядеть так:
Одна вещь, которая не идеальна с картографической точки зрения:
На первый взгляд размер дуги линии может вызывать раздражение, так как большая дуга может представлять больше пассажиров. Дуга может быть больше с меньшим количеством пассажиров (289 пассажиров / 11 банкнот), чем с большим количеством пассажиров (311 пассажиров / 5 банкнот).
источник