Задача разместить квадраты в замктнутом полигоне
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Задача разместить квадраты в замктнутом полигоне
Есть большой, неправильной формы, полигон. Требуется разместить n-нное количество квадратов 1х1 км так чтобы они не выходили за границы полигона.
Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 4170
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Задача разместить квадраты в замктнутом полигоне
делал когда-то подобную мульку. Это классический алгоритм "укладки рюкзака", он же "раскройки шкуры".rhot писал(а):Есть большой, неправильной формы, полигон. Требуется разместить n-нное количество квадратов 1х1 км так чтобы они не выходили за границы полигона.
Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
Можно сделать "жадный" (субоптимальный) алгоритм, для начал построив "ядро" (эдакий буфер, но внутрь), радиусом половина стороны (здесь могут располагаться центры), сделать регулярную сетку (центров квадратов) с шагом стороны, вписать ее в это ядро ("подвигав" туда-сюда), двигая и сетку, и ряды/строки (тут какая-нибудь стохастика сгодится). Как-то так.
В ГИС есть подобные алгоритмы размещения не перекрывающихся меток
P.S. непонятно, что такое n-нное, я привел алгоритм для максимизации числа квадратов. Если n задано, то просто выбираем случайно узлы вписанной сетки
- gimran
- Гуру
- Сообщения: 1902
- Зарегистрирован: 07 июл 2010, 15:43
- Репутация: 242
- Откуда: Уфа
Re: Задача разместить квадраты в замктнутом полигоне
Квадратная сетка в итоге или "замостить квадратами по максимуму"?
Можно сгенерировать регулярную сетку, а затем линии в полигоны.
PS. Если не секрет, строите сеть регулярного мониторинга?
[ Сообщение с мобильного устройства ]
Можно сгенерировать регулярную сетку, а затем линии в полигоны.
PS. Если не секрет, строите сеть регулярного мониторинга?
[ Сообщение с мобильного устройства ]
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Задача разместить квадраты в замктнутом полигоне
Да, число квадратов задаю я.
Замостить по максимуму, делаю обычный разовый сэмплинг.
Замостить по максимуму, делаю обычный разовый сэмплинг.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 4170
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Задача разместить квадраты в замктнутом полигоне
(1) и (2) несовместимы, это разные задачи ...rhot писал(а): 1) Да, число квадратов задаю я.
2) Замостить по максимуму, делаю обычный разовый сэмплинг.
просто сгенерировать квадраты как полигоны (несколько раз, со случайным сдвигом всей решетки), и сделать выборку тех, которые строго внутри.
Последний раз редактировалось gamm 14 май 2014, 19:51, всего редактировалось 1 раз.
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Задача разместить квадраты в замктнутом полигоне
почему же?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 4170
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Задача разместить квадраты в замктнутом полигоне
потому, что разные - либо вы число знаете заранее (например, три), либо "по максимуму"rhot писал(а):почему же?

- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Задача разместить квадраты в замктнутом полигоне
тогда да, число заранее известно 

___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: Задача разместить квадраты в замктнутом полигоне
В 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"
Готово! Осталось сохранить выборку.
Нам понадобится контур полигона. Создадим его заранее:
[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"
Готово! Осталось сохранить выборку.
The purpose of computing is insight, not numbers
- gimran
- Гуру
- Сообщения: 1902
- Зарегистрирован: 07 июл 2010, 15:43
- Репутация: 242
- Откуда: Уфа
Re: Задача разместить квадраты в замктнутом полигоне
Там другое, требуется линии и отдельные квадраты двигать. То есть "заполнить по максимуму квадратами вне зависимости от сложности форм", а у Вас регулярная сетка, ограничивающая решение задачи.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: Задача разместить квадраты в замктнутом полигоне
Виноват, был невнимателен, проскочил вопросы-ответы в середине обсуждения.gimran писал(а):Там другое, требуется линии и отдельные квадраты двигать. То есть "заполнить по максимуму квадратами вне зависимости от сложности форм", а у Вас регулярная сетка, ограничивающая решение задачи.
The purpose of computing is insight, not numbers
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя