Mit dem zuletzt erschienenen QGIS Model Baker 8.4 wurden drei weitere Prozessalgorithmen realisiert, die das Toolkit nun noch nützlicher machen, um spezifische Workflows mit Model Baker und ili2db in QGIS zu realisieren.

Filmstill Brazil (1985)

Selbstgemachtes macht ja bekanntlich am meisten Freude. Und auch wenn Model Baker schon seit Jahren das Backend als Pythonpackage zur Verfügung stellt, muss man schon auch ein bisschen Hacker sein, um etwas damit zu bauen. Und auch wenn vielleicht die Processingmodelle in QGIS auch nicht gerade die leichteste Kost sind, kann man als Enduser auch bereits fertige Workflows nachvollziehen und bei Bedarf abändern.

Dies führt dazu, dass wir diesen kleinen Use Case mit den neuen Prozessalgorithmen bauten und ihn für euch als kleinen Step-by-Step Guide hier niederschreiben.

Es geht darum, dass man einen validen Datensatz duplizieren möchte, um daran weiterzuarbeiten und doch noch eine Sicherheitskopie zu behalten. Natürlich könnte man das auch mit ilivalidator und pg-dump machen, aber nicht mit nur einem Klick. Denn das Beste ist ja, dass wir Prozessalgorithmen einfach zu einem Processingmodell zusammenhängen können.

Wir wollen nun also ein neues Schema entsprechend dem Quellschema erstellen, dann die Daten aus dem Quellschema valide exportieren und ins neue Schema importieren.

Disclaimer: so sieht es aus.

Beginnen wir also endlich. Model Designer öffnen mit dem Menü Verarbeitung > Modellentwurf.

Als erstes geben wir dem Modell einen Namen. Wenn wir es jetzt abspeichern, schlägt es unseren Profilordner vor und wir werden es zukünftig in der Verarbeitungswerkzeugkiste finden, wir können es aber irgendwo abspeichern und individuell laden.

Oder – und das ist das Coolste – es mit Modell in Projekt speichern an ein QGIS Projekt binden, dann kann man es jeweils direkt über das Projekmenü starten.

Weiter geht es mit dem Einstiegspunkt. Die Datenbankparameter des Quellschemas, die wir für das Erstellen des neuen Schemas brauchen, können wir aus einem Vektorlayer entnehmen.

Die Datenquelle des Vektorlayers können wir mit dem Model Baker Util Algorithmus Get Parameter from Layersource parsen.

Den Input können wir mittels Modelleingabe (Model Input) verlinken.

Schliesslich wählen wir den Model Baker Algorithmus Create schema with ili2pg…

… und verlinken die geparsten Datenbankparameter über die Algorithmusausgabe (Algorithm Output) des Vorgängeralgorithmus‘.

Übrigens kann man auch per Drag and Drop die Ausgaben mit den Eingaben verknüpfen (in neueren QGIS Versionen).

Halt, wir können nicht alles einfach verlinken. Das Schema muss natürlich ein neues sein. Nun wollen wir am liebsten, dass es gleich heisst, aber noch ein Timestamp enthält. Dazu können wir einen Vorberechneten Wert (Pre-calculated Value) verwenden, der uns anbietet, einen Ausdruck zu erstellen.

Neben den Standardfunktionen now() und format_date() können wir nun die Ausgabe der anderen Algorithmen als Variable verwenden. Hier @Get_parameter_from_layersource_SCHEMA und damit unsen neuen Schemanamen bauen.

Dann probieren wir es doch gleich mal aus. Mit dem grünen Play-Dreieck in der Toolbar erscheint das Panel rechts, um den Algorithmus zu starten.

Doch ohne Erfolg. Kein INTERLIS Modell ist gegeben. Natürlich. Wir haben jetzt nur die Datenbankparameter genommen und keine sonstigen ili2db Parameter gesetzt. Diese könnten wir als Text-Inputs konfigurieren oder mit Standardwerten abfüllen.

Es wäre natürlich supernice, wenn wir die ili2db Parameter auch aus dem Quellschema herauslesen könnten. Und das wäre mit dem ili2db Kommando --exportMetaConfig auch möglich. Dann könnte man die Konfiguration, mit welcher das erste Schema erstellt wurde, gleich wieder ili2db übergeben. Die Model Baker Library bietet auch die API dafür. Allerdings ist diese Komponente noch nicht als Algorithmus implementiert. Wär nice, wenn das mal noch kommt…

Wir probieren es noch einmal und dieses Mal klappt es.

Wir haben also ein neues Schema, nun müssen wir noch die Daten rüberladen. Dazu nehmen wir den Model Baker Algorithmus Export with ili2pg. Als Eingabeparameter nehmen wir ebenfalls die Datenbankparameter des Vektorlayers. Auch das Schema übernehmen wir davon.

Dieser Algorithmus exportiert die Daten, sofern sie valide sind, in ein XTF File und gibt den Pfad als Parameter aus. Das XTF File liegt, wenn man nichts anderes angibt, im temporären Verzeichnis.

Nun importieren wir diese Daten in unser neues Schema. Dafür nutzen wir den Model Baker Algorithmus Import with ili2pg.

Die spannenden Eingabeparameter sind das Schema, das wir aus dem Create schema with ili2pg übernehmen, und das Source Transfer File, wo wir das XTF File des Export with ili2db nehmen.

Woher wir die Datenbankparameter nehmen, ist eigentlich egal. Die Model Baker Algorithmen geben grundsätzlich die Datenbankparameter unverändert weiter. Der Übersichtlichkeit halber nehmen wir sie von dort, wo wir auch das Schema her haben (Create schema with ili2db). Wir könnten sie aber auch aus dem Vektorlayer nehmen.

Probieren wir es aus.

Es funktioniert wunderschön. Es nimmt die Parameter vom gewählten Vektorlayer, es erstellt ein neues Schema basierend auf dem INTERLIS Modell, es exportiert die Daten aus dem Quell-Schema und importiert sie ins neue Schema. Fertig.

Die Reihenfolge läuft korrekt ab, selbst wenn der Exportalgorithmus länger dauern würde. Dies, weil der Importalgorithmus direkt von dessen Ausgabe abhängt. Würde er das nicht und man würde dennoch gerne die Reihenfolge beibehalten, könnte man noch Abhängigkeiten definieren. So:

Und jetzt? Nun könnten wir aus dem neuen Schema ein QGIS Projekt erstellen. Den Model Baker Algorithmus Generate Project gibt es aber leider noch nicht. Machen wir es also von Hand mit Model Baker. Wenn wir UsabILIty Toppings verwenden, könnten wir auch die erweiterten Konfigurationen übernehmen.

Alternativ könnten wir natürlich auch die Quellen des aktuellen Projektes ändern, oder hätten wir mit neuen Datenbanken statt mit neuen Schemas gearbeitet, hätten wir auch mit Service-Files das gleiche Projekt nutzen können (wie hier beschrieben).

Falls du das mal selbst ausprobieren möchtest, findest du hier das Processingmodell:

Und für einen anderen Use Case – wie man mit den Model Baker Prozessalgorithmen ein Modell baut, um ein Datensubset zu exportieren – findest du hier in der Model Baker Dokumentation. Neben weiterführenden Beschreibungen der Algorithmen.

Viel Spass beim ausprobieren!


0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter