Расположить объекты на чертеже без пересечений

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
TiDi
Новоприбывший
Сообщения: 3
Зарегистрирован: 09 дек 2022, 08:27
Репутация: 0
Откуда: Moscow

Расположить объекты на чертеже без пересечений

Сообщение TiDi » 09 дек 2022, 08:45

Добрый день!
Вопрос фундаментальный, задача житейская:
В чертеже dwg имею N полигонов, расположенных хаотично, которые могут между собой пересекаться.
Нужно эти объекты растащить так, чтобы они НЕ пересекались.
Что я придумал: к примеру из dxf извлекаем xy 1 вершины, xy 2 вершины, получаем таблицу id / name / x1 / y1 / x2 / y2. Загоняем в СУБД и каким-то хитрым запросом пытаемся найти свободные места, куда полигон бы встал минимально отдаляясь от начального положения.
Идея есть - реализация по мне возможная, просто достаточными знаниями в сфере топологии не обладаю, прошу вашей помощи, Гисы!

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

Re: Расположить объекты на чертеже без пересечений

Сообщение gamm » 09 дек 2022, 13:17

это типичная типа "укладки рюкзака потряхиванием" (simulated annealing), либо просто итерационным. Целевая функция - площадь пересечения, число пересечений, и т.д., параметры - центры полигонов. Работает долго, но для современных компьютеров годится. И делается, конечно, никак не методом "Загоняем в СУБД и каким-то хитрым запросом пытаемся найти свободные места" :mrgreen:

Для автокада должны быть готовые нахлобучки, например для размещения непересекающихся надписей.

TiDi
Новоприбывший
Сообщения: 3
Зарегистрирован: 09 дек 2022, 08:27
Репутация: 0
Откуда: Moscow

Re: Расположить объекты на чертеже без пересечений

Сообщение TiDi » 10 дек 2022, 16:01

Спасибо, что-то подобное мне и нужно реализовать

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

Re: Расположить объекты на чертеже без пересечений

Сообщение gamm » 10 дек 2022, 17:48

К ГИС эта задача не имеет отношения, это в чистом виде машинное проектирование. Еще есть похожая задача раскроя, но там нет ограничения на величину сдвига, там нужно просто разместить непересекающиеся фигуры на листе. Сами вы это не реализуете (судя по первому сообщению), задача трудозатрадная, и делать ее под вас никто не будет. Значит, ищите готовое на профильный сайтах/форумах.

Ответить

Вернуться в «Я новичок!»

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

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