У меня есть список фигурных многоугольников в Python. Узнать, к какому полигону прикоснуться легко, можно с помощью метода .touches()
. Однако мне нужно что-то, что возвращает True
только тогда, когда многоугольники имеют больше, чем одна точка (другими словами, имеют общую границу). Позвольте мне проиллюстрировать:
In [1]: from shapely.geometry import Polygon
In [2]: polygons = [Polygon([(0,0),(0,1),(1,1),(1,0)]), Polygon([(1,0),(1,1),(2,1),(2,0)]), Polygon([(2,1),(2,2),(3,2),(3,1)])]
In [3]: polygons[0].touches(polygons[1])
Out[3]: True
In [4]: polygons[0].touches(polygons[2])
Out[4]: False
In [5]: polygons[1].touches(polygons[2])
Out[5]: True
В этом случае многоугольники 0 и 1 имеют две общие точки (всю границу). У многоугольника 1 и 2 только одна точка. Я ищу функцию, которая дала бы мне True
, False
, False
в приведенном выше примере или просто что-то, что возвращает количество точек касания, тогда я могу выполнить остальную логику сам.
И, конечно, любое решение, которое не требует ручного перебора всех точек, является оптимальным - если мне нужно это сделать, это как бы противоречит цели использования Shapely :-)