Nachdem ich die R-ArcGIS Bridge in Grundzügen bereits auf GIS IQ und dem ArcGIS Blog vorgestellt habe, möchte ich nun zeigen, wie ihr nach der Installation von arcgisbinding konkret das Zusammenspiel zwischen R und ArcGIS herstellen könnt. Heute geht es zunächst um den Zugriff auf ArcGIS Daten in R.
Zugriff auf ArcGIS Daten in R: Das arcgisbinding-Package
Während Zugriff auf Austauschformate wie Shapefiles bereits mit anderen R-Packages (rgdal oder sp) möglich war, stellt das R-Package arcgisbinding sicher, dass R Lese-und Schreibzugriff auf native ArcGIS Datenformate wie Feature-Classes aus einer Geodatabase hat. Das Package ist hier ausführlich dokumentiert.
Wenn ihr das Package arcgisbinding in R mit library(arcgisbinding) geladen habt, sollte immer als nächstes arc.check_product() aufgerufen werden, um sicherzugehen, dass eine gültige ArcGIS for Desktop Installation auf dem Rechner vorliegt. Diese Funktion gibt die Installationsdetails von ArcGIS for Desktop zurück und stellt die Verbindung her:
Grundlegend zum Zugriff auf die Geodatabase sind nun die R-Funktionen arc.open, arc.select und arc.write. Ein klassischer Workflow in R kann wie folgt aussehen:
Mit arc.open wird in R die Verbindung zur Geodatabase hergestellt und eine Feature Class in R geladen. Dann wird die Feature Class mit arc.select in einen Data Frame (ein sehr gängiges, tabellenähnliches Format in R) geladen. In RStudio sieht ein Data Frame wie folgt aus (Anm.: Die Beispieldaten in diesem Blogpost stammen von der Education and Research Group von Esri Canada und liegen auf GitHub):
Auf Data Frames können zahlreiche Operationen aus anderen R-Packages ausgeführt werden, wie z.B. Analysen und Datenmanipulationen wie das Berechnen neuer Spalten mit statistischen Formeln mit dem Package dplyr.
Weiterhin lassen sich Feature Classes in ein sp-Objekt (ein beliebtes R-Format für Punkte, Linien und Polygone) konvertieren (mit arc.data2sp) und andersherum (mit arc.sp2data). Der Vorteil der Konversion liegt auch hier darin, dass zum einen gewisse sp-spezifische Methoden auf Daten aus ArcGIS angewendet werden können (z.B. spplot, Ergebnis siehe unten), während sich zum anderen sp-Objekte in Feature Classes für die Verwendung in ArcGIS konvertieren lassen.
Koordinatentransformationen zwischen PROJ.4 (Standard bei R) und WKT (Standard bei ArcGIS) könnt ihr mit arc.fromP4ToWkt und der Umkehrfunktion arc.fromWktToP4 durchführen. Mit arc.write wird der Data Frame dann wieder als Feature Class in die Geodatabase zurück geschrieben und kann danach in ArcGIS for Desktop geöffnet und weiterverarbeitet werden.
Mehr Informationen zur Verwendung von arcgisbinding erhaltet ihr im Webinar von Esri Canada – die Folien gibt es hier, die Videos sind auf YouTube und der Code auf GitHub. Hier findet sich natürlich auch ein lauffähiges Beispiel mit R-Skripten und Beispieldaten.
Zusammenfassung und nächste Schritte
Das R-Package arcgisbinding bietet viele Möglichkeiten, Daten aus der Geodatabase in R zu laden, in einen Data Frame zu konvertieren und mit den mächtigen Analysewerkzeugen von R zu bearbeiten, und die Daten anschließend wieder die Geodatabase zu schreiben, um sie in ArcGIS for Desktop zu öffnen. Im nächsten Blogpost gehe ich auf den anderen Weg ein und werde die Frage beantworten: Wie lassen sich in ArcGIS for Desktop R-Skripte als Geoprocessing-Tools ausführen?
Jan Wilkening
Solution Engineer Education and Research