Festlegen von Parametern für Skriptwerkzeuge
Fast alle Werkzeuge verfügen über Parameter, deren Werte im Werkzeugdialogfeld oder innerhalb eines Skripts festgelegt werden. Wenn das Werkzeug ausgeführt wird, werden die Parameterwerte an den Quellcode des Werkzeugs übergeben. Das Werkzeug liest die Werte und setzt dann seine Arbeit fort.
Weitere Informationen zu Parametern finden Sie unter Parameter der Skriptwerkzeuge.
Skriptwerkzeugparameter können bei der Arbeit mit dem Assistenten Skript hinzufügen festgelegt werden. Das Hinzufügen, Löschen und Ändern von Skriptwerkzeugparametern ist auch über das Dialogfeld Eigenschaften eines Werkzeugs möglich. Um auf die Eigenschaften eines Skriptwerkzeugs zuzugreifen, klicken Sie mit der rechten Maustaste auf das Werkzeug und wählen dann zuerst die Option Eigenschaften und anschließend die Registerkarte Parameter aus.
Unabhängig davon, ob Sie Parameter im Assistenten Skript hinzufügen oder im Dialogfeld Eigenschaften festlegen, die Vorgehensweise (wie hier erläutert) ist dieselbe.
Zum Hinzufügen eines neuen Parameters klicken Sie in die erste leere Zelle in der Spalte Angezeigter Name und geben den Namen des Parameters ein. Dieser Name wird im Werkzeugdialogfeld angezeigt. Er darf Leerzeichen enthalten. Hinsichtlich der Python-Syntax gilt: Der Parametername entspricht dem angezeigten Namen, bei dem Leerzeichen durch Unterstriche (_) ersetzt wurden.
Nachdem Sie den angezeigten Namen des Parameters eingegeben haben, wählen Sie einen Datentyp für den Parameter aus, indem Sie wie unten gezeigt in die Zelle Datentyp klicken.
Jeder Parameter verfügt über weitere Eigenschaften, die Sie wie unten gezeigt festlegen können.
Eigenschaft |
Beschreibung |
---|---|
Kann die Werte "Erforderlich", "Optional" oder "Abgeleitet" annehmen. "Abgeleitet" bedeutet, dass Benutzer Ihres Werkzeugs keinen Wert für den Parameter eingeben. Abgeleitete Typen sind immer Ausgabeparameter. |
|
Kann die Werte "Eingabe" oder "Ausgabe" annehmen. Bei abgeleiteten Parametern ist die Richtung immer "Ausgabe". |
|
"MultiValue" wird auf "Ja" gesetzt, wenn eine Werteliste verwendet werden soll, und auf "Nein", wenn ein einzelner Wert verwendet werden soll. |
|
Der Standardwert für den Parameter. Wenn der Datentyp des Parameters ein Feature-Set oder Record-Set ist, wird Standard durch Schema ersetzt. |
|
Falls der Standardwert des Parameters einer Umgebungseinstellung entnommen werden soll, enthält diese Eigenschaft den Namen der Umgebungseinstellung. |
|
Falls für einen Parameter nur bestimmte Datasets oder Werte eingegeben werden sollen, legen Sie einen Filter fest. Es stehen je nach Datentyp des Parameters sechs unterschiedliche Filtertypen zur Verfügung. |
|
Diese Eigenschaft gilt für Datentypen abgeleiteter Ausgabe- und Eingabeparameter. Bei abgeleiteten Ausgabeparametern kann Abgerufen von auf den Parameter festgelegt werden, der die Definition der Ausgabe enthält. Bei Eingabeparametern wird Abgerufen von auf den Parameter festgelegt, der die für die Eingabe erforderlichen Informationen enthält. |
|
Diese Eigenschaft gilt nur für Ausgabeparameter. Der Wert ist der Speicherort einer Layer-Datei (.lyr), die die Symbologie für die Anzeige der Ausgabe enthält. |
Typ
Es gibt drei Auswahlmöglichkeiten bei der Eigenschaft "Typ":
- Bei einem Parameter mit dem Wert Erforderlich müssen Benutzer einen Wert eingeben. Das Werkzeug kann erst ausgeführt werden, wenn der Benutzer einen Wert angibt.
- Bei einem Parameter mit dem Wert Optional müssen Benutzer keinen Wert eingeben.
- Ein Parameter vom Typ Abgeleitet ist nur für Ausgabeparameter bestimmt (siehe Richtung weiter unten). Abgeleitete Ausgabeparameter werden nicht im Werkzeugdialogfeld angezeigt.
Ein abgeleiteter Ausgabeparameter kann in den folgenden fünf Fällen verwendet werden:
- Ausgabe und Eingabe sind identisch; Beispiel: Feld berechnen. Mit Feld berechnen werden die Werte eines bestimmten Feldes in der Eingabetabelle geändert – es wird weder eine neue Tabelle erstellt noch das Schema der Eingabe geändert. Andere Werkzeuge, bei denen Aus- und Eingabe ebenfalls identisch sind, finden Sie in der Editing-Toolbox.
- Das Werkzeug ändert das Schema der Eingabe; Beispiel: Feld hinzufügen. Mit dem Werkzeug Feld hinzufügen wird der Eingabetabelle ein Feld hinzugefügt – es wird keine neue Ausgabetabelle erstellt.
- Das Werkzeug erstellt die Ausgabe anhand von Informationen in anderen Parametern, wie z. B. das Werkzeug Feature-Class erstellen. Mit dem Werkzeug Feature-Class erstellen geben Sie den Workspace und den Namen der neuen Feature-Class an. Die Feature-Class wird dann für Sie erstellt.
- Das Werkzeug gibt einen Skalarwert und kein Dataset aus. Von Anzahl erhalten wird beispielsweise ein "Long"-Wert ausgegeben (die Anzahl von Datensätzen). Immer wenn ein Werkzeug einen Skalarwert ausgibt, ist die Ausgabe abgeleitet.
- Das Werkzeug erstellt Daten an einem bekannten Ort. Beispiel: Sie verfügen über ein Skript, das eine bestehende Tabelle in einem bekannten Workspace aktualisiert. Benutzer müssen diese Tabelle nicht im Dialogfeld bzw. bei der Skripterstellung angeben.
Wenn das Skriptwerkzeug eine abgeleitete Ausgabe aufweist, müssen Sie mithilfe der Funktion SetParameterAsText() den Wert des abgeleiteten Ausgabeparameters im Skript festlegen.
Alle Werkzeuge sollten Ausgabeparameter aufweisen
Alle Skriptwerkzeuge sollten Ausgabeparameter aufweisen, damit sie in ModelBuilder verwendet werden können. Der Grundgedanke von ModelBuilder ist, die Ausgabe von Werkzeugen mit der Eingabe anderer Werkzeuge zu verknüpfen. Wenn Ihr Skriptwerkzeug keinen Ausgabeparameter aufweist, ist es für ModelBuilder wertlos. Zumindest können Sie einen booleschen Wert ausgeben, der "true" enthält, wenn das Werkzeug erfolgreich abgeschlossen würde, und andernfalls "false".
Abgeleitete Ausgabe, die einen Eingabeparameter ändert
Die folgende Abbildung zeigt das fiktive Skriptwerkzeug Update Field Values, das in ModelBuilder verwendet wird. (Dabei wird angenommen, dass ein Unternehmen mit Update Field Values den Inhalt einer Reihe von bekannten Textfeldern überprüft und ggf. Rechtschreibfehler und falsche Groß-/Kleinschreibung korrigiert.) Das Werkzeug Update Field Values erstellt keine neue Feature-Class, sondern aktualisiert die Feldwerte in der Eingabe-Feature-Class.
Die richtige Parameterdefinition für Update Field Values ist in der folgenden Abbildung zu sehen. Hier verfügt Update Field Values über einen Ausgabe-Feature-Class-Parameter, wobei die Eigenschaft Typ auf "Abgeleitet" eingestellt ist. Da bei diesem Werkzeug die Ausgabe der Eingabe entspricht, wird für Abgerufen von der Eingabeparameter festgelegt. (Abgerufen von verwendet den Namen des Parameters, das heißt den angezeigten Namen mit Unterstrichen anstelle von Leerzeichen.)
Abgeleitete Ausgabe, die keinen Eingabeparameter ändert
Die folgende Abbildung zeigt ein anderes Werkzeug, bei dem die Ausgabe zwar abgeleitet, aber von keinem Eingabeparameter abgerufen wird (Abgerufen von wird leer gelassen). In diesem Szenario kopiert das fiktive Werkzeug Post Data to Repository die Eingabe-Feature-Class in einen bekannten Workspace (das Repository), fügt ein Datums-/Uhrzeitfeld hinzu und füllt das Feld mit Daten.
Festlegen des Ausgabewertes
Beachten Sie, dass im oben dargestellten Modell das Werkzeug Features kopieren leer ist (weiß anstatt gelb). Dies liegt daran, dass die Variable Output features zwar grün ist, jedoch keinen Wert enthält – Name und Speicherort der Ausgabe-Features werden erst nach Ausführung des Werkzeugs bekannt. In diesem Fall muss im Skript der Ausgabewert mithilfe der ArcPy-Funktion SetParameterAsText() angegeben werden. Die SetParameterAsText()-Funktion legt den Wert eines Ausgabeparameters entweder mithilfe einer Textzeichenfolge oder eines Objekts fest, etwa einer Wertetabelle.
Es ist möglich, mittels Werkzeugvalidierungscode einen Wert für die Ausgabe bereitzustellen, bevor das Werkzeug ausgeführt wird.
Weitere Informationen zur Werkzeugüberprüfung
Im Folgenden sehen Sie den Beispielcode, von dem SetParameterAsText() basierend auf den vom Skript Post Data to Repository durchgeführten Vorgängen (siehe oben) verwendet wird.
# Post data to Repository - copies the input features to the
# current repository, adding and populating a date
# field
#
# Import system modules and arcpy
#
import sys
import string
import os
import arcpy
# Get the value of the input parameter
#
inFC = arcpy.GetParameterAsText(0)
# Create the pathname to the output feature class.
# 1) get the name of the feature class
# 2) remove any file extension, such as ".shp"
# (we're copying to a geodatabase which doesn't
# allow file extensions, like .shp)
#
fcName = os.path.basename(inFC)
fcName = os.path.splitext(fcName)[0]
repository = "e:/repository/featuredata.gdb"
outFC = os.path.join(repository, fcName)
# Copy the input to the output, add the date field
#
arcpy.CopyFeatures_management(inFC, outFC)
arcpy.AddField_management(outFC, "PostDate", "DATE")
# Create a locale-specific string containing the current date
# and time, then calculate it into the PostDate field, adding
# the required quotes around the postTime string.
#
import time
postTime = time.strftime("%x %X")
arcpy.AddMessage(postTime)
qPostTime = "\"" + postTime + "\""
arcpy.CalculateField_management(outFC, "PostDate", qPostTime)
# Set output parameter
#
arcpy.SetParameterAsText(1, outFC)
Ausgabewerte anstelle von Daten
Die obigen Beispiele zeigen, wie abgeleitete Datasets ausgegeben werden. Einige Werkzeuge geben jedoch Werte anstelle von Datasets aus, etwa das Werkzeug Anzahl erhalten, das einen "Long"-Datentyp mit der Anzahl der Zeilen in einer Tabelle ausgibt. Die Ausgabe von Werten anstelle von Datasets ist durchaus gängig. Möglicherweise arbeiten Sie mit Ihren eigenen Skripten, die mehrere in Beziehung stehende Datasets analysieren und nichts weiter als ein paar Zahlen oder einen booleschen Wert für "Erfolg/Fehler" ausgeben.
Ausgabeparameter mit Wertdatentypen wie "Long" oder "Boolean" sind immer abgeleitet, nicht erforderlich.
Richtung
Diese Eigenschaft gibt an, ob der Parameter eine Eingabe für das Werkzeug oder eine Ausgabe des Werkzeugs ist.
Wenn der Parametertyp "Abgeleitet" lautet, wird als Richtung für den Parameter automatisch "Ausgabe" verwendet.
MultiValue
Wenn der Parameter nicht nur einen Wert, sondern eine Werteliste verarbeiten soll, wählen Sie für die Eigenschaft MultiValue die Einstellung "Ja".
In Werkzeugdialogfeldern gibt es, wie unten zu sehen, zwei Steuerelemente auf der Benutzeroberfläche, die für mehrwertige Parameter verwendet werden.
- Bei Feldern, Zeichenfolgen sowie "Long"- und "Double"-Werten mit einem Wertelisten-Filter wird eine Liste mit Kontrollkästchen verwendet.
- Bei allen anderen Datentypen wird das Steuerelement für mehrwertige Parameter verwendet.
Die folgende Abbildung zeigt die beiden Steuerelemente für mehrwertige Parameter.
Mehrwertige Parameter werden als durch Semikolons getrennte Zeichenfolgen an das Skript übergeben. Ausgehend von der obigen Abbildung lautet der Parameterwert Interstates;Primary roads;Secondary roads, wenn alle Straßenarten vom Benutzer ausgewählt werden. Wenn Sie eine durch ein Trennzeichen getrennte Zeichenfolge aufteilen möchten, verwenden Sie die Python-Methode split(), wie im folgenden Codebeispiel gezeigt.
roadTypes = arcpy.GetParameterAsText(0)
roadTypeList = roadTypes.split(";")
# Process each road type
#
for rType in roadTypeList:
# rType contains an individual road type string (ex: "Interstates")
#
arcpy.AddMessage("Processing: " + rType)
Standard
Der Standardwert entspricht dem Parameterinhalt, der beim Öffnen des Werkzeugdialogfeldes für das Skript angezeigt wird. Dieser Wert wird auch verwendet, wenn bei der Skripterstellung ein Rautenzeichen (#) für den Parameter eingegeben wird. Wenn Sie für die Eigenschaft Standard keinen Wert angeben, bleibt der Parameterwert leer, wenn das Dialogfeld des Skripts geöffnet wird. Wenn Sie einen Wert für diese Eigenschaft angeben, wird die Eigenschaft Umgebung deaktiviert. Heben Sie die Auswahl der Eigenschaft Standard auf, um die Eigenschaft Umgebung zu aktivieren.
Schema
Wenn der Datentyp für den Eingabeparameter ein Feature-Set oder ein Record-Set ist, müssen Sie den Speicherort eines Schemas angeben, das die Felder und den Geometrietyp der einzugebenden Features definiert. Ein Schema ist entweder eine Feature-Class, eine Tabelle oder eine Layer-Datei (.lyr).
Feature-Sets und Record-Sets
Die Datentypen "Feature-Set" und "Record-Set" ermöglichen die interaktive Eingabe von Daten. Bei einem Feature-Set können Benutzer Ihres Skriptes interaktiv Features in ArcMap erstellen, indem Sie auf die Karte klicken. Bei einem Record-Set können Benutzer interaktiv Zeilen in einem einfachen Tabellen-Raster erstellen.
Weitere Informationen zu Feature-Sets und Record-Sets erhalten Sie, wenn Sie auf die folgenden Links klicken.
Thema |
Beschreibung |
---|---|
In diesem Thema erfahren Sie, wie Sie die FeatureSet- und RecordSet-Objekte in Python verwenden. |
|
Verwenden der Steuerelemente für interaktive Feature- und Datensatzeingabe |
In diesem Thema erfahren Sie, wie Sie die Feature-Set- und Record-Set-Steuerelemente verwenden. |
Umgebung
Sie können als Standardwert eines Parameters den Wert einer Umgebungseinstellung festlegen, indem Sie mit der rechten Maustaste auf die Zelle neben Umgebung klicken und den Namen der Umgebungseinstellung auswählen. Sobald Sie eine Umgebungseinstellung ausgewählt haben, wird die Eigenschaft Standard ignoriert. Wenn Sie die Eigenschaft Standard anstelle der Eigenschaft Umgebung verwenden möchten, lassen Sie die Eigenschaft Umgebung leer, indem Sie in der Dropdown-Liste den leeren Eintrag auswählen.
Filter
Falls für einen Parameter nur bestimmte Werte oder Dataset-Typen eingegeben werden sollen, können Sie einen Filter festlegen. Klicken Sie auf die Zelle neben Filter, und wählen Sie den gewünschten Filter in der Dropdown-Liste aus. Daraufhin wird ein Dialogfeld geöffnet, in dem Sie die Werte für den Filter angeben können. Es stehen je nach Datentyp des Parameters sechs unterschiedliche Filtertypen zur Verfügung.
Filtertyp |
Werte |
---|---|
Werteliste |
Eine Liste mit Zeichenfolgen oder numerischen Werten. Wird mit den Parameterdatentypen "String", "Long", "Double" und "Boolean" verwendet. |
Range |
Ein Bereich zwischen Minimal- und Maximalwert. Wird mit den Datentypen "Long" und "Double" verwendet. |
Feature-Class |
Liste der zulässigen Feature-Class-Typen: "Point", "Multipoint", "Polyline", "Polygon", "MultiPatch", "Sphere", "Annotation" und "Dimension". Es können mehrere Werte für den Filter bereitgestellt werden. |
Datei |
Liste mit Dateisuffixen, etwa "txt; e00; ditamap". |
Field |
Liste der zulässigen Feldtypen: "Short", "Long", "Single", "Double", "Text", "Date", "OID", "Geometry", "Blob", "Raster", "GUID", "GlobalID" und "XML". Es können mehrere Werte für den Filter bereitgestellt werden. |
Workspace |
Liste der zulässigen Workspace-Typen: "Dateisystem", "Lokale Datenbank" oder "Remote-Datenbank". Es können mehrere Werte bereitgestellt werden. |
In der Regel kann nur ein Filtertyp ausgewählt werden. Nur "Long" und "Double" bieten zwei Möglichkeiten: Werteliste und Bereich
Sie können Filter auch durch Programmierung festlegen, indem Sie Validierungslogik bereitstellen.
Weitere Informationen zur Validierungslogik
Werteliste
Der Wertelistefilter ist hilfreich, wenn Sie eine Reihe von Schlüsselwörtern bereitstellen möchten. Viele Werkzeuge warten mit vordefinierten Schlüsselwörtern auf, etwa der Parameter für den Feldtyp, der in Feld hinzufügen zu finden ist, oder der Parameter JoinAttributes, der in zahlreichen Werkzeugen des Toolsets Overlay zu finden ist.
Der Wertelistefilter kann für die Datentypen "Long" und "Double" verwendet werden. Für diese Typen geben Sie die zulässigen numerischen Werte ein.
Wenn Sie möchten, dass Benutzer unter mehreren Werten wählen können, legen Sie die Eigenschaft für mehrfache Werte, MultiValue, auf "Ja" fest.
Eine Werteliste kann für boolesche Datentypen verwendet werden. Bei booleschen Datentypen enthält die Werteliste zwei Werte: "true" und "false". Der Wert "true" ist immer der erste Wert in der Liste. Diese Werte werden in der Befehlszeile zur Angabe des Wertes verwendet. Beispiele sind Feld hinzufügen und die Schlüsselwörter {NULLABLE | NON_NULLABLE} für die Eigenschaft IsNullable.
Range
Parameter des Typs "Long" und "Double" können einen Bereichsfilter aufweisen. Bereichsfilter haben zwei Werte: den Minimal- und den Maximalwert. Der erste Wert in der Liste ist der Minimalwert. Der Bereich ist einschließend, das heißt, Minimalwert und Maximalwert gehören zur gültigen Auswahl.
Feature-Class
Sie können für diesen Filter einen oder mehrere Filterwerte auswählen. Eingabe-Feature-Classes werden anhand der Filterwerte überprüft. Wenn Sie also beispielsweise nur "Points" als Filterwert auswählen, können Benutzer nur Point-Feature-Classes als Parameterwert eingeben.
Datei
Der Dateifilter enthält eine Liste mit Dateisuffixen, die eine Datei aufweisen darf, beispielsweise txt (einfache Textdatei) und csv (kommagetrennte Werte). Sie können einen beliebigen Text für ein Suffix eingeben, es muss kein in ArcGIS bekanntes Suffix sein. Die Länge des Suffix ist nicht begrenzt. Der Punkt gehört nicht zum Suffix.
Field
Der Feldfilter definiert die zulässigen Feldtypen: "Short", "Long", "Single", "Double", "Text", "Date", "OID", "Geometry", "Blob", "Raster", "GUID", "GlobalID" und "XML". Es können mehrere Werte für den Filter bereitgestellt werden.
Workspace
Der Workspace-Filter legt die zulässigen Typen für Eingabe-Workspaces fest. Es gibt drei mögliche Werte:
- FileSystem
Ein Systemordner zum Speichern von Shapefiles, Coverages, INFO-Tabellen und Grids
- LocalDatabase
Eine Personal- oder File-Geodatabase
- RemoteDatabase
Eine ArcSDE-Datenbankverbindung
Abgerufen von
Die Eigenschaft "Abgerufen von" hat zwei Verwendungszwecke:
- Bei abgeleiteten Ausgabeparametern wird Abgerufen von auf den Eingabeparameter festgelegt, der vom Werkzeug geändert wird. Weitere Informationen zu abgeleiteten Daten und zu Abgerufen von finden Sie weiter oben in der Erläuterung zur Eigenschaft Typ.
- Bei Eingabeparametern enthält Abgerufen von den Namen des anderen, vom Datentyp verwendeten Parameters. Bei einem Eingabefeld-Datentyp wird für Abgerufen von beispielsweise der Name des Tabellenparameters festgelegt, der die Felder enthält (siehe unten).
Sie können die Eigenschaft "Abgerufen von" nur für bestimmte Eingabeparameter festlegen, wie in der folgenden Tabelle dargestellt.
Eingabedatentyp |
"Abgerufen von"-Datentyp |
Beschreibung |
---|---|---|
Feld oder SQL-Ausdruck |
Tabelle |
Die Tabelle mit den Feldern. |
INFO-Feld oder INFO-Ausdruck |
INFO-Tabelle |
Die INFO-Tabelle mit den Feldern. |
Coverage-Feature-Class |
Coverage |
Das Coverage mit den Features. |
Flächeneinheiten oder lineare Einheiten |
GeoDataset |
Geographisches Dataset, das zum Ermitteln der Standardeinheiten verwendet wird. |
Koordinatensystem |
Workspace |
Workspace, der zum Ermitteln des Standardkoordinatensystems verwendet wird. |
Hierarchie-Einstellungen für Network Analyst |
Netzwerk-Dataset |
Netzwerk-Dataset mit den Informationen zur Hierarchie. |
Geostatistische Wertetabelle |
Geostatistischer Layer |
Der Analyse-Layer mit den Tabellen. |
Symbologie
Wenn die Ausgabe Ihres Werkzeugs ein Feature-Set, Raster, TIN oder Erweiterung "ArcGIS Network Analyst"-Erweiterungslayer ist, können Sie in der Eigenschaft Symbologie den Speicherort einer Layer-Datei (.lyr) angeben. Wenn das Werkzeug in ArcMap, ArcGlobe oder ArcScene ausgeführt wird und dabei Ergebnisse des Geoverarbeitungsvorgangs der Anzeige hinzufügen aktiviert ist, wird die Ausgabe der Anzeige hinzugefügt und unter Verwendung der in der Symbologie-Layer-Datei definierten Symbologie dargestellt.
Die Layer-Datei wird bei jeder Ausführung des Werkzeugs gelesen. Wenn die Layer-Datei nicht gefunden wird (da sie verschoben oder gelöscht wurde), wird die Standardsymbologie verwendet.