Wie integriere ich SAGA Python-Module in ArcGIS Desktop?


8

Ich habe mir SAGA ( http://www.saga-gis.org/en/index.html ) angesehen und es scheint einige nette Tools für die Geoverarbeitung zu haben.

Ich habe mich gefragt, ob jemand da draußen Glück hatte, SAGA-Module (Python) in ArcGIS Desktop und ArcToolbox zu integrieren.

Wenn ja, welche Schritte haben Sie ausgeführt?


3
Ich liebe die Ironie, eine proprietäre Softwareanwendung mit mehreren tausend Dollar mit OpenSource-Software zu erweitern ...
DavidF

Antworten:


5

Damit ArcGIS mit SAGA kommunizieren kann, erstellen wir einfache Toolboxen, mit denen .bat-Dateien von einem temporären Speicherort aus erstellt und ausgeführt werden. Dadurch wird das SAGA-Modul über die Befehlszeilenschnittstelle ausgeführt. Im Allgemeinen muss die Toolbox Datenformate konvertieren, Projektionsprobleme usw. vor und nach dem Ausführen der SAGA-Funktion beheben, aber das ist ziemlich einfach. Die erste ist die Hürde, aber dann müssen Sie sie nur anpassen, wenn Sie eine Verbindung zu zusätzlichen SAGA-Modulen herstellen müssen. Sobald Sie die Toolbox haben, können Sie sie natürlich in komplexeren Workflows über Modelbuilder oder in Python wiederverwenden.


1
Bitte geben Sie den von Ihnen verwendeten Code an. Wenn Sie ihn öffnen, können die Benutzer möglicherweise sogar Ihre Funktionen verbessern.
Johanvdw

1
Wenn ich die Chance bekomme, werde ich einen generischen Fall erstellen und dann den Code dafür zur Verfügung stellen. Im Moment ist jeder für eine bestimmte Aufgabe codiert, also nicht hilfreich, ohne ein bisschen zusätzliche Arbeit zuerst
Phil Henley

4

Um ehrlich zu sein, scheint es, als ob SAGA in Bezug auf die Verarbeitungsfunktionalität stark von anderen OpenSource-Projekten abhängt (z. B. GRASS, gdal, proj.4 usw.).

Es ist möglicherweise viel einfacher, QGIS Desktop GIS zu installieren und dann ein oder mehrere QGIS Python-Plugins zu schreiben, um das zu tun, was Sie möchten. Sie hätten wahrscheinlich programmgesteuerten Zugriff auf einen Großteil der über SAGA verfügbaren Funktionen.

Nebenbei bemerkt, obwohl SAGA unter der GPL lizenziert ist, glaube ich nicht, dass Sie rechtliche Probleme beim Schreiben eines Skripts haben würden, das ESRI- und SAGA-Code kombiniert, aber es könnte möglicherweise Probleme beim Veröffentlichen des Codes in ArcScripts geben.


Die Verarbeitungsfunktionalität funktioniert bei vielen anderen Open Source-Projekten nicht wirklich. Nur Dateiimport / -export und Projektionen, aber dies sind höchstwahrscheinlich nicht die Tools, die Sie von arcgis verwenden möchten.
Johanvdw


1

Wir machen genau das unter: www.frogtech.com.au

Es geht darum, Funktionen zu erhalten, die denen ähneln, die durch Erweiterungen oder Lizenzstufen in ArcGIS Desktop gebunden sind. Es macht keinen Sinn, Tausende für eine Erweiterung zu bezahlen, wenn Sie nur eine oder zwei ihrer Funktionen verwenden. Dann können wir unser weniger spezialisiertes GIS erhalten Wenn Benutzer dieses Tool durch einen regulären Workflow rollen möchten, passen wir es so an, dass Ein- / Ausgaben auch aus unseren regulären Workflows stammen.


Es ist gut, eine unabhängige Überprüfung zu haben, ob dies möglich ist und warum es sinnvoll ist, aber Sie lassen den Kern aus: Wie?
Matt Wilkie

1

Ein leichterer Ansatz: Verwenden Sie die Pakete rpy / rpy2 (für Python) und RSAGA (für R), um die ArcGIS-zu-Python-zu-R-zu-SAGA-Verbindung herzustellen. Ich beschäftige mich jetzt damit. Es dauert einige Zeit, aber es kann getan werden.

Das bedeutet natürlich, dass ArcGIS / Python, R und SAGA unter kompatiblen Versionen installiert sein müssen. Aber hey, nichts Gutes kommt leicht.


1
  1. Schreiben Sie ein Python-Skript, das Ihre Arbeit in der Saga
    erledigt, z. B. import saga_api, sys.argv usw.; Denken Sie daran, dass Saga die meisten Dinge im Speicher erledigt und Sie Daten von der Festplatte importieren und exportieren müssen
  2. Testen Sie, testen Sie, testen Sie Ihr Saga-Python-Skript
  3. arcgis -> gehe zu arctoolbox
  4. neues Modell erstellen -> Rechtsklick Skript hinzufügen - Link zum Skript in Schritt 1, vergessen Sie nicht, Ihre Argumente anzugeben. (Denken Sie daran, dass Version 10 auf 9.3 und niedriger gespeichert ist, um Argumente zu verlieren / zu verstümmeln, sodass sie manchmal neu definiert werden müssen.)
  5. bereit zu gehen

0

Beachten Sie, dass SAGA seit Version 2.2.1 Toolboxen unterstützt, die von arcgis ausgeführt werden können: https://sourceforge.net/p/saga-gis/news/2015/09/saga-221-released/

"Um ArcSAGA-Tools auszuführen, müssen Sie mit dem ArcCatalog-Steuerelement zu Ihrem SAGA-Installationsverzeichnis navigieren und die ArcSAGA Python-Toolboxen öffnen. Es sollte ohne weitere Installationsschritte sofort funktionieren."

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.