Wichtig

Übersetzen ist eine Gemeinschaftsleistung Sie können mitmachen. Diese Seite ist aktuell zu 100.00% übersetzt.

27.6. Die Schnittstelle zur Stapelverarbeitung

27.6.1. Einführung

Alle Algorithmen (einschließlich Modellen) können als Batch-Prozess ausgeführt werden. Das heißt, sie können nicht nur mit einem einzigen Set von Eingaben, sondern mit mehreren davon ausgeführt werden, wobei der Algorithmus so oft wie nötig ausgeführt wird. Dies ist nützlich bei der Verarbeitung großer Datenmengen, da der Algorithmus nicht mehrmals aus der Toolbox gestartet werden muss.

Um einen Algorithmus als Batch-Prozess ausführen, klicken Sie mit der rechten Maustaste auf seinen Namen in der Toolbox und wählen Sie die Option Ausführen als Batch-Prozess.

../../../_images/batch_processing_right_click.png

Abb. 27.32 Stapelverarbeitung mit der rechten Maustaste

Wenn Sie den Ausführungsdialog des Algorithmus geöffnet haben, können Sie die Stapelverarbeitung auch von dort starten, drücken Sie auf den Als Stapelprozess ausführen… Knopf.

../../../_images/parameters_dialog.png

Abb. 27.33 Batch-Prozess vom Algorithmus Dialog

27.6.2. Die Parameter-Tabelle

Die Ausführung eines Batch-Prozesses ist vergleichbar mit der einmaligen Ausführung eines Algorithmus. Die Parameterwerte müssen definiert werden, aber in diesem Fall brauchen wir nicht nur einen einzigen Wert für jeden Parameter, sondern eine Reihe von ihnen, einen für jedes Mal, wenn der Algorithmus ausgeführt werden muss. Die Werte werden mithilfe einer Tabelle wie der folgenden eingegeben, wobei jede Zeile eine Iteration und die Spalten die Parameter des Algorithmus darstellen.

../../../_images/batch_processing.png

Abb. 27.34 Stapelverarbeitung

In der oberen Werkzeugleiste können Sie:

  • processingAlgorithm Erweiterten Modus einschalten: Diese Schaltfläche ist nur verfügbar, wenn der Algorithmus Parameter hat, die als fortgeschritten markiert sind. Mit dieser Schaltfläche können Sie solche Parameter im Batch-Dialog ein- oder ausblenden.

  • symbologyAdd Zeile hinzufügen: fügt einen neuen Verarbeitungseintrag für die Konfiguration hinzu

  • symbologyRemove Zeile(n) entfernen: entfernt ausgewählte Zeilen aus der Tabelle. Die Zeilenauswahl erfolgt durch Anklicken der Nummer auf der linken Seite und erlaubt Tastaturkombination für Mehrfachauswahl.

  • fileOpen Öffnen einer Stapelverarbeitungs-Konfigurationsdatei

  • fileSave Speichern der Stapelverarbeitungskonfiguration in eine .JSON-Datei, die anschließend ausgeführt werden kann

Standardmäßig enthält die Tabelle nur zwei Zeilen:

  • In der ersten Zeile wird in jeder Zelle ein Autofüllung… ► Dropdown-Menü mit Optionen angezeigt, um die Zellen darunter schnell zu füllen. Die verfügbaren Optionen hängen vom Parametertyp ab.

  • Die zweite Zeile (und jede weitere) stellt eine einzelne Ausführung des Algorithmus dar, und jede Zelle enthält den Wert eines der Parameter. Es ähnelt dem Parameterdialog, den Sie sehen, wenn Sie einen Algorithmus aus der Werkzeugkiste ausführen, allerdings mit einer anderen Anordnung.

Am unteren Ende der Tabelle können Sie einstellen, ob Sie die checkbox Layer bei Abschluss laden wollen.

Sobald die Größe der Tabelle gesetzt ist, muss sie mit den gewünschten Werten gefüllt werden.

27.6.3. Füllen der Parameter-Tabelle

Für die meisten Parameter ist die Einstellung des Wertes trivial. Das entsprechende Widget, dasselbe wie im Einzelprozessdialog, wird zur Verfügung gestellt und erlaubt es, den Wert einfach einzugeben oder ihn aus einer Liste möglicher Werte auszuwählen, abhängig vom Parametertyp. Dies beinhaltet auch das Daten-Definitions-Widget, wenn es kompatibel ist.

Um die Definition des Batch-Prozesses zu automatisieren und zu vermeiden, dass die Tabelle Zelle für Zelle gefüllt wird, können Sie das Menü Autofüllung… eines Parameters drücken und eine der folgenden Optionen auswählen, um Werte in der Spalte zu ersetzen:

  • Nach unten füllen nimmt die Eingabe für den ersten Prozess und gibt sie für alle anderen Prozesse ein.

  • calculateField Nach Ausdruck berechnen… ermöglicht es Ihnen, einen neuen QGIS-Ausdruck zu erstellen, mit dem Sie alle vorhandenen Werte in dieser Spalte aktualisieren können. Vorhandene Parameterwerte (einschließlich derer aus anderen Spalten) können innerhalb des Ausdrucks über Variablen verwendet werden. So kann z.B. die Anzahl der Segmente basierend auf dem Pufferabstand der einzelnen Layer festgelegt werden:

    CASE WHEN @DISTANCE > 20 THEN 12 ELSE 8 END
    
  • Werte nach Ausdruck hinzufügen… fügt neue Zeilen hinzu, indem es die Werte eines Ausdrucks verwendet, der ein Array zurückgibt (im Gegensatz zu Nach Ausdruck berechnen…, das nur mit bestehenden Zeilen arbeitet). Der beabsichtigte Anwendungsfall ist, das Auffüllen des Batch-Dialogs mit komplexen numerischen Reihen zu ermöglichen. Zum Beispiel führt das Hinzufügen von Zeilen für einen Stapelpuffer mit dem Ausdruck generate_series(100, 1000, 50) für den Parameter distance zu neuen Zeilen mit den Werten 100, 150, 200, …. 1000.

  • Bei der Einstellung eines Datei- oder Layer-Parameters stehen weitere Optionen zur Verfügung:

    • Dateien nach Muster hinzufügen…: fügt der Tabelle neue Zeilen für Dateien hinzu, die einem Dateimuster in einem Ordner entsprechen, der mit Suchen in gekennzeichnet ist. Z.B. *.shp fügt der Liste alle SHP Dateien in dem Ordner hinzu. Aktivieren Sie das Kontrollkästchen Rekursiv suchen, um auch Unterordner zu durchsuchen.

    • Dateien wählen… einzeln auf Festplatte

    • Alle Dateien aus einem Verzeichnis hinzufügen…

    • Aus geöffenten Layern wählen… im aktuellen Projekt

Der Parameter für die Ausgabedaten bietet die gleichen Möglichkeiten wie bei der Ausführung des Algorithmus als einzelner Prozess. Je nach Algorithmus kann die Ausgabe sein:

  • übersprungen, wenn die Zelle leer bleibt

  • als temporärer Layer gespeichert: Füllen Sie die Zelle mit TEMPORARY_OUTPUT und vergessen Sie nicht, das Kontrollkästchen checkbox Layer bei Abschluss laden anzukreuzen.

  • als einfache Datei (.SHP, .GPKG, .XML, .PDF, .JPG,…) gespeichert werden, deren Pfad mit den zuvor angezeigten Optionen Autofüllung festgelegt werden kann. Verwenden Sie z.B. Nach Ausdruck berechnen …, um die Ausgabedateinamen auf komplexe Ausdrücke wie:

    '/home/me/stuff/buffer_' || left(@INPUT, 30) || '_' || @DISTANCE || '.shp'
    

    Sie können den Dateipfad auch direkt eingeben oder den Dateiauswahldialog verwenden, der erscheint, wenn Sie auf die zugehörige Schaltfläche klicken. Sobald Sie die Datei ausgewählt haben, wird ein neues Dialogfeld angezeigt, das die automatische Vervollständigung anderer Zellen in derselben Spalte (gleicher Parameter) ermöglicht.

    ../../../_images/batch_processing_save.png

    Abb. 27.35 Stapelverarbeitung Speichern

    Wenn der Standardwert (Nicht automatisch ausfüllen) ausgewählt ist, wird lediglich der ausgewählte Dateiname in die ausgewählte Zelle der Parametertabelle eingetragen. Wenn eine der anderen Optionen ausgewählt wird, werden alle Zellen unter der ausgewählten Zelle automatisch anhand bestimmter Kriterien ausgefüllt:

    • Mit Zahlen füllen: fügt schrittweise eine Zahl an den Dateinamen an

    • Füllen mit Parameterwerten: Sie können einen Parameter auswählen, dessen Wert in derselben Zeile an den Dateinamen angehängt wird. Dies ist besonders nützlich, um Ausgabedatenobjekte entsprechend den Eingabedaten zu benennen.

  • als Layer in einem Datenbankcontainer gespeichert:

    # Indicate a layer within a GeoPackage file
    ogr:dbname='C:/Path/To/Geopackage.gpkg' table="New_Table" (geom)
    
    # Use the "Calculate By Expression" to output to different layers in a GeoPackage
    'ogr:dbname=\'' || @project_folder || '/Buffers.gpkg\' table="' || @INPUT || '_' || @DISTANCE || '" (geom)'
    

27.6.4. Ausführen eines Batch-Prozesses

Um den Batch-Prozess auszuführen, nachdem Sie alle erforderlichen Werte eingegeben haben, klicken Sie einfach auf Starte. Das Bedienfeld Protokoll wird aktiviert und zeigt Details und Schritte des Ausführungsprozesses an. Der Fortschritt des gesamten Stapelverarbeitungsprozesses wird in der Fortschrittsleiste im unteren Teil des Dialogs angezeigt.