Задача разместить квадраты в замктнутом полигоне

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

Задача разместить квадраты в замктнутом полигоне

Сообщение rhot » 14 май 2014, 18:15

Есть большой, неправильной формы, полигон. Требуется разместить n-нное количество квадратов 1х1 км так чтобы они не выходили за границы полигона.

Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение gamm » 14 май 2014, 18:26

rhot писал(а):Есть большой, неправильной формы, полигон. Требуется разместить n-нное количество квадратов 1х1 км так чтобы они не выходили за границы полигона.

Встречал кто-нибудь функцию/инструмент, которая бы это выполняла?
делал когда-то подобную мульку. Это классический алгоритм "укладки рюкзака", он же "раскройки шкуры".

Можно сделать "жадный" (субоптимальный) алгоритм, для начал построив "ядро" (эдакий буфер, но внутрь), радиусом половина стороны (здесь могут располагаться центры), сделать регулярную сетку (центров квадратов) с шагом стороны, вписать ее в это ядро ("подвигав" туда-сюда), двигая и сетку, и ряды/строки (тут какая-нибудь стохастика сгодится). Как-то так.

В ГИС есть подобные алгоритмы размещения не перекрывающихся меток

P.S. непонятно, что такое n-нное, я привел алгоритм для максимизации числа квадратов. Если n задано, то просто выбираем случайно узлы вписанной сетки

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение gimran » 14 май 2014, 18:34

Квадратная сетка в итоге или "замостить квадратами по максимуму"?
Можно сгенерировать регулярную сетку, а затем линии в полигоны.
PS. Если не секрет, строите сеть регулярного мониторинга?

[ Сообщение с мобильного устройства ]

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

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение rhot » 14 май 2014, 19:11

Да, число квадратов задаю я.

Замостить по максимуму, делаю обычный разовый сэмплинг.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение gamm » 14 май 2014, 19:49

rhot писал(а): 1) Да, число квадратов задаю я.
2) Замостить по максимуму, делаю обычный разовый сэмплинг.
(1) и (2) несовместимы, это разные задачи ...

просто сгенерировать квадраты как полигоны (несколько раз, со случайным сдвигом всей решетки), и сделать выборку тех, которые строго внутри.
Последний раз редактировалось gamm 14 май 2014, 19:51, всего редактировалось 1 раз.

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

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение rhot » 14 май 2014, 19:51

почему же?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение gamm » 14 май 2014, 20:03

rhot писал(а):почему же?
потому, что разные - либо вы число знаете заранее (например, три), либо "по максимуму" :D

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

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение rhot » 14 май 2014, 21:43

тогда да, число заранее известно :)
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

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"

Готово! Осталось сохранить выборку.
The purpose of computing is insight, not numbers

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение gimran » 14 май 2014, 22:44

Там другое, требуется линии и отдельные квадраты двигать. То есть "заполнить по максимуму квадратами вне зависимости от сложности форм", а у Вас регулярная сетка, ограничивающая решение задачи.

[ Сообщение с мобильного устройства ]

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

Re: Задача разместить квадраты в замктнутом полигоне

Сообщение Игорь Белов » 14 май 2014, 23:17

gimran писал(а):Там другое, требуется линии и отдельные квадраты двигать. То есть "заполнить по максимуму квадратами вне зависимости от сложности форм", а у Вас регулярная сетка, ограничивающая решение задачи.
Виноват, был невнимателен, проскочил вопросы-ответы в середине обсуждения.
The purpose of computing is insight, not numbers

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя