17.10. Der Rasterrechner. Nullwerte

Bemerkung

In dieser Lektion werden wir lernen, wie man den Rasterrechner verwendet, um Operationen mit Rasterlayern auszuführen. Wir werden außerdem erläutern, worum es sich bei Leerwerten handelt und wie der Rechner und andere Algorithmen damit umgehen.

Der Rasterrechner ist einer der mächtigsten Algorithmen, die zur Verfügung stehen. Er ist sehr flexibel und vielseitig und kann für viele verschiedene Berechnungen verwendet werden. Er wird sehr schnell ein wichtiger Teil Ihrer Werkzeugkiste werden.

In dieser Lektion werden wir einige Berechnungen mit dem Rasterrechner ausführen. Die meisten davon sind eher einfach. Wir erfahren wie er verwendet wird und wie er sich in einigen speziellen Situationen verhält. Das Verständnis hierzu ist wichtig, um später die erwarteten Ergebnisse bei der Verwendung des Rechners zu erhalten und bestimmte Techniken, die in der Regel mit dem Rechner verwendet werden, zu verstehen.

Öffnen Sie das zu dieser Lektion gehörende QGIS Projekt. Sie werden sehen, dass es mehrere Rasterlayer enthält.

Öffnen Sie nun die Verarbeitungswerkzeuge und dort den Raster calculator.

../../../_images/calculator_dialog.png

Bemerkung

Die Schnittstelle unterscheidet sich in neueren Versionen.

Der Dialog enthält 2 Parameter.

  • Die für die Analyse genutzten Layer. Hierbei handelt es sich um eine Mehrfacheingabe, d.h. man kann so viele Layer auswählen, wie man möchte. Klicken Sie auf den Knopf auf der rechten Seite und wählen die Layer aus, die Sie verwenden möchten.

  • Die anzuwendende Formel. Die Formel verwendet die ausgewählten Layer, die mit Buchstaben als Variablen benannt werden (a, b, c...) oder g1, g2, g3... Das bedeutet, die Formel a + 2 * b ist dasselbe wie g1 + 2 * g2, sie berechnet die Summe der Werte des ersten Layers und dem zweifachen der Werte des zweiten Layers. Die Ordnung der Layer ist dieselbe wie im Auswahldialog.

Warnung

Der Rechner unterscheidet zwischen Groß- und Kleinschreibung.

Am Anfang ändern wir die Einheit des DEM von Meter auf Fuß. Wir benötigen die folgende Formel:

h' = h * 3.28084

Wählen Sie das DEM im Layer Feld und geben als Formel a * 3.28084 ein.

Warnung

Für Benutzer, die nicht englisch verwenden: nutzen Sie immer „.“ und nicht „,“.

Klicken Sie auf Starte um den Algorithmus zu starten. Wir erhalten einen mit der Quelle vergleichbaren Layer aber mit abweichenden Werten. Der Eingabelayer hat für alle Zellen gültige Werte, so dass der letzte Parameter keine Auswirkung hat.

Wir werden nun eine weitere Berechnung durchführen, dieses Mal mit dem Layer accflow. Dieser Layer enthält Werte des akkumulierten Abflusses - ein hydrologischer Parameter. Er enthält diese Werte nur innerhalb der Fläche eines gegebenen Einzugsgebietes und außerhalb Leerwerte. Wie man sieht, ist die Ausgabe aufgrund der Verteilung der Werte nicht sehr informativ. Die Verwendung des logarithmierten akkumulierten Abflusses liefert eine deutlich informativere Repräsentation. Wir verwenden zur Berechnung den Rasterrechner.

Öffnen Sie den Dialog des Algorithmus noch einmal, wählen den Layer accflow als Eingabelayer und geben die folgende Formel vor: log(a).

Wir erhalten den folgenden Layer.

../../../_images/log.png

Wir können die Werte des Layers mit Hilfe des Abfrage Werkzeuges an jedem Punkt ermitteln. Wenn wir außerhalb des Layers klicken, sehen wir, das der Layer nur Leerwerte enthält.

../../../_images/identify.png

Für die nächste Übung werden wir zwei Layer statt einem verwenden. Wir werden ein DEM erhalten, das nur gültige Höhenwerte innerhalb des mit dem zweiten Layer vorgegebenen Einzugsgebietes enthält. Öffnen Sie den Dialog des Rasterrechners und wählen beide Layer als Eingabe aus. Geben Sie die folgende Formel vor:

a/a * b

a bezieht sich auf den Layer des akkumulierten Abflusses (er erscheint als erster in der Liste) und b bezieht sich auf das DEM. Im ersten Teil der Formel teilen wir den Layer des akkumulierten Abflusses mit sich selbst. Dabei erhalten wir einen Wert von 1 innerhalb und einen Leerwert außerhalb des Einzugsgebietes. Dieser Wert wird anschließend mit dem DEM multipliziert, um den Höhenwert innerhalb des Einzugsgebietes (DEM * 1 = DEM) und einen Leerwert außerhalb (DEM * no_data = no_data) zu erhalten.

Das ist der sich ergebene Layer.

../../../_images/masked.png

Diese Technik wird häufig zur Maskierung von Werten eines Rasterlayers verwendet. Sie ist immer dann nützlich, wenn man Berechnungen auf Regionen durchführen möchte, die von der willkürlichen rechteckigen Form abweichen. Wenn man z.B. das Histogramm der Höhenwerte eines Rasterlayers bestimmt, macht das erst mal nicht so viel Sinnn. Wenn man dagegen nur die Werte eines Einzugsgebietes berücksichtigt (wie im obigen Beispiel), erhält man ein sinnvolles Resultat mit Informationen über die Struktur des Einzugsgebietes.

Neben der Behandlung der Leerwerte gibt es weitere interessante Dinge an dem Algorithmus. Wenn wir uns die Ausdehnung der Layer ansehen, die wir multipliziert haben (man kann sich die Eigenschaften der Layer duch Doppelklick auf einen Layer im Inhaltsverzeichnis ansehen), sehen wir, dass sie nicht identisch sind. Das liegt daran, dass die Ausdehnung des Layers des akkumulierten Abflusses kleiner als die Ausdehnung des DEM ist.

Das bedeutet, dass diese Layer nicht zueinander passen. Sie können nicht direkt miteinander multipliziert werden. Sie müssen vorher umgerechnet werden, so dass ihre Größe und Ausdehnung homogen wird. Wir haben aber nichts dergleichen im Vorfeld getan. QGIS macht das bei Bedarf automatisch. Die Ausdehung der Ausgabe entspricht der minimalen Ausdehnung der Eingabelayer. Die Zellengröße entspricht der minimalen Größe der Eingabelayer.

In diesem Fall (wie in den meisten Fällen) erhalten wir das gewünschte Ergebnis. Man sollte die im Hintergund ablaufenden Operationen immer bedenken, da sie unter Umständen das Ergebnis beeinflussen können. Wenn dieses Verhalten ausgeschlossen werden soll, kann im Vorfeld eine manuelle Anpassung der Eingabelayer erfolgen. In späteren Kapiteln werden wir mehr über das Verhalten von Algorithmen bei Verwendung mehrerer Rasterlayer lernen.

Wir beenden diese Lektion mit einer weiteren Übung zur Maskierung. Wir werden die Hangneigung für alle Flächen in einer Höhe zwischen 1000 und 1500 Metern berechnen.

In diesem Fall haben wir keinen Layer, den wir als Maske verwenden können. Wir erstellen diesen Layer mit Hilfe des Rasterrechners.

Starten Sie den Rasterrechner mit dem DEM als Eingabelayer und der folgenden Formel

ifelse(abs(a-1250) < 250, 1, 0/0)

Wie man sieht, kann der Rasterrechner nicht nur für einfache Rechenoperationen sondern auch für bedingte Berechnungen wie im Beispiel verwendet werden.

Als Ergebnis erhalten wir eine 1 für Zellen, die im Wertebereich liegen und einen Leerwert für Zellen außerhalb des Wertebereiches.

../../../_images/elevation_mask.png

Der Leerwert entsteht aus dem Ausdruck 0/0. Da es sich um einen unbestimmten Wert handelt, fügt SAGA einen NaN Wert ein (Not a Number), der wie ein Leerwert behandelt wird. Mit diesem Trick können wir einen Leerwert für Zellen vergeben, ohne zu wissen, welchem Wert der Leerwert für eine Zelle entspricht.

Der Layer muss nun nur noch mit dem Neigungslayer multipiliziert werden und wir erhalten unser Ergebnis.

Das kann alles in einer einzigen Operation im Rasterrechner erfolgen. Wir belassen die Ausführung als Übung für den Leser.