Höhenmodell Nordrheinwestfalen (Software)

Martin Vogel ⌂ @, Dortmund / Bochum, Donnerstag, 09.03.2017, 15:35 (vor 617 Tagen)

Seit Beginn dieses Jahres sind digitale Höhenmodelle für ganz NRW frei herunterladbar. Die Dateien haben wahlweise eine Auflösung von einem Meter und folgen einem quadratischen Raster, wobei immer Bereiche von 2000×2000 Quadratmetern zu einer Datei zusammengefasst sind, oder sie haben eine variable Auflösung von im Mittel vier Punkten pro Quadratmeter bei unregelmäßiger Anordnung.

Die Digitalen Geländemodelle im 1-Meter-Raster lassen sich natürlich besonders einfach verarbeiten. Das Bild zeigt die Stadt Bochum in einem BricsCAD-Oberflächenmodell, für das zur schnelleren Verarbeitung nur ein Höhenpunkt pro 25 Meter in x- und y- Richtung verwendet wurde. Die Höhen wurden hier um den Faktor 10 vergrößert.

[image]
Datenquelle: https://www.opengeodata.nrw.de/produkte/geobasis/dgm/dgm1/dgm1_05911000_Bochu...
Lizenz: Datenlizenz Deutschland - Namensnennung - Version 2.0

Download: Geobasis NRW → Digitale Höhenmodelle → Digitale Geländemodelle (DGM)

Außer dem für Geländearbeiten notwendigen Digitalen Geländemodell sind noch weitere Daten verfügbar, beispielsweise ein Digitales Oberflächenmodell, auf dem auch Gebäude erfasst sind, sowie ein Digitales Gebäudemodell mit (vereinfachten) Darstellungen aller Gebäude in NRW.

Das von mir verwendete Pythonprogramm zum Auslesen der für Bochum heruntergeladenen Höhendaten und deren Umsetzung in ein Skript für AutoCAD oder BricsCAD sieht so aus:

  1. import os
  2.  
  3. # Datenquelle:
  4. # http://www.bezreg-koeln.nrw.de/
  5. # brk_internet/geobasis/hoehenmodelle/gelaendemodelle/
  6.  
  7. # Drei Werte sind ggf. von Hand zu ändern: ordner, nth und ü
  8.  
  9. # Die Dateien der ausgepackten ZIP-Datei sind in diesem Ordner:
  10. ordner = "dgm1_05911000_Bochum_EPSG4647_XYZ" # Bochum
  11.  
  12. # Ausdünnung: nur jeder n-te Punkt in x- und y-Richtung
  13. nth = 100 # Zwischen 1 und 100!
  14.  
  15. # Überhöhung
  16. ü = 10 # Standard: 1
  17.  
  18. with open("3dnetz.scr","w") as scr:
  19. scr.write("OSnapCoord 1 ")
  20. scr.write("APunkt -1,-2,2 ")
  21.  
  22. auszuwerten = os.listdir(ordner)
  23. fn = 0
  24.  
  25. for f in auszuwerten:
  26. fn += 1
  27. print("Datei %i von %i: %s"%(fn,len(auszuwerten),f))
  28.  
  29. # Möglicher Dateiname:
  30. # dgm1_32368_5700_2_nw.xyz
  31. fs = f.split("_")
  32. fx = float(fs[1])
  33. fy = float(fs[2])
  34.  
  35. D =[]
  36. with open(ordner+"/"+f) as dgm:
  37. n = 0
  38. Z = []
  39. for zeile in dgm:
  40. # Beispiel:
  41. # 32372000.00 5706000.00 61.32
  42. Z.append(zeile.split())
  43. if ü != 1:
  44. Z[-1][2] = str(float(Z[-1][2]))
  45. n += 1
  46. if n == 2000:
  47. D.append(Z)
  48. Z = []
  49. n = 0
  50.  
  51. with open("3dnetz.scr","a") as scr:
  52. scr.write("rechteck %f,%f %f,%f "%(
  53. fx*1000,fy*1000,(fx+2)*1000,(fy+2)*1000))
  54. dxf.write("zoom g ")
  55. for X in range(100//nth):
  56. for Y in range(100//nth):
  57. dxf.write("3dnetz 21 21 ")
  58. for x in range(21):
  59. for y in range(21):
  60. try:
  61. scr.write(
  62. ",".join(D[(Y*20+y)*nth][(X*20+x)*nth])+" ")
  63. except: # wenn Randelement 21 nicht verfügbar
  64. x1 = 1 if x==20 else 0
  65. y1 = 1 if y==20 else 0
  66. scr.write(
  67. ",".join(D[(Y*20+y)*nth-y1]
  68. [(X*20+x)*nth-x1])+" ")
  69.  
  70.  
  71. print("Fertig. "
  72. "Script 3dnetz.scr kann in AutoCAD oder BricsCAD gestartet werden.")

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

Heute schon programmiert? Einführung in Python 3 (PDF)

Bochum für 3D-Drucker

Martin Vogel ⌂ @, Dortmund / Bochum, Samstag, 11.03.2017, 12:52 (vor 615 Tagen) @ Martin Vogel

Fall sich jemand das Höhenmodell von Bochum auf einem 3D-Drucker selbst ausdrucken möchte: Eine entsprechende STL-Datei ist jetzt auf Thingiverse herunterladbar: Bochum[image]

Das STL-Modell hat den Längenmaßstab 1:1.000.000 und den Höhenmaßstab 1:100.000. Wenn das Druckbett mindestens 18×16 cm² groß ist, lässt sich der Maßstab auf 1:100.000/1:10.000 reduzieren. Die Auflösung entspricht im Gelände 50 Metern vertikal und 2 Metern horizontal, das sollte gut zur mechanischen Genauigkeit der meisten 3D-Drucker passen.

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

Heute schon programmiert? Einführung in Python 3 (PDF)

Architekturfreie Daten

Martin Vogel ⌂ @, Dortmund / Bochum, Samstag, 18.03.2017, 18:20 (vor 608 Tagen) @ Martin Vogel

Das Digitale Geländemodell enthält übrigens kein einziges Werk der Architektur. Sämtliche Gebäude wurden aus den Daten herausgerechnet. Einige Bauwerke jedoch sind erhalten geblieben, weil die Landschaft ohne sie keinen Bestand hätte, so wie hier die Staumauer der Glörtalsperre:
[image]

Leider sind auch umgekehrt Landschaftsbestandteile weggerechnet worden, wenn der Filteralgorithmus sie für Gebäude hielt. Meinen Plan, mir ein 3D-Modell der Externsteine auszudrucken, muss ich deshalb leider noch ein wenig verschieben.

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

Heute schon programmiert? Einführung in Python 3 (PDF)

RSS-Feed dieser Diskussion
powered by my little forum