17.8. Ausführung eines externen Algorithmus

Bemerkung

In dieser Lektion werden wir lernen, wie man Algorithmen von Drittherstellern, insbesondere SAGA einem der Hauptanbieter von Algorithmen, verwendet.

Alle Algorithmen, die wir bisher verwendet haben, sind Teil der Verarbeitungsumgebung. Das bedeutet, dass es sich um native Algorithmen handelt, die innerhalb der Erweiterung enthalten sind und von QGIS genau wie die Erweiterung selbst gestartet werden. Eine der großartigsten Möglichketien von QGIS ist, dass es Algorithmen von externen Anwendungen verwenden kann und damit die Möglichkeiten dieser Anwendungen erweitern kann. Solche Algorithmen sind in der Verarbeitungsumgebung eingebunden, so dass man sie einfach aus QGIS heraus starten kann und QGIS Daten damit verwenden kann.

Einige der Algorithmen, die Sie in der vereinfachten Ansicht sehen, erfordern die Installation von Drittanwendungen auf Ihrem System. Ein besonders interessanter Anbieter von Algorithmen ist SAGA (System for Automated Geospatial Analysis). Als Erstes müssen wir alles so einrichten, dass QGIS SAGA korrekt aufruft. Das ist nicht schwer, aber es ist wichtig, zu verstehen wie es funktioniert. Jede externe Anwendung hat seine eigene Konfiguration. Wir gehen hier vor allem auf SAGA ein, dass wir hauptsächlich verwenden werden. In späteren Kapiteln behandeln wir weitere Anwendungen.

Wenn Sie unter Windows arbeiten, ist es am besten den QGIS-Installer zu verwenden. Er sorgt dafür, dass die erforderlichen Abhängigkeiten einschließlich SAGA installiert werden. Wenn Sie ihn verwendet haben, ist nichts weiter zu tun. Sie können den Einstellungsdialog öffnen und zur Gruppe Datenanbieter/SAGA wechseln.

../../../_images/saga_config.png

Der SAGA Pfad sollte schon eingerichtet sein und auf den Ordner zeigen, in dem SAGA installiert ist.

Wenn Sie QGIS nicht mit Hilfe des standalone-installers installiert haben, müssen Sie den Pfad zu Ihrer SAGA-Installation (muss schon vorhanden sein) hier eingeben. Die erforderliche Version von SAGA ist 2.1 [dies ändert sich je nach Veröffentlichungzeitpunkt einer SAGA Version].

Wenn Sie Linux verwenden, brauchen Sie den Pfad zu Ihrer SAGA Installation nicht in den Verarbeitungsoptionen ändern. Statt dessen müssen Sie SAGA installieren und dabei sicher stellen, dass der SAGA Ordner in der PATH Variable enthalten ist, so dass das Programm von der Kommandozeile aus gestartet werden kann (öffnen Sie eine Konsole und geben Sie saga_cmd zum Test ein). Unter Linux ist die Sollversion für SAGA ebenfalls 2.1 aber in einigen Installationen (wie z.B. der OSGeo Live DVD) ist unter Umständen nur die Verison 2.0.8 verfügbar. Es kann sein, dass in diesen Fällen auch Packete in der Version 2.1 verfügbar sind. Sie werden häufig nicht verwendet, da sie noch nicht so stabil laufen. Wenn Sie lieber die verbreitetere und stabilere Version 2.0.8 verwenden möchten, können Sie das in den Verarbeitungsoptionen in der SAGA Gruppe einstellen.

../../../_images/enable208.png

Nachdem SAGA installiert ist, können Sie einen SAGA Algorithmus wie jeden anderen Algorithmus durch Doppelklick starten. Da wir eine vereinfachte Schnittstelle benutzen, wissen wir nicht, welche Algorithmen auf SAGA oder eine andere externe Anwendung aufsetzen. Wenn eine zugehörige Anwendung nicht installiert ist, erhalten wir nach Doppelklick auf den Algorithmus in etwa die folgende Meldung.

../../../_images/missing_saga.png

Wir gehen davon aus, dass SAGA korrekt installiert ist. Es öffnet sich dann an Stelle des Fensters mit der Fehlermeldung der Parameterdialog.

Wir testen einen SAGA–basierten Algorithmus: Split shapes layer randomly.

../../../_images/split.png

Benutzen Sie den Punktlayer im zur Lektion gehörenden Projekt. Wenn Sie die Vorgabeparameter verwenden, erhalten Sie in etwa die folgende Ausgabe (die Teilung erfolgt zufällig, d.h. es wird ggf. eine abweichende Ausgabe erzeugt).

../../../_images/split_layer.png

Der Eingabelayer wurde in zwei Layer mit jeweils derselben Anzahl an Punkten geteilt. Das Ergebnis wurde von SAGA berechnet und nachfolgend von QGIS übernommen und ins QGIS Projekt eingefügt.

Wenn alles klappt, werden Sie keinen Unterschied zwischen diesem SAGA-basierten Algorithmus und den anderen vorher verwendeten merken. Es kann allerdings passieren, dass SAGA nicht in der Lage ist, die von QGIS erwartete Datei zu erstellen. In diesem Fall kommt es zu Problemen bei der Übernahme des Ergebnisses in das QGIS Projekt und es erscheint eine Fehlermeldung ähnlich der folgenden.

../../../_images/missing_result.png

Diese Art von Fehler kann selbst dann auftreten, wenn SAGA (oder jede andere Anwendung, die man aus den Verarbeitungswerkzeugen aufruft) korrekt installiert ist. Es ist wichtig zu lernen, wie man dieser Fehlerart umgeht. Wir werden diese Art von Fehler nun erzeugen.

Öffnen Sie den Algorithmus Create graticule und verwenden dabei die folgenden Werte.

../../../_images/create_graticule.png

Wir nutzen Werte für Breite und Höhe, die größer als die vorgegebene Ausdehnung des Gitters sind, so dass SAGA keine Ausgabe erzeugen kann. Mit anderen Worten: die Werte der Parameter sind falsch vergeben, werden aber vor der Übergabe an SAGA nicht geprüft. Da SAGA das Gitter nicht erzeugen kann, wird es den erwarteten Layer nicht erzeugen und man erhält die obige Fehlermeldung.

Bemerkung

Ab SAGA >= 2.2.3 werden falsche Eingabewerte automatisch korrigiert, so dass man in diesem Fall keine Fehlermeldung erhält. Um einen Fehler zu provozieren, kann man statt dessen negative Werte für die Parameter Divison verwenden.

Das Verständnis dieser Art von Problemen hilft dabei, zu verstehen was vorsichgeht und wie man eine Lösung findet. Man erkennt aus der Fehlermeldung, dass ein Test ausgeführt wird, ob die Verbindung mit SAGA richtig funktioniert bzw. ob der Algorithmus in der erwarteten Weise ausgeführt wird. Das gilt nicht nur für SAGA, sondern auch für alle anderen externen Anwendungen.

In der nächsten Lektion lernen wir das Verarbeitungsprotokoll kennen. Hier werden Informationen über die Ausführung von Geoalgorithmen aufgezeichnet. Wir werden sehen, wie man weitere Details zu Problemen dieser Art erhält.