У меня есть слой многоугольника со значением атрибута, представляющим количество людей внутри многоугольника. Я использую QGIS 3.0.
Мне нужно визуализировать счет в виде сетки точек внутри многоугольника (то есть 1 точка = 100 лягушек, раскрашенных по видам). Точки не обязательно должны занимать весь многоугольник, и желательно, чтобы они были нарисованы вокруг центроида с заранее определенным интервалом (например, 300 м), чтобы они могли представлять аккуратную сетку с определенным разрешением.
Текущий обходной путь, который я нашел, состоит в том, чтобы использовать «Обычные точки» с параметром count для создания сеток внутри экстента, нарисованного на карте, а затем удалить дополнительные точки, созданные алгоритмом (алгоритм округляет до сетки, и вы можете получить 20 точек вместо 17 в вход). Это дает желаемый результат, но требует рисования экстента области для обычных точек для каждого многоугольника, а также ручного ввода атрибутов и очистки созданных точек. Кроме того, поскольку я запускаю «Обычные точки» с указанным количеством, вместо пробелов каждый полигон получает точки с разным интервалом.
В двух словах: Регулярные точки (определенное количество точек, нарисованный экстент) для каждого многоугольника (партии)> Удалить дополнительные точки> назначить значения атрибута # точкам
Альтернатива (избегает неравномерного расстояния, но требует еще больше манипуляций):
Обычные точки (с определенным интервалом, т. Е. 300 м) в экстенте всего слоя> Обрезать до экстента полигонов> Удалить дополнительные точки в каждом многоугольнике, пока вы не получите желаемое количество точек> назначить значения атрибутов для точек.
Основная проблема с моими обходными путями - обработка многоугольников, что затрудняет обновление данных и работу с большим количеством многоугольников.
Аналогичный вопрос был задан как Создание регулярно разнесенных, определенных # точек внутри многоугольника в QGIS , но специфика отличается.
источник
Ответы:
QGIS 3 поставляется с новым методом смещения в рендере кластера, который называется grid. Похоже, это в значительной степени то, что вам нужно. Просто создайте количество желаемых точек в центре вашего многоугольника.
Я не знаю способа генерирования точек только с помощью графического инструмента, но относительно простой скрипт на Python должен это делать.
Если вы хотите сойти с ума, оберните это в собственный алгоритм обработки.
источник
Может быть, другой путь, вдохновляющий ответ от Sarath SRK:
Тем не менее, у вас будет что-то вроде этого
Используйте графический редактор для создания нового поля с коммандой "@row_number"
Выполнить модель с итерацией на уровне буфера
Слить весь новый слой
Удалите все точки с полем ID_pt больше, чем сумма вашего поля («Лягушки» + «Кошки» + «Диплодоки»)
источник
Вы можете использовать генераторы геометрии для этого.
источник
Одним из решений может быть создание точечного слоя с точками в центре тяжести каждого многоугольника. Так, например, вы получили в центре тяжести Эдмонтона 25 наложенных точек: 5 с атрибутом лягушки, 20 точек с кошкой и 0 с диплодоками.
Затем, используя средство рендеринга смещения точек с методом размещения, установленным как сетка, вы сможете получить эффект.
Сложность заключается в создании точечного слоя ....
источник
Очень простой альтернативой может быть использование круговой диаграммы, доступной в свойствах слоя? Атрибуты и размеры могут быть продиктованы выражением.
источник
Вы можете генерировать точки по спиральной траектории, начиная с многоугольника центроида. В следующем сообщении о переполнении стека есть код Python для создания равноудаленных точек, но я не могу проверить его в данный момент, учитывая отсутствие свободного времени.
источник
В твоем случае,
источник