Измените полигоны так, чтобы они не перекрывались и площадь оставалась прежней
У меня есть набор полигонов, и они могут перекрываться друг с другом, как это:
Я хочу изменить их таким образом, чтобы они не перекрывались и полученная площадь поверхности оставалась прежней. Что-то вроде этого:
Это нормально, если форма или положение меняется. Главное, чтобы они не перекрывались друг с другом и область не должна сильно меняться (я знаю, что область немного изменилась на втором изображении, но я ее нарисовал вручную при этом будем просто считать, что площади не изменились).
Я пытаюсь сделать это программно с помощью Python. В основном я хранил полигоны в базе данных PostGIS, и с помощью скрипта я хочу получить их и изменить.
Я очень новичок в ГИС, и поэтому это кажется трудной задачей.
Как правильно это делать? Существует ли алгоритм, который решает такого рода проблемы?
2 ответа:
Вот что я сделал:
Перебрал все полигоны и нашел перекрывающиеся полигоны. Затем я переместил многоугольник в разные стороны и нашел наилучшее направление движения, рассчитав минимальную результирующую площадь перекрытия. Затем я просто переместил многоугольник в этом лучшем направлении, пока не осталось никакой перекрывающейся области.