Geländemodellierung mit Python, GPSVisualizer und BricsCAD/AutoCAD (Software)

Martin Vogel ⌂ @, Dortmund / Bochum, Sat, 04.06.2016, 22:15 (vor 2853 Tagen)

Zur groben Modellierung von Geländekörpern setze ich seit ein paar Jahren ein Pythonskript ein, das eine Liste mit Geländepunkten (Längengrad, Breitengrad, Höhe über NN) zuerst in ein Dreiecksnetz überführt (ich verwende die Scipy-Funktion Delaunay zur Triangulierung) und in einem zweiten Schritt eine Scriptdatei für AutoCAD oder BricsCAD erzeugt, mit welcher das CAD-Programm ein 3D-Prismenfeld generiert, das dann zu einem einzigen Volumenkörper vereinigt werden kann.

Gegenüber einem Oberflächennetz hat so ein Volumenkörper den Vorteil, dass er für Massenberechnungen herangezogen werden kann, um beispielsweise Aushubs- oder Auftragsvolumina zu bestimmen. Ein weiteres wichtiges Anwendungsgebiet ist die Bestimmung des Volumens von Überflutungsgebieten im Hochwasserschutz und für den Talsperrenbau.

Eine Datei mit solchen Geländepunkten kann man beispielsweise über die Website GPSVisualizer.com erzeugen.

[image]
Neuer Lennestausee in Altena. Stauziel: Burg Altena

Leider ist die Installation der Python-Module Numpy und Scipy für viele Windows- und Mac-User ein Problem. Da beide Betriebssysteme nicht wie Linux über eine ordentliche Paketverwaltung verfügen, bei der man einfach ein Häkchen vor das gewünschte Programm setzt und auf "Installier mir das!" klickt, sondern stattdessen auf irgendwelchen Drittanbieterseiten nach fertig konfektionierten Binärdateien suchen muss, landen viele bei Softwaremonstern wie "Anaconda", welche mal eben rund 350 Megabyte an nicht immer benötigter Software auf der Festplatte ablegen. Wer ungeschickte Mausfinger hat, installiert sich vielleicht noch ganz andere "Extras".

Um die Abhängigkeit von Numpy und Scipy loszuwerden, habe ich heute einen alternativen Triangulierungsalgorithmus entwickelt, der keine Python-Module benötigt, die nicht in der Grundinstallation enthalten sind. Der Algorithmus generiert zunächst sämtliche möglichen Verbindungslinien zwischen allen Punkten. Bei n Punkten sind das (n²-n)/2 mögliche Linien. Diese Linien werden nach Länge sortiert. Bei der kürzesten Linie beginnend, werden nun alle Linien herausgesucht, die keine kürzeren Linien schneiden. Dies sind die Kanten des Dreiecksnetzes. In einem zweiten Schritt werden daraus Dreiecke gebildet, indem für jede Linie die Punkte gesucht werden, die durch andere Linien sowohl mit dem Anfangs- als auch mit dem Endpunkt der Linie verbunden sind.

Aus diesen Dreiecken und den Höheninformationen der Eckpunkte erzeugt das Programm nun das Prismenfeld für das CAD-Script.

[image]
Python-Triangulation

[image]
BricsCAD nach der Ausführung der erzeugten Script-Datei

Das Programm steht unter einer Creative-Commons-Lizenz.
Sie dürfen es vervielfältigen und weiterverbreiten, es verändern und erweitern, solange Sie angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, ich unterstütze gerade Sie oder Ihre Nutzung besonders.

Download:
[image][image]ZIP-Archiv_0JVTAP0W1.zip

--
Dipl.-Ing. Martin Vogel
Leiter des Bauforums

Bücher:
CAD mit BricsCAD
Bauinformatik mit Python


gesamter Thread:

 RSS-Feed dieser Diskussion

powered by my little forum