Я нарисовал карту потока OD, используя генератор геометрии QGIS, используя следующее выражение:
make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
$currentfeature, 'Attribute2') ) ) ) )
У меня все хорошо, определяя ширину моих линий по атрибутам.
Но когда я увеличиваю масштаб до «центра», линии, связанные с местами вне холста карты, не отображаются. Я думаю, это потому, что объекты не должны появляться на карте.
Я пытался снять флажок «Обрезать элементы по холсту» в расширенном меню, как в «Генераторе геометрии», так и в уровнях «Линия», но он все еще не отображается.
Я хотел бы, чтобы все мои линии появлялись даже при увеличении масштаба на хабе.
qgis
symbology
mapcanvas
geometry-generator
mamouthautapis
источник
источник
Ответы:
Проблема здесь в том, что нет фактических данных, говорящих «здесь есть линия». Ваше выражение является частью стиля слоя и встречается только в процессе рендеринга, когда также отображаются две применимые точки.
Попробуйте использовать инструмент Расстояние до ближайшего концентратора , который находится на панели инструментов обработки в разделе Инструменты векторного анализа. Я отмечаю, что вы выбираете определенные полигоны для своих спиц и стилизуете линии в соответствии с другими атрибутами. Это возможно, но вам нужно будет сделать несколько вещей, чтобы подготовиться к этому. К счастью, инструмент автоматически использует центроиды при выборе входов полигонов.
Результирующий вывод сохраняет все атрибуты ввода слоя «SPOKES», поэтому атрибуты, необходимые для стилевого оформления, все равно будут присутствовать. Как и собственный векторный слой, линии останутся видимыми на всех уровнях масштабирования, независимо от видимости любой конечной точки.
Если вы знакомы с Graphical Modeler, вы можете даже встроить эти шаги в один процесс, чтобы не загромождать рабочее пространство ненужными слоями.
источник
Найден следующий обходной путь: используйте дополнительный виртуальный слой вместо генератора геометрии для отображения линий.
Определение виртуального слоя:
(исходная геометрия может быть использована с помощью
m.geometry
)Чтобы убедиться, что виртуальный слой обновляется при редактировании my_layer, перейдите в Свойства слоя | зависимости и убедитесь, что my_layer отмечен (по умолчанию он неактивен).
источник