Integrieren von externen Programmen in ModelBuilder

Python oder andere Sprachskripte können in Modelle integriert werden, indem sie einem Skriptwerkzeug und das Skriptwerkzeug einem Modell hinzugefügt werden. Dies ist sinnvoll, wenn Python oder eine andere Skriptsprachenlogik erforderlich ist, um ein Modell zu optimieren oder aus ArcGIS auf ein externes Paket oder Programm zuzugreifen.

In diesem Abschnitt wird beschrieben, wie Sie R, ein externes statistisches Paket, in die ModelBuilder-Umgebung integrieren. Im Beispiel unten sind zwei Skripte erforderlich, um die R-Funktionalität auszuführen: ein Python-Skript, das den R-Quellcode aufruft, und der eigentliche R-Quellcode. Das Python-Skript wird von ModelBuilder aufgerufen und dient als Kanal, der die Argumente von ModelBuilder an R organisiert und weiterleitet.

Im Beispiel wird beschrieben, wie die beiden Skripte funktionieren und durch ein Modell in der ArcGIS-Umgebung interagieren. Sie können die Schritte unten wie ein Lernprogramm ausführen oder nur lesen, um sie für Ihr Projekt anzuwenden.

Schritte:
  1. Herunterladen und Extrahieren von Daten
  2. Installieren von R auf Ihrem System
  3. Erstellen eines neuen Modells und Hinzufügen des Skriptwerkzeugs zu einem Modell
  4. Eingeben der Skriptwerkzeug-Parameter
  5. Ausführen des Modells

1-Herunterladen und Extrahieren von Daten

Das Beispielskript "Using R in ArcGIS 10" wird aus Geoprocessing Resource Center – Model and Script Tool Gallery heruntergeladen. Der entzippte Ordner enthält vier Unterordner und ein Skriptwerkzeug: Punkt-Cluster-Bildung (R-Version).

R-Werkzeuge im Fenster "Katalog"

2-Installieren von R

Das R-Paket muss auf dem System installiert sein, bevor das Skriptwerkzeug ausgeführt werden kann. Wenn Sie diesen Abschnitt wie ein Lernprogramm bearbeiten oder testen möchten, wie dieses Skript funktioniert, lesen und befolgen Sie die Anweisungen in der Readme.pdf, die sich im Doc-Unterordner des heruntergeladenen Resource Center-Skripts befindet. Das R-Paket wird speziell für dieses Beispiel verwendet. Wenn Sie ein anderes externes Programm verwenden, machen Sie sich mit der Installation der Software vertraut.

3-Erstellen eines neuen Modells und Hinzufügen des Skriptwerkzeugs zu einem Modell

Der heruntergeladene Ordner umfasst eine Toolbox mit R-Werkzeugen mit einem Skriptwerkzeug. Erstellen Sie ein neues Modell in der Toolbox, indem Sie mit der rechten Maustaste auf Neu > Modell klicken. Es wird ein leeres Modell geöffnet. Das Skriptwerkzeug für die Punkt-Cluster-Bildung (R-Version) wird durch Ziehen in das Modell aus dem Fenster Katalog hinzugefügt (siehe andere Geoverarbeitungswerkzeuge) und erstellt eine mit dem Skriptwerkzeug verbundene von der Ausgabe abgeleitete Datenvariable.

Details zum Erstellen eines Python-Skripts und Skriptwerkzeugs werden in diesem Abschnitt nicht behandelt. Es ist eine umfassende Beschreibung zum Erstellen eines Python-Skripts verfügbar, mit Informationen zum Starten und Erstellen eines Skripts. Informationen zum Erstellen eines Skriptwerkzeugs erhalten Sie unter Integrieren von Skripten innerhalb eines Modells.

Beispiel-Python-Skript

Das Skriptwerkzeug, das dem Modell hinzugefügt wird, kann bearbeitet werden, indem Sie mit der rechten Maustaste auf das Skriptwerkzeug klicken und die Option Bearbeiten wählen. Das Skript PointCluster.py sieht wie unten in der Abbildung aus:

Python-Skript

Der Code im Skript ruft die Eingabeparameter zum Werkzeug in ArcGIS auf und übergibt diese Parameter über das R-Skript an das statistische R-Paket. Wenn die Parameter von ArcGIS an R übergeben werden, wird das R-Programm ausgeführt. Es berechnet die Cluster für die Eingaben, die über das Python-Skript in ModelBuilder erfasst wurden. Die Ergebnisse werden dann zur Anzeige in ArcMap zurückgerendert.

R-Skript

Sie können das R-Skript nicht in ModelBuilder oder im Fenster Katalog anzeigen. Es befindet sich jedoch im Unterordner "Scripts" der heruntergeladenen Datei. Das Skript PointCluster.r wird erstellt, für dieses Beispiel gespeichert und als externe R-Funktion in ModelBuilder aufgerufen. Wenn Sie ein anderes Programm verwenden, müssen Sie die zugehörigen Dateien berücksichtigen, die zu erstellen sind. Sie können diese Skripte für ein beliebiges Programm dann über das Python-Skript aufrufen und in ModelBuilder ausführen.

Das Skript PointCluster.r wird unten dargestellt. Die R-Datei ruft die Eingabeargumente vom Python-basierten Skriptwerkzeug ab, das in ModelBuilder verwendet wurde, um die Eingabeparameter zu erfassen. Auf Grundlage der Eingaben, die Sie bereitstellen, führt die R-Datei die Cluster-Analyse aus. Diese Ergebnisse werden dann über das Python-Skript zurück an ModelBuilder oder die ArcGIS-Anwendung übergeben und in ArcMap mit dem angewendeten Rendering angezeigt.

R-Datei

4-Eingeben der Skriptwerkzeug-Parameter

Das Beispielskript führt für die Eingabe-Point-Feature-Class auf Grundlage der Cluster-Methode und der Attributwerte der Punkte eine Cluster-Analyse aus. In diesem Beispiel wird eine Point-Feature-Class, die Notrufe darstellt, als Eingabe verwendet. Diese Daten befinden sich im Ordner "ToolData", der aus dem Resource Center heruntergeladen wurde. Die ursprünglichen Daten werden für dieses Beispiel geändert. Jeder Punkt verfügt über einen Wert, der die Anzahl von Anrufen innerhalb eines bestimmten Gebiets um diesen Punkt angibt. Das Feld mit der Anzahl wird verwendet, um fünf Cluster mithilfe der Cluster-Methode KMEANS_HARTIGAN zu berechnen.

Diese Eingabeparameter werden durch das Python-Skript definiert. Das Python-Skriptwerkzeug umfasst ein Dialogfeld, in dem die Eingabeparameter in ArcGIS festgelegt werden können.

Skriptwerkzeug

5-Ausführen des Modells

Wenn das Modell, das das R-Skriptwerkzeug enthält, ausgeführt wird, wird eventuell das Befehlszeilenausführungsfenster angezeigt. Das heißt, das R-Paketprogramm wird bald ausgeführt.

Befehlszeilenfenster

Dann startet das Skript das statistische R-Paket mit einem Standardfenster der Bibliothek clusTool.

R-Paket – Standardbibliothek "clusTool"

Das R-Paket berechnet dann die Cluster auf Grundlage der Eingabe, die durch das Python-Skriptwerkzeug bereitgestellt wurde. Die Ergebnisse werden zurückgesendet, in ArcMap gerendert und angezeigt.

Cluster-Werkzeugergebnisse


7/10/2012