2012-02-18 6 views
4

Я использую GEOS (in Python/Django) для управления некоторыми 3d-элементами. Все топологические операции отлично работают в 2D. Итак, я создал простой MultiPolygon с 3D-полигонами (очень простой, это просто набор вертикальных плоскостей) и LineString, который также является 3D. Теперь я просто хотел пересечение тех (который я считаю, был бы список 3D-очков):3D-геометрическая топология (например, пересечение) в Python

>>> l = LineString([0, 0, 0], [1, 1, 1]) 
>>> p = Polygon([[1, 0, 0], [0, 1, 0], [0, 1, 1000], [1, 0, 1000], [1, 0, 0]]) 
>>> p.intersects(l) 
False 

Так хорошо, не ГМО поддержки топологических операций с 3D-данных ... Ну, должно быть много библиотек, которые могут сделать это для меня правильно ??? Так что я googled, и я просто не могу найти никого! Так что если кто-то есть указатель, что было бы здорово ...

EDIT

Существует аналогичный вопрос Intersections of 3D polygons in python, но это не дает удовлетворительного ответа (см комментарий).

+0

Возможный дубликат [Пересечения 3D-полигонов в python] (http://stackoverflow.com/questions/2549708/intersections-of-3d-polygons-in-python) – plaes

+0

@plaes: Кроме того, что [пересечения трехмерных полигонов в python] не имеет никакого хорошего ответа. Они предлагают использовать pvtrace, который прослеживает некоторые лучи: я напоминаю вам, что я использую 'MultiPolygons' и' LineString': будет очень неэффективно перебирать все полигоны, все сегменты линии и вычислять сегмент интервала INTERGON для каждого из этих , – sebpiq

+0

плюс, просто зайдите на сайт pvtrace и найдите документ, а затем скажите мне, хотите ли вы его использовать ... – sebpiq

ответ

2

Я до сих пор не считаю, что в питоне есть один «хороший выбор» библиотеки, но в этом работает ряд перспективных проектов, среди которых улучшены cgal-bindings на коде Google.

Новые условия лицензирования CGAL с версии 4 дальше (GPL/LGPL) также делают некоторые части оригинала question по этой теме устаревшими.