Python-Projekt zur automatischen Baumrastererstellung

Dieser Python-Code ist ein Werkzeug zur automatisierten Generierung von Baumdarstellungen innerhalb von definierten Flächen, die aus verschiedenen Vektordatenformaten (DXF, SVG, Shapefile) importiert werden können. Die generierten Baumpositionen können dann in verschiedene Ausgabeformate (DXF, SVG, Shapefile) exportiert werden.

Was dieser Code macht:

  1. Importieren von Vektordaten:
    • Er kann Geometrien aus DXF-, SVG- und Shapefile-Dateien einlesen.
    • Für DXF-Dateien werden LWPOLYLINE, POLYLINE und LINE-Entitäten verarbeitet.
    • Für SVG-Dateien werden Pfade extrahiert.
    • Für Shapefiles werden Polygone und Linien extrahiert.
  2. Benutzereingabe:
    • Über ein tkinter-basiertes GUI werden Parameter wie die Auflösung der Baumkronen (als Polygone), die Anzahl unterschiedlicher Baumdurchmesser, deren Durchmesser, prozentualer Anteil und Farbe abgefragt.
    • Es gibt eine Option, Bäume in Clustern anzuordnen, und der Benutzer kann den Prozentsatz der Bäume festlegen, die geclustert werden sollen.
    • Der Benutzer kann die gewünschten Ausgabeformate (Shapefile, SVG, DXF) auswählen.
    • Der Benutzer kann wählen, ob nur zufällige, nur Cluster-basierte oder beide Varianten der Baumverteilung generiert werden sollen.
  3. Baumplatzierung:
    • Die Funktion generate_tree_positions platziert Bäume innerhalb der importierten Geometrien.
    • Sie berücksichtigt die angegebenen Durchmesser und deren prozentualen Anteil an der Gesamtbaumbepflanzung.
    • Es wird überprüft, ob neu platzierte Bäume mit bestehenden Bäumen überlappen, um realistische Abstände zu gewährleisten.
    • Für die Platzierung wird die shape_path.contains_point-Methode verwendet, um sicherzustellen, dass Bäume innerhalb der definierten Form platziert werden.
    • Es gibt eine Logik zur Erstellung eines Rasterpunktrasters für den Fall, dass nur ein Baumdurchmesser verwendet wird, was eine gleichmäßigere Verteilung ermöglicht.
  4. Interaktive Vorschau:
    • Es wird ein separates tkinter-Fenster mit einer matplotlib-Visualisierung der importierten Geometrie und der generierten Bäume angezeigt.
    • Ein Slider ermöglicht die interaktive Anpassung der „Füllungsintensität“, was die Dichte der platzierten Bäume beeinflusst.
    • Dies erlaubt dem Benutzer, die Baumplatzierung vor dem endgültigen Export zu überprüfen und anzupassen.
  5. Export in verschiedene Formate:
    • Die generierten Baumpositionen werden zusammen mit den importierten Geometrien in die ausgewählten Ausgabeformate exportiert.
    • DXF: Bäume werden als Kreise auf separaten Layern nach ihrem Durchmesser gezeichnet. Die Farben werden als True-Color-Werte gespeichert.
    • SVG: Die Visualisierung (inklusive der Bäume) wird als SVG-Datei gespeichert.
    • Shapefile: Bäume werden als Polygone (approximierte Kreise) mit Attributen wie ID, Radius, Durchmesser und Farbe gespeichert. Der Benutzer wird nach dem Koordinatensystem (EPSG-Code) gefragt, falls es nicht aus der Eingabedatei übernommen werden kann.
  6. Batch-Verarbeitung:
    • Der Code ermöglicht die Auswahl mehrerer Eingabedateien für die Verarbeitung, wodurch eine Batch-Verarbeitung möglich ist.
  7. Skalierung für SVG:
    • Für SVG-Dateien fragt der Code nach einer maximalen Länge und skaliert die importierte Geometrie entsprechend. Dies ist nützlich, um SVG-Zeichnungen auf eine bestimmte Größe zu bringen.
  8. Eindeutige Dateinamen:
    • Die Funktion get_unique_filename stellt sicher, dass beim Export keine Dateien überschrieben werden, indem eindeutige Dateinamen generiert werden (z.B. durch Hinzufügen von Versionsnummern).

Was diesen Code besonders macht:

  • Integration verschiedener Formate: Die Fähigkeit, sowohl CAD-Formate (DXF, DWG) als auch GIS-Formate (Shapefile) und Grafikformate (SVG) zu lesen und zu schreiben, macht ihn sehr flexibel und vielseitig einsetzbar.
  • Interaktive Baumplatzierung: Die Vorschaufunktion mit dem Füllintensitäts-Slider ermöglicht eine intuitive Anpassung der Baumdichte und -verteilung. Dies ist ein großer Vorteil gegenüber rein algorithmischen Ansätzen.
  • Berücksichtigung von Baumdurchmessern und Proportionen: Die Möglichkeit, verschiedene Baumdurchmesser mit unterschiedlichen Anteilen und Farben zu definieren, ermöglicht realistischere und differenziertere Pflanzpläne.
  • Optionale Clusterbildung: Die Möglichkeit, Bäume in Clustern anzuordnen, kann die Natürlichkeit der Pflanzung erhöhen.
  • Benutzerfreundliche GUI: Die tkinter-Oberfläche erleichtert die Bedienung, auch für Benutzer ohne tiefe Programmierkenntnisse.
  • Umfassende Parametrisierung: Viele Aspekte der Baumplatzierung und des Exports sind konfigurierbar.
  • Behandlung von Koordinatensystemen: Die Berücksichtigung von Koordinatensystemen beim Export von Shapefiles ist wichtig für die Integration in GIS-Systeme.

Anwendungsbeispiele in einem landschaftsarchitektonischen Projekt:

  1. Erstellung von Pflanzplänen:
    • Der Code kann verwendet werden, um automatisch Baumstandorte innerhalb von Projektgrenzen zu generieren, die durch DXF-Pläne (z.B. Gebäudegrundrisse, Wegeführungen), SVG-Zeichnungen oder Shapefiles (z.B. Grundstücksgrenzen) definiert sind.
    • Landschaftsarchitekten können verschiedene Baumarten und -größen mit entsprechenden Proportionen festlegen und die Software die Platzierung übernehmen lassen.
    • Die interaktive Vorschau ermöglicht es, die Dichte und Verteilung der Bäume zu visualisieren und anzupassen, um ästhetische und funktionale Anforderungen zu erfüllen (z.B. Sichtachsen, Schattenspenden).
  2. Visualisierung von Baumpflanzungen:
    • Die SVG-Exportfunktion ermöglicht die Erstellung von Vektorgrafiken, die für Präsentationen und Pläne verwendet werden können. Die farbliche Unterscheidung der Baumkronen nach Durchmesser erhöht die Verständlichkeit.
  3. Erstellung von technischen Zeichnungen:
    • Der DXF-Export ermöglicht die Integration der Baumstandorte in CAD-Pläne für die Bauausführung. Die Layer-basierte Organisation nach Baumdurchmesser kann die Organisation und Bearbeitung im CAD erleichtern.
  4. Datenerfassung für GIS:
    • Der Shapefile-Export ermöglicht die Übergabe der Baumstandorte und ihrer Attribute (Durchmesser, Farbe) an GIS-Systeme für weitere Analysen (z.B. Berechnung der Baumkronenfläche, räumliche Beziehungen zu anderen Elementen).
  5. Entwurfsiterationen und Variantenstudien:
    • Durch die einfache Parametrisierung können schnell verschiedene Pflanzvarianten mit unterschiedlichen Baumgrößen, Dichten und Anordnungen generiert und verglichen werden. Die Möglichkeit, zufällige und Cluster-basierte Anordnungen zu generieren, bietet Flexibilität bei der Gestaltung.
  6. Bestandsaufnahme und Analyse:
    • Wenn vorhandene Baumstandorte in einem der unterstützten Formate vorliegen, könnte der Code angepasst werden, um diese zu visualisieren oder Analysen auf Basis der Baumdurchmesser durchzuführen.

Zusammenfassend lässt sich sagen, dass dieser Code ein wertvolles Werkzeug für Landschaftsarchitekten ist, um den Prozess der Baumplatzierung in Entwürfen zu automatisieren und zu visualisieren, die Effizienz zu steigern und kreative Möglichkeiten zu eröffnen. Die Kombination aus der Unterstützung verschiedener Dateiformate, der interaktiven Vorschau und der flexiblen Parametrisierung macht ihn zu einem mächtigen Instrument für die Planung und Dokumentation von Baumpflanzungen.

is loading …