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.

Erstellen neuer Parameter

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.

Definieren des Datentyps eines Parameters

Jeder Parameter verfügt über weitere Eigenschaften, die Sie wie unten gezeigt festlegen können.

Parametereigenschaften

Eigenschaft

Beschreibung

Typ

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.

Richtung

Kann die Werte "Eingabe" oder "Ausgabe" annehmen. Bei abgeleiteten Parametern ist die Richtung immer "Ausgabe".

MultiValue

"MultiValue" wird auf "Ja" gesetzt, wenn eine Werteliste verwendet werden soll, und auf "Nein", wenn ein einzelner Wert verwendet werden soll.

Standard oder Schema

Der Standardwert für den Parameter. Wenn der Datentyp des Parameters ein Feature-Set oder Record-Set ist, wird Standard durch Schema ersetzt.

Umgebung

Falls der Standardwert des Parameters einer Umgebungseinstellung entnommen werden soll, enthält diese Eigenschaft den Namen der Umgebungseinstellung.

Filter

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.

Abgerufen von

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.

Symbologie

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.

Parametereigenschaften

Typ

Es gibt drei Auswahlmöglichkeiten bei der Eigenschaft "Typ":

HinweisHinweis:

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.

Werkzeug ohne Ausgabe in ModelBuilder

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.)

Werkzeug mit abgeleiteter Ausgabe

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.

Ausgabe abgeleiteter Daten, die nicht von einem Eingabeparameter abgerufen wurden

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.

Die folgende Abbildung zeigt die beiden Steuerelemente für mehrwertige Parameter.

Steuerelemente für mehrere Werte (MultiValue)

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.

Feature-Sets und Record-Sets

Weitere Informationen zu Feature-Sets und Record-Sets erhalten Sie, wenn Sie auf die folgenden Links klicken.

Thema

Beschreibung

FeatureSet- und RecordSet-Objekte

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.

Themen in Bezug auf Feature-Sets und Record-Sets

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.

Auswählen einer Umgebungseinstellung

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.

Filtertyp und Werte

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.

Angeben eines Dateifilters

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:

"Abgerufen von" für einen Felddatentyp

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.

"Abgerufen von"-Datentypen

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.

AchtungAchtung:

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.

Verwandte Themen

9/11/2013