Blog-Eintrag vom November, 2019

Ich arbeite gerade an einem QGIS-Modell zur Erzeugung von DEMs aus Punktlayern (Abb. 1). Eigentlich sollte das ja ein sehr simples Modell sein, aber das Problem hierbei ist, dass die geeigneten Algorithmen (saga:triangulation und saga:interpolatecubicspline) über die eigentlichen Layergrenzen hinaus interpolieren (Abb. 2 u. 3) und die jeweilen Outputs daher entsprechend zugeschnitten werden müssen.

Abb. 1 Modell "createDEM"

Abb. 2 "Triangulation"-Output und Layergrenzen

Cubic Spline-Output und LayergrenzenAbb. 3 "Cubic Spline"-Output und Layergrenzen



Ein Maskenlayer ist vorhanden, aber dieser besteht aus mehreren Polygonen, von denen jeweils eins als Maskenobjekt ausgewählt werden muss. Eine Auswahl über eine räumliche Abfrage mit Punkt- und Polygonlayer ist nur bedingt möglich, denn teilweise überschneiden sich die Polygone, die mit den Punktlayern korrespondieren (Abb. 4).

Sich überschneidende Punktlayer und Polygonobjekte eines Layers, der als Maskenlayer dientAbb. 4 Sich überschneidende Punktlayer und Polygonobjekte eines Layers, der als Maskenlayer dient


Exakter wäre es, die Polygone über eine eindeutige ID mit dem dazugehörigen Punktlayer zu verknüpfen und dann per SQL-Abfrage die Polygone auszuwählen, deren ID mit der des Punktlayers übereinstimmt. Dazu muss es in der Attributtabelle des Punktlayers eine Spalte geben, in der jeder Punkt dieselbe ID besitzt wie das entsprechende Polygonobjekt. Eine solche Spalte ist aber nicht von vornherein vorhanden, sondern muss manuell hinzugefügt werden; zwar ist es möglich, diesen Parameter vor dem Start des Modells einzugeben (Abb. 5), aber die Frage wäre, ob es auch noch eine Methode gäbe, mit der man auch diesen Schritt noch automatisieren kann?


Abb. 5 Screenshot mit Eingabemaske für das Modell "createDEM" (Batchprozess)





Sarvenaz Parsa stellt ihr Problem vor: Sie versucht die Höhen bestimmter Fundstellen im Iran mit einander zu vergleichen. Für ihr Fragestellung wäre es relevant, die Höhe einer Fundstelle über ihrer unmittelbaren Umgebung zu ermitteln. Die verfügbaren DEM's liefern hierfür aber nur Höhen über dem Meeresspiegel.

Lösungen

  1. Ein primitver Ansatz wäre einen Buffer um die Fundstelle zu erstellen (z. B. Vector > Geoprocessing Tools > Buffer, oder GRASS v.buffer) und diesen wie unter zweitens beschrieben mit Zonal Statistics abzufragen (Lösungsvorschlag: Lukas Goldmann)
  2. In QGIS 3.8 vorgestellt GRASS-Tool v. geomorph oder r.geomorphon erlaubt die automatische Klassifizierung von Gelände in die gängisten Geländeformen. Die so enstandenen Klassen können über Raster > Conversion Polygonize (Raster to Vector) einfach automatisch vektorisiert werden. Die so entstandenen Polygonen können mithilfe des Tools Zonal statistics wiederum genutzt werden, um statistische Werte aus dem zugrundeliegenden DEM abzufragen. Zonal Statistics bietet unter Statistics to calculate diverse Optionen an. Wenn wie im hier vorliegenden Fall die Höhe von auf Bergen gelegenen Fundstellen mit der durchschnittlichen Höhe umgebender Ebenen verglichen werden soll, können hier z. B. die Optionen Mean oder Median gewählt werden. Nedian ist zu empfehlen, da es weniger Anfällig für Ausreißer ist. Die jeweilgen Werte werden als neue Spalten in die Attributtabelle des neu erstellten Polygonvektorlayers geschrieben. (Lösungsvorschlag: Fabian Zielke/Lukas Goldmann)