Parameter der Skriptwerkzeuge
Fast alle Werkzeuge verfügen über Parameter, deren Werte im Werkzeugdialogfeld oder innerhalb eines Skripts festgelegt werden. Sobald das Werkzeug ausgeführt wird, werden die Parameterwerte an das Skript übergeben. Das Skript liest die Werte und setzt dann seine Arbeit fort.
Die folgende Abbildung zeigt das Dialogfeld eines Skriptwerkzeugs mit drei Parametern: einem Eingabe-Workspace, einer Clip-Feature-Class und einem Ausgabe-Workspace. Alle Feature-Classes im Eingabe-Workspace werden mit dem Werkzeug Ausschneiden auf die Clip-Feature-Class zugeschnitten und in den Ausgabe-Workspace geschrieben.
Nachdem die Parameterwerte im Werkzeugdialogfeld eingegeben wurden und auf die Schaltfläche OK geklickt wurde (siehe Abbildung oben), liest das Skript die Werte der Parameter mit der GetParameterAsText()-Methode wie folgt:
# Import arcpy site-package # import arcpy from arcpy import env # Read the parameter values: # 1: input workspace # 2: input clip features # 3: output workspace # inWorkspace = arcpy.GetParameterAsText(0) clipFeatures = arcpy.GetParameterAsText(1) outWorkspace = arcpy.GetParameterAsText(2) env.workspace = inWorkspace
Übereinstimmende Reihenfolge der Parameter
Die Reihenfolge der Parameter im Werkzeugdialogfeld muss mit der Reihenfolge der Parameter im Skript übereinstimmen. Wenn Sie im Skriptwerkzeug für Clip-Features beispielsweise Parameter 2 in Parameter 1 ändern, müssen Sie auch die Parameterreihenfolge in den Eigenschaften des Skriptwerkzeugs ändern.
"sys.argv" und "arcpy.GetParameterAsText"
Es gibt zwei Methoden zum Lesen von Parametern: sys.argv und die ArcPy-Funktion GetParameterAsText(). Sie können beide Ansätze verwenden. Das obige Beispiel kann für die Verwendung der sys.argv-Methode umgeschrieben werden:
# Read the parameter values: # 1: input workspace # 2: input clip features # 3: output workspace # inWorkspace = sys.argv[1] clipFeatures = sys.argv[2] outWorkspace = sys.argv[3] env.workspace = inWorkspace
Bei sys.argv ist die Länge eines Parameters auf 1024 Zeichen begrenzt. GetParameterAsText() hat keine Zeichenbegrenzung. Schon aus diesem Grund empfiehlt sich die Verwendung der GetParameterAsText()-Methode.
Bei sys.argv[] wird von 1 ausgehend gezählt (d. h. der erste Parameter ist 1), bei GetParameterAsText dagegen von 0 (d. h. der erste Parameter ist 0).
In Versionen vor ArcGIS 9.2 konnte bei eigenständigen Skripten, d. h. bei Skripten, die über die Eingabeaufforderung des Betriebssystems ausgeführt werden, nur die sys.argv-Methode verwendet werden. Die GetParameterAsText()-Methode stand nur bei Skriptwerkzeugen zur Verfügung. Diese Einschränkung ist seit Version 9.2 aufgehoben. Es kann sein, dass Sie auf Codebeispiele treffen, in denen die sys.argv-Methode verwendet wird. Diese Beispiele wurden vor Version 9.2 geschrieben. Bei Version 9.2 und höher können Sie GetParameterAsText() durch sys.argv ersetzen. Sie müssen lediglich darauf achten, dass der Parameterindexwert verringert werden muss: sys.argv[1] wird zu GetParameterAsText(0).
Parameterdatentypen
Jedem Skriptwerkzeugparameter ist ein Datentyp zugewiesen. Wenn Sie das Dialogfeld des Skriptwerkzeugs öffnen, überprüft die Geoverarbeitung den Parameterwert anhand des Datentyps. Wenn Sie etwa eine Feature-Class für einen Parameter mit einem Workspace-Datentyp eingeben, erzeugt die Geoverarbeitung wie unten zu sehen einen Fehler (ein rotes "X" im Dialogfeld).
Der Datentyp wird auch bei der Suche nach Daten verwendet. Im Dialogfeld für die Suche werden nur Daten angezeigt, die mit dem Datentyp des Parameters übereinstimmen.
Sie können sich das Verhältnis zwischen Parametern und Datentypen auch folgendermaßen vorstellen: Die Geoverarbeitung sendet keine Werte an das Skript, die den falschen Datentyp aufweisen. Dies ist einer der Vorteile von Skriptwerkzeugen: Der Parameterwert wird anhand des Parameterdatentyps überprüft, bevor der Wert an das Skript übermittelt wird.