Formfaktor für ein Polygon berechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
wooglevogel
User
Beiträge: 5
Registriert: Samstag 8. November 2014, 19:02

Guten Abend!

Ich habe folgende Aufgabe, auf deren Lösung ich einfach nicht komme. Ich hoffe von euch kann mir vielleicht jemand behilflich sein ;)

Ich soll eine Klasse erstellen, welche für eine beliebige (Polygon)Objektklasse einen Formfaktor für die einzelnen Polygonobjekte berechnet und diese in eine neue Attributspalte schreibt. Ich habe dazu folgende Hilfestellungen bekommen:

- Klasse mit dem Namen "compactness" erstellen
- innerhalb der Klasse eine Methode definieren, welche
a) in der Attributtabelle der gewählten Objektklasse ein neues Attributfeld hinzufügt und
b) die Berechnung des Formfaktors für die gewählte Objektklasse ermöglicht. (Die Formel zur Berechnung des Formfaktors eines Polygons lautet: Fläche / (Umfang * Umfang / 4*3.14)) )

Vor allem Schwierigkeiten bereitet mir, wie ich die Fläche und den Umfang aus einem Shapefile in eine Formel bekomme, sodass Python mir das ausrechnet.


Danke im voraus!

Liebe Grüße!
Markus
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Ein Problem hast Du gar nicht erwähnt: das Einlesen des Shapefiles. Es gibt zig Geometrie-Formate, welches soll es denn sein?
wooglevogel hat geschrieben:Vor allem Schwierigkeiten bereitet mir, wie ich die Fläche und den Umfang aus einem Shapefile in eine Formel bekomme, sodass Python mir das ausrechnet.
Der Umfang ist relativ einfach: Du liest die Eckpunkte (Vertices) in ein Numpy Array ein und rechnest immer zwischen zwei aufeinanderfolgenden Vertices den kartesischen Abstand aus und summierst diese Abstände.

Die Fläche ist dagegen schwieriger. Ich kenne keine allgemeine Formel für den Flächeninhalt von beliebigen Polygonen. Ich vermute Du musst das Polygon triangulieren (in Dreiecke aufteilen). Wenn das Polygon konvex oder wenigstens sternförmig ist, dann ist das relativ einfach. Aber für ein allgemeines Polygon ist das schon echt aufwändig sowas selbst zu entwickeln, für eine Hausaufgabe eindeutig zu schwer, das ist eher der Umfang einer Diplomarbeit.

Hier eine Anleitung zum Triangulieren von Polynomflächen auf 104 Seiten: https://narfation.org/alggeo/triangulation.pdf

Gibt es irgendwelche Einschränkungen oder Zusatzinformationen zum Polygon?
a fool with a tool is still a fool, www.magben.de, YouTube
BlackJack

@wooglevogel: Ich schliesse mich das MagBen an: Du wirst sicherlich nicht den Code zum einlesen des Shapefiles selber schreiben sondern eine Bibliothek verwenden. Welche? Die Berechnungen kann man eventuell auch gleich von dieser Bibliothek erledigen lassen. Oder auch von einer anderen. In `shapely` haben die Objekte zum Beispiel ein `area`-Attribut.
Antworten