Durch einen Auftrag der Firma coobx AG aus Liechtenstein, erhielten wir Zugang zu den Swisstopo swissALTI3D xyz Daten 5m Auflösung aller Gemeinden in Liechtenstein. Wir sollten daraus ein Relief der Grösse 2000 x 1000 x = erstellen. Hier beschreiben wir unser Vorgehen und die Erfahrungen, die wir dabei gemacht haben. Der Preis der Daten variert je nach gewünschtem Perimeter und der Verwendung.
1) QGIS – Daten öffnen und konvertieren
- Daten im Format xyz space delimited als neuen Rasterlayer importiert KBS: CH1903
- Daten sind bereits auf die Fläche von Liechtenstein geschnitten
- Konvertiert und exportiert in GeoTIFF
2) 3DEM – Qualität und konvertieren
- Importieren des GeoTIFF wirft Fehlermeldung
- Im Beipackzettel von SwissTopo nachgeschaut
<terrainSpatialReference name=“CH1903_LV03″/>
<terrain_linear_unit name=“Meter“/>
<extentAsString name=“754326.81375 212825.365 766877.4175 237729.58625″/>
<output_raster_format name=“Xyz space delimited“/>
<cellsize name=“5″/>
<interpolation_method name=“Linear“/>
<exportedRasterStatistics number=“1″ size=“316.4362″/>
Diese Werte beim Import als Eckkoordinaten angegeben.
- Missing Data gefüllt
- Exportieren als DEM, dabei wird die UTM Zone abgefragt. Wir finden heraus, dass die Schweiz mehrheitlich in der Zone UTM 32 Nord liegt.
3) AccuTrans 3D – Relief erstellen- Daten können als DEM nicht fehlerfrei importiert werden
- Via „Terrain Matrix Export“ von 3DEM über „ASCII to DEM“ nach AccuTrans3D. Beim Import benötigen wir die Information über 5×5 m Auflösung, und die Anzahl Spalten und Zeilen (2511 cols, 4981 rows).
- Umwandlung 2D -> 3D mit voller Auflösung, Werte unter 0 abgeschnitten. Benötigt 6 GB RAM und ein paar Minuten Rechenzeit auf meinem Notebook. Drehen der Ansicht von da an nur noch mit massiven Verzögerungen möglich.
-
Verifizieren der Daten: Sehr genau, der höchste Punkt Liechtensteins liegt laut Wikipedia auf 2599müM, unsere Daten zeigen ein Z-Maximum von 2600.33 m.
-
Extrude mit flachem Boden auf nächste Ganzzahl gerundet, damit der Boden auch wirklich flach gemacht wird. Benötigt 12 GB RAM, mehr steht nicht zur Verfügung.
-
Drehen 90° um X und MIN X,Y,Z auf 0 setzen, auf 2000 mm NS skalieren
-
Export als STL Binary in voller Auflösung, 79.8 Mio Vertices. Gewaltig, welche Details dabei erkennbar bleiben. Dateigrösse 1.23 GB.
4) Netfabb Studio – Relief in druckbare Teile schneiden
-
Beim Versuch zu importieren bekommen wir eine Fehlermeldung, dass zuwenig Speicher zur Verfügung steht.
-
Weitere Versuche mit verkleinerter Datenmenge scheitern ebenfalls entweder am Import, oder dann beim Schneiden.
Also zurück zu (Feld) 1:
1) QGIS – Quelldaten in Teile schneiden
-
Datensatz mit Hilfe des Taschenrechners der Länge nach in 10 Teile schneiden. Da die Stücke quadratisch sein sollen, ergibt sich die Unterteilung in der Breite von selber.
-
Aus den Metadaten lesen wir die Ausdehnung der Daten aus (754326.81375 212825.365 766877.4175 237729.58625). Daraus berechnen wir, wie gross jedes Teil sein soll, und welche Eckkoordinaten sich daraus zum Schneiden in QGIS ergeben. Die selben Informationen benötigen wir dann auch wieder, wenn wir die Daten in 3DEM öffnen wollen. Jedes Teil soll 2490.422125 lang und breit werden, und aus 498.1 Zellen (9x 498, und ein Stück 499 Zellen) bestehen.
-
Das erste Teilstück unten links hat also die Ausdehnung:
01: 754326.81375 212825.365 756817.235875 215315.787125, welche wir so aus den Daten ausschneiden und als GeoTIFF 01 speichern.
2) 3DEM
- GeoTIFF Teilstück 01 zu DEM
- Export mit UTM Zone 32 Nord
3) AccuTrans3D
- Beim Umwandeln in AccuTrans3D von 2D in 3D schneiden wir weg, was unterhalb der Minimalhöhe von 426müM liegt.
- Extrude mit Thickness 1 und flachem Boden.
-
Verkleinern auf maximal 200 x 200 x 200 mm. Ergibt abgerundet einen Skalierungsfaktor von 0.08
-
Export als STL Binary
4) Cura – Verifizieren des Teils
Analog zum Teilstück 01 entstehen nun die weiteren Teile des Reliefs. Wir schreiben uns dabei alle Eckkoordinaten sauber auf, damit wir nichts durcheinander bringen, wenn wir unsere Arbeit mal unterbrechen müssen.
Wir bemerken während der Verarbeitung von Teil 13, dass die minimale Höhe dieses Teilstücks lediglich 651müM beträgt, und wir somit das Teil zuwenig hoch produzieren, wenn wir nicht entsprechend zur Differenz, mit Berücksichtigung des Massstabs, einen Sockel darunter generieren lassen. Die Teile davor hatten alle eine minimale Höhe von 425müM, was beim Blockrelief generieren die selbe Basis ergab.
Für Teile die eine minimale Höhe unterschiedlich zu 425müM haben, müssen wir errechnen, welche Höhe der darunter generierte Sockel haben muss, damit die Einzelteile zusammen passen. In unserem Post zur Auftrennung des Yellowstone-Reliefs haben wir die Methode beschrieben, jedem Stück beim Extrude den Sockel seines min. Z zu geben. Wir wandeln das leicht ab, und geben jedem Stück einen Sockel runter bis zu 425müM.
Einige Zeit später entdecken wir, dass einige Teile so leider sehr flach werden. Wir erstellen in AccuTrans3D einen weiteren Satz STL-Dateien. Die Basis dieser Teile legen wir bei 200müM fest, um die flachen Teile so dicker, und damit besser druckbar zu machen. Wir schneiden die Daten neu erst bei 425.5müM, da es beim letzten Teil im Norden im Bereich des Rheins Löcher gab beim Schneiden auf 426müM.
Das Resultat sieht sehr gut aus, nun müssten wir es nur noch drucken 😉 Wer Drucken möchte, kann sich die 41 Teile des Designs von Liechtenstein herunterladen. Hier einige Screenshots von Teilstücken aus Cura:
Weitere Ideen, welche wir ausprobiert haben, die sich aber nicht durchsetzen konnten:
- RAM im Notebook auf 32 GB aufrüsten
-
Einfache Tools um Meshes zu schneiden?
-
In AccuTrans 3D nicht die volle Auflösung verwenden bei 2D -> 3D
-
Meshlab: Anzahl Vertices halbieren, vierteln, achteln
Import nach Netfabb:
– Halbe Grösse beginnt zu importieren, liefert aber dann auch Out of Memory Fehler
– Viertelgrösse kann importiert werden, aber nicht geschnitten danach?! Out of Memory
– Achtelgrösse kann importiert und geschnitten werden, nur erscheinen keine Einzelteile? -
Netfabb Support anfragen, wo das Speicherlimit von Netfabb Studio liegt -> Antwort: Wir verwenden eine alte 32bit-Version.
-
FreeCAD Plugin Arch SplitMesh, benötigt allerdings DAE Format. Also wandeln wir mit Meshlab um. Kann nicht importiert werden.
-
OpenSCAD
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/STL_Import_and_Export
https://www.thingiverse.com/thing:6051
https://www.thingiverse.com/thing:7261
https://www.thingiverse.com/thing:35834
https://www.3ders.org/articles/20130111-puzzlecut-lets-you-cut-object-into-smaller-pieces-for-3d-printing.html
- Meshmixer Plane Cut, allerdings sieht man da nicht an welcher Stelle geschnitten wird.
Kommentare