z kompletem punktów zbudowałem teselacji Voronoi korzystając scipy:Od Voronoi teselacji do zgrabna wielokątów
from scipy.spatial import Voronoi
vor = Voronoi(points)
Teraz chciałbym zbudować Polygon in Shapely z regionów algorytm Voronoi stworzonych. Problem polega na tym, że klasa Polygon wymaga listy przeciwnych do ruchu wskazówek zegara wierzchołków. Chociaż wiem, jak order these vertices, nie mogę rozwiązać ten problem, ponieważ często jest to mój wynik:
(nakładających wielokąt). To jest kod (JEDEN PRZYPADKOWY PRZYKŁAD):
def order_vertices(l):
mlat = sum(x[0] for x in l)/len(l)
mlng = sum(x[1] for x in l)/len(l)
# https://stackoverflow.com/questions/1709283/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])
Jak mogę rozwiązać ten problem?
To nie wygląda jak kolejność wierzchołków w kierunku przeciwnym do ruchu wskazówek zegara. Czy jesteś pewien, że poprawnie zaimplementowałeś algorytm zamawiania? – Kevin
@Kevin Wydaje mi się, że zaimplementowałem go poprawnie ... Zaktualizowałem to pytanie na przykładzie – marcodena
Czy to kod, który wygenerował twój wykres? Czy może jest to osobny przykład? – Kevin