Имея набор (2D) точек из ГИС-файла (карту города), мне нужно создать многоугольник, который определяет «контур» для этой карты (ее границы). Его входными параметрами были бы установленные точки и «максимальная длина края». Затем он выведет соответствующий (вероятно, не выпуклый) многоугольник.Есть ли эффективный алгоритм для создания двумерного вогнутого корпуса?
Лучшим решением, которое я нашел до сих пор, было создание треугольников Delaunay, а затем удаление внешних краев, длина которых больше максимальной длины. После того, как все внешние края короче этого, я просто удаляю внутренние ребра и получаю нужный многоугольник. Проблема в том, что это очень трудоемко, и мне интересно, есть ли лучший способ.
Вы говорите, что у вас есть Гис файл - вы не используете отображение ГИС приложения/программное обеспечение? Я знаю, что сервер ArcGIS будет с удовольствием использовать любое количество очков и составить карту, наложенную на получаемый многоугольник. – Ian 2008-09-17 14:21:38
Да, у меня есть файл GIS, но мне нужно написать алгоритм (возможно, на C или C++), это должно быть размещено внутри уже существующей программы и не должно использовать внешние инструменты (например, ArcGIS) для этого, он должен быть самодостаточным. – 2008-09-17 14:26:12
На самом деле, я не думаю, что у ArcGIS есть встроенный алгоритм, чтобы делать то, что он хочет.ArcGIS обладает способностью делать выпуклые оболочки, но вогнутые значительно сложнее. – 2008-09-17 14:50:57