Bauforum-Logo

Offenes Forum Bauingenieurwesen

log in | registrieren

zurück zum Forum
  Mix-Ansicht

Höhenmodell Nordrheinwestfalen (Software)

verfasst von Martin Vogel Homepage E-Mail, Dortmund / Bochum, 09.03.2017, 15:35 Uhr

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_Bochum_EPSG4647_XYZ.zip
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:

import os

# Datenquelle:
# http://www.bezreg-koeln.nrw.de/
#        brk_internet/geobasis/hoehenmodelle/gelaendemodelle/

# Drei Werte sind ggf. von Hand zu ändern: ordner, nth und ü

# Die Dateien der ausgepackten ZIP-Datei sind in diesem Ordner:
ordner = "dgm1_05911000_Bochum_EPSG4647_XYZ"  # Bochum

# Ausdünnung: nur jeder n-te Punkt in x- und y-Richtung
nth = 100  # Zwischen 1 und 100!

# Überhöhung
ü = 10  # Standard: 1

with open("3dnetz.scr","w") as scr:
    scr.write("OSnapCoord 1 ")
    scr.write("APunkt -1,-2,2 ")

auszuwerten = os.listdir(ordner)
fn = 0

for f in auszuwerten:
    fn += 1
    print("Datei %i von %i: %s"%(fn,len(auszuwerten),f))

    # Möglicher Dateiname:
    # dgm1_32368_5700_2_nw.xyz
    fs = f.split("_")
    fx = float(fs[1])
    fy = float(fs[2])

    D =[]
    with open(ordner+"/"+f) as dgm:
        n = 0
        Z = []
        for zeile in dgm:
            # Beispiel:
            # 32372000.00 5706000.00   61.32
            Z.append(zeile.split())
            if ü != 1:
                Z[-1][2] = str(float(Z[-1][2])*ü)
            n += 1
            if n == 2000:
                D.append(Z)
                Z = []
                n = 0

    with open("3dnetz.scr","a") as scr:
        scr.write("rechteck %f,%f %f,%f "%(
            fx*1000,fy*1000,(fx+2)*1000,(fy+2)*1000))
        dxf.write("zoom g ")
        for X in range(100//nth):
            for Y in range(100//nth):
                dxf.write("3dnetz 21 21 ")
                for x in range(21):
                    for y in range(21):
                        try:
                            scr.write(
                                ",".join(D[(Y*20+y)*nth][(X*20+x)*nth])+" ")
                        except: # wenn Randelement 21 nicht verfügbar
                            x1 = 1 if x==20 else 0
                            y1 = 1 if y==20 else 0
                            scr.write(
                                ",".join(D[(Y*20+y)*nth-y1]
                                         [(X*20+x)*nth-x1])+" ")


print("Fertig. "
      "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)

antworten
 



gesamter Thread:

zurück zum Forum
  Mix-Ansicht
Offenes Forum Bauingenieurwesen | Kontakt | Impressum
8419 Postings in 4025 Threads, 1093 registrierte User, 24 User online (0 reg., 24 Gäste)
powered by my little forum  RSS-Feed  ^
map | new