Flächenberechnung mit Inkscape

Zwecks genauer Planung unseres Gartens war ich auf der Suche nach einem einfachen Gartenprogramm für unseren Garten. Es sollte den Garten von oben abbilden und die Möglichkeit bieten, die Flächeninhalte bestimmter Polygone anzugeben, beispielsweise um zu berechnen, wieviel m² Pflaster benötigt wird. Eine 3-D-Ansicht sowie Bibliotheken brauchte ich nicht. Also freundete ich mich mit Inkscape an.

Pläne mit Inkscape zu erstellen ist relativ trivial. Hierfür konnte ich sogar den Maßstab 1:1 benutzen, auch wenn der Garten bei kleinstem Zoom dann nicht mehr ganz auf den Bildschirm passt. Nur das Berechnen des Flächeininhalts von Polygonen kann Inkscape nicht von Haus aus. Ein Script musste her, welches diese Aufgabe übernimmt.

Inkscape benutzt zum Abspeichern der Polygone zum Glück ein XML-Format, aus welchem man leicht die verschiedenen Punkte eines Pfades herauslesen kann. Dank Wikipedia und Gauß bleibt mir die Entwicklung eines eigenen Algorithmus erspart. Wikipedia sagt folgendes:

Wenn die Eckpunkte eines ebenen einfachen (s.o.) Polygons durch kartesische Koordinaten (xi,yi) gegeben sind, kann man die Fläche des Polygons nach der Gaußschen Trapezformel berechnen:

2 A=\sum_{i=1}^n (y_i + y_{i+1})(x_i-x_{i+1})

Wobei die Indizes, die größer als n sind, immer modulo n betrachtet werden müssen, d.h. mit xn + 1 ist x1 gemeint.

Somit sollte das Berechnen des Polygons kein Problem mehr darstellen.

Mein Script ist in Pyton geschrieben, da ich die Erfahrung gemacht habe, dass man mit dieser Programmiersprache am schnellsten und einfachsten kleine Programme schnuddeln kann.

Script-Download: blumenimgarten.py

Das Script muss in eine Datei kopiert werden, beispielsweise blumenimgarten.py

Man kann das Script interaktiv aufrufen oder mit Parametern:

python blumenimgarten.py inkscapedatei.svg pfadID Factor [nonverbose]
python blumenimgarten.py garten.svg path1234 3450 nonverbose
35.105416684

Der Faktor hilft dem Script die in Inkscape benutzte Längeneinheit in Meter oder Zentimeter umzurechnen. Bei meinem Garten waren 1 m ungefähr 3500 Inkskape-Einheiten. Es gibt bestimmt eine Möglichkeit den Umrechnungsfaktor auszulesen oder zu berechnen, aber das war mir die Mühe nicht wert. Deshalb bietet das Script inkeraktiv an, den Faktor mit Hife einer 1cm / 1m Linie auszumessen.

Das Script ist übrigens nur in der Lage geschlossene Pfade zu vermessen. Wie man einen Pfad schließt sagt dir das Script, wenn du versuchst einen nicht geschlossenen Pfad zu vermessen. Außerdem kann das Script keine Kurven verarbeiten. Nur Polygone mit ausschließlich geraden Kanten. Die Ausgabe erfolgt im Quadrat der Einheit, die du beim Vermessen des Faktors benutzt hast. Benutzt du das Script mit einem 4. Parameter, wird ausschließlich das Ergebnis ausgegeben und kein zusätzlicher Text.

Viel Erfolg beim Vermessen.

——————

Dieser Artikel wurde aus meinem alten Blog hierher verschoben.

Hier noch ein hilfreicher Kommentar mit einer eventuell einfacheren Alternative von Casimir:

Alternativ: Als Pixelgraphik in Gimp öffnen und im Histogramm die Pixel ablesen.

 

 

 

2 comments

  1. Stephan sagt:

    Das kann Inkscape von Haus aus: Erweiterungen -> Pfad visualisieren -> Pfad ausmessen -> Mess-Typ Gebiet

  2. Matthias sagt:

    Hallo 🙂
    Super Tool, ich hab nur ein Problem: Ich kriege es nicht aufgerufen. Bin ein rechter Inkscape-Neuling, daher komm ich mit der Parameter-Aufrufung nicht zurecht. Du hast geschrieben, man könne das Skript interaktiv aufrufen? Wie? 😀
    Dankeschön für deine Arbeit!
    Liebe Grüße

    Matthias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.