Страница 1 из 1
Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 18:15
rhot
Есть большой, неправильной формы, полигон. Требуется разместить n-нное количество квадратов 1х1 км так чтобы они не выходили за границы полигона.
Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 18:26
gamm
rhot писал(а):Есть большой, неправильной формы, полигон. Требуется разместить n-нное количество квадратов 1х1 км так чтобы они не выходили за границы полигона.
Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
делал когда-то подобную мульку. Это классический алгоритм "укладки рюкзака", он же "раскройки шкуры".
Можно сделать "жадный" (субоптимальный) алгоритм, для начал построив "ядро" (эдакий буфер, но внутрь), радиусом половина стороны (здесь могут располагаться центры), сделать регулярную сетку (центров квадратов) с шагом стороны, вписать ее в это ядро ("подвигав" туда-сюда), двигая и сетку, и ряды/строки (тут какая-нибудь стохастика сгодится). Как-то так.
В ГИС есть подобные алгоритмы размещения не перекрывающихся меток
P.S. непонятно, что такое n-нное, я привел алгоритм для максимизации числа квадратов. Если n задано, то просто выбираем случайно узлы вписанной сетки
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 18:34
gimran
Квадратная сетка в итоге или "замостить квадратами по максимуму"?
Можно сгенерировать регулярную сетку, а затем линии в полигоны.
PS. Если не секрет, строите сеть регулярного мониторинга?
[ Сообщение с мобильного устройства ]
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 19:11
rhot
Да, число квадратов задаю я.
Замостить по максимуму, делаю обычный разовый сэмплинг.
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 19:49
gamm
rhot писал(а):
1) Да, число квадратов задаю я.
2) Замостить по максимуму, делаю обычный разовый сэмплинг.
(1) и (2) несовместимы, это разные задачи ...
просто сгенерировать квадраты как полигоны (несколько раз, со случайным сдвигом всей решетки), и сделать выборку тех, которые строго внутри.
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 19:51
rhot
почему же?
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 20:03
gamm
rhot писал(а):почему же?
потому, что разные - либо вы число знаете заранее (например, три), либо "по максимуму"

Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 21:43
rhot
тогда да, число заранее известно

Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 22:28
Игорь Белов
В QGIS получается так.
Нам понадобится контур полигона. Создадим его заранее:
[Vector] → [Geometry Tools] → [Polygons to lines]
Построим сетку квадратов, используя размеры полигона в качестве шаблона:
[Vector] → [Research Tools] → [Vector grid] : "Output grid as polygons"
Можно подвигать квадраты вверх-вниз и вправо-влево.
Выделим пересечение квадратов с полигоном:
[Vector] → [Research Tools] → [Select by location] : "creating new selection"
Снимем выделение с квадратов, пересекаемых контуром:
[Vector] → [Research Tools] → [Select by location] : "removing from current selection"
Готово! Осталось сохранить выборку.
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 22:44
gimran
Там другое, требуется линии и отдельные квадраты двигать. То есть "заполнить по максимуму квадратами вне зависимости от сложности форм", а у Вас регулярная сетка, ограничивающая решение задачи.
[ Сообщение с мобильного устройства ]
Re: Задача разместить квадраты в замктнутом полигоне
Добавлено: 14 май 2014, 23:17
Игорь Белов
gimran писал(а):Там другое, требуется линии и отдельные квадраты двигать. То есть "заполнить по максимуму квадратами вне зависимости от сложности форм", а у Вас регулярная сетка, ограничивающая решение задачи.
Виноват, был невнимателен, проскочил вопросы-ответы в середине обсуждения.