Komplexe Arbeitsabläufe mit Hilfe der Verarbeitungsmodellierung (QGIS3)

Arbeitsabläufe im GIS schließen in der Regel viele Schritte ein. Jeder Schritt erzeugt dabei ein Teilergebnis, das im nächsten Schritt weiterverwendet wird. Bei Änderung der Eingabedaten oder Anpassung eines Paramters muss der gesamte Arbeitsablauf noch einmal manuell abgearbeitet werden. Erfreulicherweise enthält QGIS ein Werkzeug zur grafischen Modellierung, das beim Definieren eines Arbeitsablaufes unterstützt und den vollständigen Prozess mit Hilfe eines Aufrufes starten kann. Man kann die Arbeitsabläufe auch mit der Stapelverarbeitung und einer großen Anzahl an Eingabedaten ausführen.

Überblick über die Aufgabe

Wir werden einen Punktlayer der maritimen Piraterievorfälle verwenden. Mit Hilfe eines Verarbeitungsmodells erstellen wir eine Dichtekarte durch Aggregation der Punktdaten in einem sechseckigen Gitter.

Weitere Fähigkeiten die wir erlernen

  • Nutzung einer globalen flächentreuen Projektion und einstellen des Projekt-KBS.

  • Einstellen einer graduellen Symbologie für einen Polygonlayer.

Beschaffung der Daten

National Geospatial-Intelligence Agency’s Maritime Safety Information portal provides a shapefile of all incidencts of maritine piracy in the form on Anti-shipping Activity Messages. Download the Arc Shape file version of the database.

Bei Natural Earth findet man verschiedene globale Vektorlayer. Lade folgenden Layer mit Polygonen der Länder herunter: 10m Physical Vectors - Land.

Der Einfachheit halber kann man beide Layer unter folgendem link herunterladen:

ASAM_shp.zip

ne_10m_land.zip

Datenquelle: [NGA_MSI] [NATURALEARTH]

Arbeitsablauf

  1. In the QGIS Browser Panel, locate the directory where you saved your downloaded data. Expand the ne_10m_land.zip and select the ne_10m_land.shp layer. Drag the layer to the canvas. Next, locate the ASAM_shp.zip file. Expand it and select the asam_data_download/ASAM_events.shp layer and drag it on to the canvas.

../../_images/1108.png
  1. The ASAM_events.shp layer does not have projection information associated with it, so you will be prompted to select a CRS in the Coordinate Reference System Selector. Here, the points are in the Latitude and Longitude coordinates, so select the WGS 84 CRS and click OK.

../../_images/2104.png
  1. Nachdem der Layer geladen wurde, sieht man die einzelnen Punkte der Piraterievorfälle. Wir erstellen nun unser Prozessmodell zur Verarbeitung der Layer Gehe zu Verarbeitung ‣ Grafische Modellierung….

../../_images/350.png
  1. Gehe im Fenster Verarbeitungsmodellierung zum Bereich Modelleigenschaften. Gebe piracy hexbin als Name des Modells und projects als Gruppe ein. Klicke auf den Knopf Speichern.

../../_images/424.png
  1. Speichere das Modell als piracy_hexbin.

../../_images/522.png
  1. Now we can start building a graphical model of our processing pipeline. The Processing modeler dialog contains a left-hand panel and a main canvas. On the left-hand panel, locate the Inputs panel listing various types of input data types. Scroll down and select the + Vector Layer input. Drag it to the canvas.

../../_images/622.png
  1. Wir geben Eingabepunkte als Parameter Namen und Punkt als Geometrietyp ein. Diese Eingabe repräsentiert den Punktlayer der Piraterievorfälle.

../../_images/721.png
  1. Als Nächstes ziehen wir ein weiteres + Vektorlayer Objekt in den Arbeitsbereich. Gebe Basislayer als Parameter Namen ein und Polygon als Geometrietyp. Diese Eingabe repräsentiert den Layer natural earth global land.

../../_images/821.png
  1. Zur Erstellung des globalen sechseckigen Gitters können wir, statt eine feste Größe zu verweden, den Nutzer nach der Gittergröße fragen. Auf diese Weise kann der Nutzer schnell mit verschiedenen Gittergrößen experimentieren ohne das Modell zu ändern. Wir wählen das + Number Objekt und ziehen es in den Arbeitsbereich. Gebe Gittergröße als Parameter Namen ein und klicke auf OK.

../../_images/921.png
  1. Nachdem wir die Benutzereingaben festgelegt haben, können wir die Verarbeitungsschritte hinzufügen. Alle Verarbeitungsalgorithmen sind im Tab Algorithmen enthalten. Der erste Arbeitsschritt ist die Transformation unseres Basislayers in das KBS des Projekts. Suche nach dem Algorithmus Layer reprojizieren und ziehe ihn in den Arbeitsbereich.

Bemerkung

Warum die Koordinatentransformation erforderlich ist, sehen wir gleich. Der Algorithmus zur Generierung des Gitters erfordert, dass wir das Ausmaß des Gitters in der Einheit des KBS des Projektes vorgeben. Wir können den transformierten Layer verwenden, um das erforderliche Ausmaß zu ermitteln.

../../_images/1029.png
  1. Im Dialogfenster Layer reprojizieren wählen wir Basislayer als Eingabelayer aus. Setze den Haken bei Projekt-KBS benutzen als Ziel KBS. Klicke auf OK.

../../_images/1132.png
  1. Im Fenster Verarbeitungsmodellierung ist jetzt eine Verbindung zwischen dem + Basislayer Objekt und dem Algorithmus Layer reprojizieren erschienen. Diese Verbindung zeigt die Ablaufrichtung unserer Verarbeitungskette. Der nächste Schritt ist die Erzeugung eines sechseckigen Gitters. Wir suchen den Algorithmus Gitter erzeugen und ziehen ihn in den Arbeitsbereich.

../../_images/1230.png
  1. Im Dialogfenster Gitter erzeugen wählen wir Hexagon (Polygon) als Gittertyp. Wähle Extent of 'Reprojected' from algorithm 'Layer reprojizieren' als Gitterausdehnung. Klicke auf den Knopf 123 unter Horizontaler Abstand und wähle Modelleingabe.

../../_images/1328.png
  1. Wähle Gittergröße als Eingabewert für nach Modelleingabe. Wiederhole denselben Vorgang für Vertikaler Abstand. Klicke auf OK.

../../_images/1426.png
  1. Bis zu dieser Stelle erzeugen wir ein sechseckiges globales Gitternetz. Das Gitternetz umfasst die gesamte Ausdehnung des Basislayers einschließlich Landflächen und Flächen in denen keine Punkte liegen. Suche nach dem Algorithmus Nach Position extrahieren und ziehe ihn in den Arbeitsbereich.

../../_images/1523.png
  1. For Extract features from, select 'Grid' from algorithm 'Generate Grid', Where the features (geometric predicate) as Intersect and By comparing to the features from as Input points. Click OK.

../../_images/1622.png
  1. Wir haben jetzt nur noch die Gitterpolygone, die Punkte enthalten. Um diese Punkte zu aggregieren, nutzen wir den Algorithmus Punkte in Polygon zählen. Suche den Algorithmus und ziehe ihn in den Arbeitsbereich.

../../_images/1723.png
  1. Wähle 'Extrahiert (Position)' from algorithm 'Nach Position extrahieren' als Eingabewert für Polygone. Bei Punkte verwenden wir Eingabepunkte. Unten geben wir unter Anzahl den Namen des Ausgabelayers ein: Aggregiert. Klicke auf OK.

../../_images/1820.png
  1. Das Modell ist nun fertig. Klicke auf den Knopf Speichern.

../../_images/1917.png
  1. Zurück im QGIS Hauptfenster finden wir das erstellte Modell in den Verarbeitungswerkzeugen unter Modelle ‣ projects ‣ piracy_hexbin. Jetzt ist es an der Zeit, das Modell zum Testen zu starten. Unser Ziel ist es, die Punkt in secheckigen Gittern zu aggregieren. Daher ist es wichtig, dass die Gitter in einem flächentreuen Koordinatensystem generiert werden. Damit stellen wir sicher, dass unabhängig von der Lage des Gitters, immer dieselbe Fläche bedeckt wird. Unser Modell fragt nicht explizit nach einem KBS, sondern verwendet das unter den Projekteigenschaften eingestellte KBS. Wir wählen hier ein globales flächentreues KBS aus. Gehe zu Projekt ‣ Eigenschaften.

../../_images/2016.png
  1. Im Fenster Projekteigenschaften gehen wir zum Tab KBS. Wir nutzen für diese Übung das projizierte Koordinatensystem Mollweide, das flächentreu ist. Suche Mollweide im Filter Feld und wähle World_Mollweide EPSG:54009 als KBS. Klicke auf OK.

../../_images/2119.png
  1. Wir sehen, dass die Layer in Echtzeit in das gewählte KBS reprojiziert werden. Wir gehen zum Modell piracy_hexbin bei Verarbeitungswerkzeuge und klicken doppelt darauf.

../../_images/2218.png
  1. Our Base Layer is the ne_10m_land and the Input Points layer is ASAM_events. The Grid Size needs to be specified in the units of the selected CRS. The World_Mollweide CRS unit is meters, so we specify 100000 m (100 Kms) as the Grid Size. Click Run to start the processing pipeline. Once the process finishes, click Close.

../../_images/2316.png
  1. Wir sehen einen neuen Layer Aggregated, der als Ergebnis des Modells geladen wurde. Wir stellen fest, dass der Layer das Attribut NUMPOINTS mit der Anzahl der Piraterievorfälle in der Gitterzelle enthält. Wir werden nun die Symbolisierung des Layers anpassen, um die Information besser sichtbar zu machen. Klicke mit der rechten Maustaste auf den Layer Aggregated und wähle Eigenschaften.

../../_images/2415.png
  1. Wir gehen zum Tab Symbolisierung. Wähle als Symbolisierung Abgestuft und NUMPOINTS als Spalte. Klicke auf Ändern... neben dem Symbol Schriftzug.

../../_images/2514.png
  1. Wähle Einfache Füllung und setze den Haken bei Transparenter Strich im dropdown neben Strichfarbe. Damit werden die Ränder der Sechsecke transparent.

../../_images/2614.png
  1. Klicke auf die dropdown Fläche neben Farbverlauf und wähle Viridis. Klicke noch einmal auf den dropdown Knopf und wähle Farbverlauf invertieren um die Reihenfolge der Farben umzukehren.

../../_images/2714.png
  1. Die abgestufte Symbolisierung teilt die Werte der entsprechenden Attributspalte in Klassen und weist jeder Klasse eine Farbe zu. Wähle Natürliche Unterbrechungen (Jenks) als Modus und klicke auf Klassifizieren und danach auf OK.

Bemerkung

unter Einfache Vektor Gestaltung findet man weitere Erklärungen zu den verschiedenen Modi.

../../_images/2814.png
  1. Back in the main QGIS window, turn off the ASAM_events layer. You will see a nice visualization of piracy hotspots across the globe.

../../_images/2913.png

Da wir jetzt den Arbeitsablauf vollständig im Modell abgebildet haben, ist es einfach, die Ergebnisse erneut zu erzeugen. Ein Modell erlaubt es auch, schnell zu experimentieren ohne die Zwischenschritte jedes Mal wiederholen zu müssen. Wenn sich die Eingabedaten mit der Zeit ändern, z.B. eine aktualisierte Zusammenstellung der Piraterievorfälle nach einigen Monaten verfügbar ist, kann das Modell mit den neuen Daten gestartet werden und erzeugt eine ähnliche Visualisierung ohne das man sich an jeden einzelnen Schritt erinnern müsste.


If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)