Vektor-Raster Beziehungen*

….in Arbeit

Eine häufige Aufgabe ist es, Rasterdaten in Vektordaten zu wandeln (vektorisieren) oder andersrum: Vektordaten in Rasterdaten (rastern). Wir wissen, dass wir bei letzterem immer mit Informations- und Qualitätsverlusten rechnen müssen, da ein Vektor unendlich präzise sein kann und keine festgelegte Auflösung wie ein Raster besitzt. Ein Raster kann außerdem nur einen einzigen Wert pro Pixel abspeichern, während Vektoren hunderte Werte in hunderten Attributen haben können. Dennoch: Es gibt viele Aufgaben die das Rastern (Vektor in Raster wandeln) erforderlich machen. Neben dem Wandeln der Speicherformate gibt es auch die Möglichkeit, aus beiden Formaten Werte in einem Format zusammen zu fassen (Werteabbildung).

Beispielanwendungen

Wandlung: Rasterize Wandlung: Vectorize Wertabbilung: Vektor → Raster Wertabbilung: Raster → Vector
Vereinfachung von Vektordaten (Bereinigen von Topologiefehlern) Höhenlinien oder -Schichten aus DGM Gebäudehöhendaten in DGM einpflegen → DOM Lärmpegel in Gebäudepolygon schreiben
DGM erstellen aus GPS-Tracks oder -Punkten Hangneigungspolygone aus Slope als Gefahrenzonen ausgeben   Durchschnittshöhen in Fluren schreiben

Wertabbilung: Raster -> Vektor

Ein gutes Beispiel hierfür ist eine Lärmkartierung. Bei einer Lärmkartierung wird mit diversen Messverfahren und Methoden, der durchschnittliche örtliche Schalldruckpegel ermittelt. Da dies vor allem in größeren Gebieten (Städte) nicht flächendeckend möglich ist, wird an repräsentativen Orten in einem Raster (z.B. 50m x 50m) der Schalldruck gemessen und die Zwischenwerte interpoliert. Es entsteht eine Rasterkarte, bei welcher jeder Pixel einen Schalldruckpegel-Wert (dB) erhält. Möchte man diese Ergebnisse nun auf Vektoren z.B. Hausfassaden übertragen, so geht das in QGIS u. A. mit dem Standard-Werkzeug Zonenstatistik. Wir benötigen eine Schalldruck-Rasterkarte und einen Polygonlayer mit Hausumringen (Polygonen). Einen Beispieldatensatz (Lärmkarte von Berlin) finden Sie hier: Lärm in Berlin.

Screencast: Rasterwerte in Vektor schreiben (Zonenstatistik)

Das Zonenstatistik-Werkzeug ist weder im Raster- noch im Vektormenü zu finden. Wir müssen es entweder über die Werkzeugkiste Verarbeitung → Werkzeugkiste suchen oder verwenden die neue QGIS3-Indexfuktion, unten links in der Statuszeile. Hier geben wir Zonenstatistk ein und der Verarbeitungsalgorythmus taucht auf.

Die Eingabeparameter sind selbsterklärend. Wir haben die Möglichkeit, verschiedene Statistiken zu wählen.

Man beachte, dass i.d.R. mehrere Pixel unter einem Polygon liegen und deshalb nur deren statistischer oder min-max Wert in das Polygon geschrieben werden kann.

Anders als 95% der anderen Werkzeuge in QGIS, wird kein neuer Layer erstellt, sondern der Vektor-Layer beschrieben. Dafür muss noch nicht einmal der Bearbeitungsmodus aktiv sein!

Mit der Abgestuften Darstellung und dem Modus Quantil können wir unser Gebäudepolygonlayer aussagekräftig visualisieren.  

Eine neue Funktion ab QGIS 3.4 ermöglicht es die Attributtabelle eines Vektorlayers (P,L,F), direkt mit den Werten eines Raster zu füllen. Der Befehl dazu lautet raster_value und kann z.B. über den Feldrechner angewendet werden: raster_value('DEM',1, $geometry) So könnte man Vektoren direkt mit Rasterwerten beschriften oder damit deren Attributtabelle füllen. 

Wertabbilung: Vektor -> Raster

fehlt… 

Rasterize / Rastern

Den Vorgang, Vektordaten (P,L,F) in Rasterdaten zu wandeln, nennt man Rastern oder rasterize. Im folgenden Beispiel werden wir eine Landnutzungsklassifikation (Polygone mit Inseln und Topologiefehlern) in ein Raster wandeln und dann wieder zurück in einen Polygonvektor.

Die Funktion, welche wir suchen finden wir unter Raster → Konvertierung → Raster (Vektor nach Raster)… oder einfach über die Suchfunktion (welche uns gleich mehrere Ergebnisse der unterschiedlichen Provider liefert (SAGA, GDAL, GRASS…)). Wir müssen mehrere Parameter angeben: Einzubrennendes Feld- zwar steht optional dahinter, wenn wir hier aber kein Attribut aus dem Vektorlayer angeben, werden unserem Raster keine Werte in die Pixel geschrieben - es wird einfarbig ohne Information.

Hier zeigt sich, dass unter Umständen Vorarbeit am Vektorlayer nötig ist, denn in ein Raster können nur Zahlenwerte (Ganzzahl) geschrieben werden. Attribute mit Text oder Dezimalzahl stehen zum „einbrennen“ nicht zur Auswahl!

Weiter geben wir die Rasterauflösung (Höhe/Breite) an. Entweder in Pixel oder Karteneinheiten - sofern wir ein metrisches KBS verwenden, entspricht eine Karteneinheit einem Meter.

Die Bezeichnung „Höhe/Vertikale Auflösung“ ist verwirrend - ein Raster ist immer zweidimensional. Mit Höhe ist hier eine der beiden Kantenlängen gemeint.

Bei Ausgabegröße geben wir die Ausdehnung unseres zu erzeugenden Rasters an - wir können frei wählen oder übernehmen die Ausmaße unseres Vektorlayers. Unter Gerastert ist die Ausgabedatei gemeint - wir können einen Ort und Namen angeben oder einen Temporären Layer anlegen (Standart) - wie im Screencast.  

Vectorize / Vektorisieren

Die im vorhergehenenden Schritt erzeugte Rasterdatei wird nun wieder in eine Polygonvektor zurück gewandelt. 

Das GDAL-Werkzeug zum Vektorisieren finden wir unter Raster → Konvertierung → Vektorisieren (Raster nach Vektor)… oder wir verwenden die QGIS-Suche: da finden sich weitere Provider wie GRASS oder SAGA. Im Beispiel verwenden wir aber GDAL - hier gibt es wenige Parameter und die Vektorisierung erfolgt selbsterklärend. Als Ergebnis erhalten wir einen neuen Vektorlayer, welcher nach der einen im Raster vorkommenden Klasse erstellt wurde. Alle Überschneidungen, Inseln, Multipolygone und Topologiefehler aus dem ursprünglichen Vektor-Datensatz sind gelöscht bzw. bereinigt. Das kann für manche Aufgabenstellungen durchaus wünschenswert sein!

Der Unterschied zwischen Orginal-Vektor und zurückgewandeltem Vektor wird am Ende des Screencast's verdeutlicht. Beide Layer werden mit den gleichen Stil-Einstellungen dargestellt (Copy and Paste).

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen: