Я пытаюсь найти область самопересекающихся (сложных) многоугольников на Земле. Есть ли библиотека, которая правильно выполняет вычисления площадей для таких геометрий?Как рассчитать площадь самопересекающихся многоугольников на Земле
До сих пор я пробовал geographiclib и Polygon2 (на основе gpc), но они дают неправильные результаты для сложных полигонов.
В альтернативном варианте есть простой способ преобразования самопересекающихся многоугольников в множество простых многоугольников, так что я могу использовать алгоритмы для простых геометрий, а затем суммировать все полигоны? Я знаю, что решением было бы реализовать Bentley-Ottman algorithm, чтобы найти точки пересечения, а затем разделить многоугольник на множество простых полигонов, но если есть библиотека, которую я мог бы использовать, я бы с удовольствием избегал изобретать колесо (и, возможно, вводить ошибки).
Обновление: Координаты, которые я использую, не содержат явные точки пересечения. Поэтому библиотеки отсечения, похоже, не обрабатывают их должным образом. Например, в следующем коде coords_1
и coords_2
определяют один и тот же полигон. Использование библиотеки обрезки Polygon2.
>>> coords_1 = [(0,0), (1,1), (1,0), (0,1)]
>>> coords_2 = [(0,0), (0.5, 0.5), (1,0), (1,1), (0.5,0.5), (0,1)]
>>> Polygon(coords_1).area()
0
>>> Polygon(coords_2).area()
0.5
Я бы хотел получить второй результат, используя coords_1. Я также пробовал другие библиотеки отсечения, но пока не повезло.
Я пытаюсь выяснить, как различные две траектории на Земле измеряют площадь, определенную полигоном между ними. – themiurgo
Далеко, но вы можете найти это интересно: http://www.cambridge.org/us/academic/subjects/computer-science/knowledge-management-databases-and-data-mining/mobility-data-modeling- менеджмент и понимание (вчера мне это показалось) –