2017-12-05 2 views
0

Ich habe eine Liste/ein Array von 2D-Punkten, die eine nichtkonvexenicht selbstschneidende Form bilden. Ich möchte die von diesem Polygon eingeschlossene Fläche berechnen.Wie Bereich des Polygons aus der Liste der Punkte mit Python zu berechnen?

Zuerst muss ich ein Polygon mit den Punkten bilden, die ich als "Kurvenweg" (nicht selbstschneidend) erhalten habe. Wenn ich dieses Polygon triangulieren kann, kann ich den Bereich berechnen (ich kann einen kleinen relativen Fehler tolerieren).

Die Verwendung von scipy's scipy.spatial.ConvexHull() führt zu der falschen Form und Fläche, natürlich, aber ich habe keinen verfügbaren Algorithmus in den großen Mathe-Paketen gefunden, die dies tut.

Kann mir jemand sagen, wie man das macht?

+5

https://stackoverflow.com/questions/24467972/calculate-area-of-polygon-given-xy-coordinates – SteveJ

+0

Einige Anordnungen von Punkte können als mehr als ein nicht konvexes Polygon interpretiert werden, auch wenn Sie sich nicht schneiden. Wie soll das Programm in dieser mehrdeutigen Situation einen Polygonbereich berechnen? – MrT

+0

@Piinthesky gut eine Zeile der Dreiecke ist immer bekannt, es ist die Linie von einem Punkt auf der nächsten Kurve, ich dachte, jemand hatte bereits an einen Algorithmus gedacht, der dies tut – zython

Antwort

1

das wohlgeformt Modul sowohl für Python 2.7 verfügbar verwenden und 3

In [41]: from shapely.geometry import Polygon 

In [48]: coords = ((-1, 0), (-1, 1), (0, 0.5), (1, 1), (1, 0), (-1, 0)) 

In [49]: polygon = Polygon(coords) 

In [50]: polygon.area 
Out[50]: 1.5 
+0

wird dies testen, danke für die Antwort – zython

+0

scheint zu arbeiten, danke für die Antwort, akzeptiert – zython

Verwandte Themen