In meinem letzten Blogpost hatte ich gezeigt, wie ihr dank der R ArcGIS Bridge mit R auf ArcGIS Daten zugreifen könnt. Nun möchte ich den anderen Weg zeigen: den Zugriff auf ein R-Skript als Geoverarbeitungswerkzeug (Geoprocessing Tool) mit ArcGIS for Desktop.
Jedes R ArcGIS Werkzeug besteht aus drei Bestandteilen: Erstens aus einem R-Skript, zweitens aus einer eigenen Toolbox in ArcGIS, und drittens aus einer Definition von Input- und Output-Parametern. Wer in ArcGIS bereits mit Python-Skripts gearbeitet hat, dem wird der Ablauf bekannt vorkommen.
Wie ist ein R-Skript für ArcGIS aufgebaut?
Die Kollegen von Esri Canada haben auf GitHub einige lauffähige R-Skripts zur Verfügung gestellt, die sehr hilfreich sind, um den Aufbau zu verstehen. Für Einsteiger empfiehlt es sich, in diesem Ordner zunächst das R Tool Template anzuschauen und anschließend nach den eigenen Wünschen zu verändern.
Jedes R-Skript, aus dem ein Geoprocessing-Tool werden soll, besteht aus drei essentiellen Komponenten: tool_exec, in_params und out_params. In tool_exec wird die Funktion definiert, die ausgeführt wird, wenn das R-Skript in ArcGIS aufgerufen wird. In in_params und out_params werden die Input bzw. Output-Parameter des Geoverarbeitungs-Werkzeugs definiert. Was als Input und Output zulässig ist, wird anschließend in ArcGIS definiert. Der Output eines R ArcGIS Werkzeugs ist eine Feature Class, ein Shapefile oder – wenn es sich nicht um Geodaten handelt – eine Tabelle. Grafiken (Plots) werden in einem neuen Fenster angezeigt.
Zwei Funktionen aus dem im letzten Post vorgestellten arcgisbinding-Package, arc.progress_label und arc.progress_pos, sind nur innerhalb von R ArcGIS Werkzeugen sinnvoll. arc.progress_label zeigt an, welche Operationen zur Laufzeit des Werkzeugs in R durchgeführt werden und schreibt sie ins Dialogfenster des Geoverarbeitungswerkzeugs, während arc.progress_pos die Position der Fortschrittsanzeige angibt.
Mit print oder message können spezielle Details zur Ausführung des Werkzeugs direkt ins Dialogfenster des Geoverarbeitungswerkzeugs in ArcGIS geschrieben werden.
Vom R-Skript zum R ArcGIS Werkzeug
Der Schritt vom R-Skript zum R ArcGIS Werkzeug lässt sich anhand eines Beispiels zur Varianzanalyse verdeutlichen. Sinn dieses Werkzeugs ist es, Mittelwerte zwischen Bevölkerungsgruppen anhand einer häufig verwendeten Methode zur Varianzanalyse (One-Way ANOVA) zu vergleichen.
Im zugehörigen R-Skript werden zunächst verschiedene Input-Parameter, die für die Varianzanalyse notwendig sind (Datensatz, erklärende und erklärte Variable in den Daten, Anzahl der Gruppen), sowie Output-Tabellen (Ergebnisse der Varianzanalyse) definiert.
Ist das R-Skript (z.B. in RStudio) fertig erstellt, kann es in ArcGIS in einer eigenen Toolbox über „New / Script“ hinzugefügt werden (unten die Ansicht aus ArcGIS Pro). In dem Dialogfenster zum Hinzufügen von Skripts könnt ihr anschließend den Pfad zum R-Skript und die Input- und Output-Parameter gemäß dem R-Skript definieren. Die Funktionsweise ist dieselbe wie bei Python-Skripts.
Sind Pfad zum Skript und alle Parameter definiert, lässt sich das R-Skript als Geoprocessing-Tool in ArcGIS ausführen – so wie ihr das von anderen Werkzeugen der ArcToolbox oder Python-Skripts kennt.
Wenn ihr euch näher für das Erstellen von eigenen R-Werkzeugen in ArcGIS interessiert und die Schritte selbst nachvollziehen möchtet, solltet ihr euch das Webinar von Esri Canada auf YouTube anschauen. Die Präsentation dazu findet ihr unter http://slides.com/camplouffe/integrating-r-with-arcgis-part-2#/. Viel Spaß beim Ausprobieren!
Jan Wilkening
Solution Engineer Education and Research