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:
Datenquelle: [NGA_MSI] [NATURALEARTH]
Arbeitsablauf¶
In the QGIS Browser Panel, locate the directory where you saved your downloaded data. Expand the
ne_10m_land.zip
and select thene_10m_land.shp
layer. Drag the layer to the canvas. Next, locate theASAM_shp.zip
file. Expand it and select theasam_data_download/ASAM_events.shp
layer and drag it on to the canvas.
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 theWGS 84
CRS and click OK.
Nachdem der Layer geladen wurde, sieht man die einzelnen Punkte der Piraterievorfälle. Wir erstellen nun unser Prozessmodell zur Verarbeitung der Layer Gehe zu
.
Gehe im Fenster Verarbeitungsmodellierung zum Bereich Modelleigenschaften. Gebe
piracy hexbin
als Name des Modells undprojects
als Gruppe ein. Klicke auf den Knopf Speichern.
Speichere das Modell als
piracy_hexbin
.
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.
Wir geben
Eingabepunkte
als Parameter Namen undPunkt
als Geometrietyp ein. Diese Eingabe repräsentiert den Punktlayer der Piraterievorfälle.
Als Nächstes ziehen wir ein weiteres + Vektorlayer Objekt in den Arbeitsbereich. Gebe
Basislayer
als Parameter Namen ein undPolygon
als Geometrietyp. Diese Eingabe repräsentiert den Layer natural earth global land.
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.
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.
Im Dialogfenster Layer reprojizieren wählen wir
Basislayer
als Eingabelayer aus. Setze den Haken bei Projekt-KBS benutzen als Ziel KBS. Klicke auf OK.
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.
Im Dialogfenster Gitter erzeugen wählen wir
Hexagon (Polygon)
als Gittertyp. WähleExtent of 'Reprojected' from algorithm 'Layer reprojizieren'
als Gitterausdehnung. Klicke auf den Knopf 123 unter Horizontaler Abstand und wähle Modelleingabe.
Wähle
Gittergröße
als Eingabewert für nach Modelleingabe. Wiederhole denselben Vorgang für Vertikaler Abstand. Klicke auf OK.
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.
For Extract features from, select
'Grid' from algorithm 'Generate Grid'
, Where the features (geometric predicate) asIntersect
and By comparing to the features from asInput points
. Click OK.
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.
Wähle
'Extrahiert (Position)' from algorithm 'Nach Position extrahieren'
als Eingabewert für Polygone. Bei Punkte verwenden wirEingabepunkte
. Unten geben wir unter Anzahl den Namen des Ausgabelayers ein:Aggregiert
. Klicke auf OK.
Das Modell ist nun fertig. Klicke auf den Knopf Speichern.
Zurück im QGIS Hauptfenster finden wir das erstellte Modell in den Verarbeitungswerkzeugen unter . 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 .
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ähleWorld_Mollweide EPSG:54009
als KBS. Klicke auf OK.
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.
Our Base Layer is the
ne_10m_land
and the Input Points layer isASAM_events
. The Grid Size needs to be specified in the units of the selected CRS. The World_Mollweide CRS unit is meters, so we specify100000
m (100 Kms) as the Grid Size. Click Run to start the processing pipeline. Once the process finishes, click Close.
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 LayerAggregated
und wähle Eigenschaften.
Wir gehen zum Tab Symbolisierung. Wähle als Symbolisierung
Abgestuft
undNUMPOINTS
als Spalte. Klicke aufÄndern...
neben dem Symbol Schriftzug.
Wähle Einfache Füllung und setze den Haken bei Transparenter Strich im dropdown neben Strichfarbe. Damit werden die Ränder der Sechsecke transparent.
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.
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.
Back in the main QGIS window, turn off the
ASAM_events
layer. You will see a nice visualization of piracy hotspots across the globe.
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)