из набора точек я построил тесселяцию Voronoi, используя scipy:
from scipy.spatial import Voronoi
vor = Voronoi(points)
Теперь я хотел бы создать Polygon in Shapely из регионов, созданных алгоритмом Вороного. Проблема состоит в том, что для класса Polygon требуется список вершин против часовой стрелки. Хотя я знаю, как упорядочить эти вершины, я не могу решить проблему, потому что часто это мой результат:
(перекрывающий многоугольник). Это код (ОДИН СЛУЧАЙНЫЙ ПРИМЕР):
def order_vertices(l):
mlat = sum(x[0] for x in l) / len(l)
mlng = sum(x[1] for x in l) / len(l)
# /info/820934/how-can-i-sort-a-coordinate-list-for-a-rectangle-counterclockwise
def algo(x):
return (math.atan2(x[0] - mlat, x[1] - mlng) + 2 * math.pi) % 2*math.pi
l.sort(key=algo)
return l
a = np.asarray(order_vertices([(9.258054711746084, 45.486245994138976),
(9.239284166975443, 45.46805963143515),
(9.271640747003861, 45.48987234571072),
(9.25828782103321, 45.44377372506324),
(9.253993275176263, 45.44484395950612),
(9.250114174032936, 45.48417979682819)]))
plt.plot(a[:,0], a[:,1])
Как я могу решить эту проблему?