Anpassen des Verhaltens von Skriptwerkzeugen

Sie können für das Dialogfeld "Skriptwerkzeug" benutzerdefiniertes Verhalten festlegen, etwa das Aktivieren und Deaktivieren von Parametern, das Bereitstellen von Standardwerten und das Aktualisieren von Zeichenfolgen-Schlüsselwörtern. Um für ein Skriptwerkzeug benutzerdefiniertes Verhalten festzulegen, klicken Sie mit der rechten Maustaste auf das Skriptwerkzeug, wählen Sie dann zuerst die Option Eigenschaften, und klicken Sie anschließend auf die Registerkarte Validierung. Im Fenster "Validierung" können Sie mit Python-Code die Python-Klasse "ToolValidator" implementieren. Der zusätzliche Python-Code bietet Ihnen folgende Möglichkeiten:

Funktionsweise von ToolValidator

Die ToolValidator-Klasse ist ein Block mit Python-Code, mit dem die Geoverarbeitung steuert, wie sich das Werkzeugdialogfeld und das Python-Fenster basierend auf der Benutzereingabe ändern. Darüber hinaus werden mit der ToolValidator-Klasse die Ausgabedaten des Werkzeugs beschrieben, was wichtig für die Modellberechnung ist. Die von Esri bereitgestellten Systemwerkzeuge waren schon immer in der Lage, auf Benutzereingaben zu reagieren und das Werkzeugdialogfeld wie oben beschrieben entsprechend anzupassen.

Ältere VersionenÄltere Versionen:

Skriptwerkzeuge waren vor ArcGIS 9.3 dazu jedoch nicht in der Lage. Das Werkzeugdialogfeld war statisch, und die Ausgabe des Skriptwerkzeugs enthielt keine aktualisierte Beschreibung, wodurch die Arbeit mit Skriptwerkzeugen in ModelBuilder erschwert wurde. Die ToolValidator-Klasse sorgt dafür, dass Ihnen sämtliche Funktionen eines Systemwerkzeugs zur Verfügung stehen.

Die ToolValidator-Klasse wird zwar mit Python-Code implementiert, für die eigentliche Funktion des Werkzeugs können Sie jedoch jede Skriptsprache verwenden.

ToolValidator und Validierung

Validierung bedeutet die Überprüfung, ob alle Werkzeugparameter korrekt sind und ob im Falle eines Fehlers sinnvolle Meldungen bereitgestellt werden. Die Validierung besteht aus zwei Teilen:

  • Ihrem eigenen Anteil, den Sie durch Hinzufügen von Code zur ToolValidator-Klasse übernehmen.
  • Dem von ArcGIS automatisch durchgeführten Teil. Dieser Teil der Validierung wird als interne Prüfung (bzw. Basisprüfung) bezeichnet, da es sich um die grundlegende Überprüfung handelt, die intern von der Geoverarbeitung in ArcGIS vorgenommen wird.

Werfen wir zunächst einen Blick auf die Funktionen der internen Prüfung:

  • Falls ein Parameter erforderlich ist, wird geprüft, ob er leer ist (noch nichts eingegeben wurde). Ist dies der Fall, wird die Meldung "Wert ist erforderlich" im Werkzeugdialogfeld angezeigt (mit einem grünen Punkt anstelle eines roten X).
  • Es wird geprüft, ob der eingegebene Wert den richtigen Typ aufweist (z. B., ob anstelle einer Feature-Class ein Raster oder anstelle einer Zahl Buchstaben eingegeben wurden).
  • Die Filtermitgliedschaft wird geprüft. Beispiel: Wenn ein Wertelistefilter mit den Schlüsselwörtern ROT, ORANGE und GELB vorliegt und BLAU eingegeben wird, wird eine Fehlermeldung angezeigt, da sich BLAU nicht im Wertelistefilter befindet.
  • Das Vorhandensein von Eingabe-Datasets wird überprüft.
  • Es wird ein standardmäßiger Katalogpfad für Ausgabe-Datasets erzeugt.
  • Die Beschreibung der Ausgabedaten wird auf Grundlage der Regeln in einem speziellen Objekt aktualisiert, das als Schema bezeichnet wird.
  • Das Vorhandensein von Ausgabe-Datasets wird anhand der Umgebungseinstellung "overwriteOutput" überprüft. Wenn das Dataset vorhanden ist und die overwriteOutput-Einstellung "false" lautet, wird eine Fehlermeldung ausgegeben, anderenfalls eine Warnung.
  • Wenn es sich bei dem Parameter um einen Felddatentyp handelt, wird überprüft, ob das Feld in der zugehörigen Tabelle vorhanden ist.
  • Es wird überprüft, ob sich das Ausgabe-Dataset vom Eingabe-Dataset unterscheidet (es sei denn, die Ausgabe wurde abgeleitet, wie bei Feld hinzufügen).
  • Bei Parametern mit den Datentypen "lineare Einheit" oder "Flächeneinheit" werden die Standardwerte festgelegt, indem die entsprechenden Werte in ArcMap ermittelt werden (sofern die Ausführung über ArcMap erfolgt).
  • Wenn es sich bei der Ausgabe um ein Coverage, ein Grid oder eine INFO-Tabelle handelt, wird überprüft, ob die bei diesen Datasets vorgeschriebene maximale Anzahl von 13 Zeichen für den Dateinamen eingehalten wurde.

Die folgenden Aufgaben werden nicht von der internen Prüfung durchgeführt, Sie können sie jedoch mit der ToolValidator-Klasse selbst übernehmen:

  • Aktualisierung von Filtern auf Grundlage der Interaktion mit anderen Parametern. Beispiel: Wenn Benutzer eine Point-Feature-Class im ersten Parameter eingeben, soll im Werkzeugdialogfeld ROT, ORANGE und GELB im dritten Parameter angezeigt werden. Wird eine Polygon-Feature-Class eingegeben, soll im dritten Parameter BLAU, GRÜN und LILA angezeigt werden.
  • Aktivierung/Deaktivierung von Parametern
  • Berechnung von Standardwerten
  • Durchführung werkzeugspezifischer Parameterinteraktionen

Der Code, den Sie der ToolValidator-Klasse hinzufügen, funktioniert wie folgt zusammen mit der internen Prüfung:

  • Sie können Regeln bereitstellen, anhand derer die interne Prüfung die Beschreibung der Ausgabe-Datasets aktualisiert. Diese Regeln sind im Schema-Objekt enthalten.
  • Sie können Filter vor der internen Prüfung aktualisieren. Obiges Beispiel: Wenn eine Point-Feature-Class eingegeben wird, wird der Filter so aktualisiert, dass er ROT, ORANGE und GELB enthält. Die interne Prüfung prüft dann den vom Benutzer eingegebenen Wert anhand der Werte im Filter.

Darüber hinaus können, wie bereits erwähnt, mit der ToolValidator-Klasse Standardwerte berechnet, Parameter aktiviert bzw. deaktiviert und Meldungen individuell angepasst werden. Diese Aktionen wirken sich nicht auf die interne Prüfung aus, sie beeinflussen lediglich das Aussehen des Werkzeugdialogfeldes.

Anpassen des Werkzeugdialogfeldes mit der ToolValidator-Klasse

ToolValidator ist eine Python-Klasse mit drei Methoden: initializeParameters(self), updateParameters(self) und updateMessages(self). Darüber hinaus enthält diese Klasse die Python-Standardmethode für die Klasseninitialisierung, __init__(self). Zum Anzeigen und Bearbeiten der ToolValidator-Klasse klicken Sie mit der rechten Maustaste auf das Skriptwerkzeug und wählen dann zuerst die Option Eigenschaften und anschließend die Registerkarte Validierung aus. In der folgenden Abbildung sehen Sie die Registerkarte Validierung mit dem Standardcode der ToolValidator-Klasse. Klicken Sie auf die Schaltfläche Bearbeiten, um den Code zu bearbeiten. Klicken Sie anschließend auf OK oder Übernehmen, um die vorgenommenen Änderungen zu übernehmen.

Feld "Validierung"

Methode

Beschreibung

__init__

Initialisiert die ToolValidator-Klasse. Importieren Sie alle benötigten Bibliotheken, und initialisieren Sie das Objekt (self).

initializeParameters

Wird beim ersten Öffnen des Werkzeugdialogfeldes bzw. bei der ersten Verwendung des Werkzeugs in der Befehlszeile ein Mal aufgerufen.

updateParameters

Wird bei jeder Parameteränderung im Werkzeugdialogfeld bzw. in der Befehlszeile aufgerufen. Im Anschluss an "updateParameters" ruft die Geoverarbeitung ihre eigene interne Prüfroutine auf.

updateMessages

Wird im Anschluss an die interne Prüfroutine aufgerufen. Sie können die von der internen Prüfung erstellten Meldungen überprüfen und ggf. ändern.

Übersicht über ToolValidator-Methoden
HinweisHinweis:

Rufen Sie keine anderen Geoverarbeitungswerkzeuge in ToolValidator auf, und öffnen Sie keine Datasets in ToolValidator, denn die ToolValidator-Klasse wird bei jeder Änderung im Werkzeugdialogfeld seitens des Benutzers ausgeführt. Geoverarbeitungswerkzeuge werden im Skript, aber nicht in der ToolValidator-Klasse verwendet.

HinweisHinweis:

Sie müssen die drei Methoden initializeParameters(self), updateParameters(self) und updateMessages(self)implementieren, da sie die ToolValidator-Klasse zu einer gültigen Python-Klasse machen.

Nachfolgend sind einige Beispiele für ToolValidator-Code aufgeführt. Eine vollständige Beschreibung aller Methoden sowie weitere Beispiele finden Sie unter Programmieren einer ToolValidator-Klasse.

Aktivieren bzw. deaktivieren eines Parameters

Dieses Beispiel stammt aus dem Werkzeug Hot Spot-Analyse.

def updateParameters(self):

  # If the option to use a weights file is selected (the user chose
  #  "Get Spatial Weights From File", enable the parameter for specifying 
  #  the file, otherwise disable it
  #
  if self.params[3].value == "Get Spatial Weights From File":
    self.params[8].enabled = 1
  else:
    self.params[8].enabled = 0

Hinweis zum Code: Wenn Sie boolesche Variablen festlegen, beispielsweise Enabled, können Sie folgende Syntaxmuster verwenden:

self.params[8].enabled = 1
self.params[8].enabled = bool(1)
self.params[8].enabled = True  # Note upper case: "True", not "true"

Alle Zahlen oder Werte, die nicht null sind, werden als "true" angesehen.

Festlegen eines Standardwertes

Dieses Beispiel stammt ebenfalls aus dem Werkzeug Hot Spot-Analyse.

def updateParameters(self):
  # Set the default distance threshold to 1/100 of the larger of the width
  #  or height of the extent of the input features.  Do not set if there is no 
  #  input dataset yet, or the user has set a specific distance (Altered is true).
  # 
  import string

  if self.params[0].value:
    if not self.params[6].altered:
      extent = string.split(arcpy.Describe(self.params[0].value).extent, " ")
      width = float(extent[2]) - float(extent[0])
      height = float(extent[3]) - float(extent[1])
      if width > height:
        self.params[6].value = width / 100
      else:
        self.params[6].value = height / 100
                
        return

Aktualisieren eines Filters

Das folgende Beispiel zeigt, wie Sie einen Wertelistefilter mit einer Auswahlliste von Schlüsselwörtern dynamisch aktualisieren. Wenn Benutzer beim zweiten Parameter "OLD_FORMAT" eingeben, enthält der dritte Parameter die Werte "POINT", "LINE" und "POLYGON". Bei Eingabe von "NEW_FORMAT" enthält der dritte Parameter drei weitere Optionen.

class ToolValidator:
  def __init__(self): 
    import arcpy 
    self.params = arcpy.GetParameterInfo()

  def initializeParameters(self):
    return

  def updateParameters(self):
    # Provide default values for "file format type" and 
    #  "feature type in file"
    #
    if not self.params[1].altered:
      self.params[1].value = "OLD_FORMAT"
    if not self.params[2].altered:
      self.params[2].value = "POINT"

    # Update the value list filter of the "feature type in file" parameter 
    #   depending on the type of file (old vs. new format) input
    #
    if self.params[1].value == "OLD_FORMAT":
      self.params[2].filter.list = ["POINT", "LINE", "POLYGON"]
    elif self.params[1].value == "NEW_FORMAT":
      self.params[2].filter.list = ["POINT", "LINE", "POLYGON",
                                    "POINT_WITH_ANNO",
                                    "LINE_WITH_ANNO",
                                    "POLYGON_WITH_ANNO"]

    return

  def updateMessages(self):
    return

Im Folgenden finden Sie ein weiteres Beispiel, bei dem sich der Wertelistefilter im zweiten Parameter an den im ersten Parameter angetroffenen Shape-Typ (eine Feature-Class) anpasst.

  def updateParameters(self):
    # Update the value list filter in the second parameter based on the 
    #   shape type in the first parameter
    #
    stringFilter = self.params[1].filter
    fc = self.params[0].value
    if fc:
        shapetype = arcpy.Describe(fc).shapeType.lower()
        if shapetype == "point" or shapetype == "multipoint":
            stringFilter.list = ["RED", "GREEN", "BLUE"]
        elif shapetype == "polygon":
            stringFilter.list = ["WHITE", "GRAY", "BLACK"]
        else:
            stringFilter.list = ["ORANGE", "INDIGO", "VIOLET"]
    else:
        stringFilter.list = ["RED", "GREEN", "BLUE"]

    # If the user hasn't changed the keyword value, set it to the default value
    #  (first value in the value list filter).
    #
    if not self.params[1].altered:
        self.params[1].value = stringFilter.list[0]
        
    return

Anpassen einer Meldung

def updateMessages(self):
  self.params[6].clearMessage()

  # Check to see if the threshold distance contains a value of zero and the user has
  #  specified a fixed distance band.
  #
  if self.params[6].value <= 0:
    if self.params[3].value == "Fixed Distance Band":
      self.params[6].setErrorMessage("Zero or a negative distance is invalid \
                                      when using a fixed distance band. Please \
                                      use a positive value greater than zero." )
      elif self.params[6].value < 0:
        self.params[6].setErrorMessage("A positive distance value is required \
                                        when using a fixed distance band. \
                                        Please specify a distance.")

  return

Aktualisieren der Beschreibung von Ausgabedaten mit dem Schema-Objekt

Neben der Anpassung des Verhaltens des Werkzeugdialogfeldes können Sie mit der ToolValidator-Klasse auch die Beschreibungen der Ausgabedatenvariablen für ModelBuilder aktualisieren. Sie können sich Datenvariablen in ModelBuilder einfach als kurze Beschreibungen von Datasets wie unten dargestellt vorstellen. Datenvariablen enthalten alle Eigenschaften, auf die Sie mit der Funktion Describe in Python zugreifen.

Grundlegende Datenbeschreibung

Alle Werkzeuge sollten die Beschreibung ihrer Ausgabedaten für die Verwendung in ModelBuilder aktualisieren. Durch die Aktualisierung der Beschreibung können nachfolgende Prozesse in ModelBuilder erkennen, ob Datenänderungen ausstehen, bevor ein Prozess ausgeführt wird. Die beiden folgenden Beispiele zeigen, wie nachfolgende Prozesse ausstehende Änderungen erkennen.

Das erste unten dargestellte Beispiel zeigt ein Modell mit den Werkzeugen Feld hinzufügen und Feld berechnen. Bei Feld hinzufügen wird die Ausgabe-Datenvariable Parks (2) so aktualisiert, dass sie das neue Feld "TrackingID" enthält. Da die Ausgabe aktualisiert wird, ist im Dialogfeld Feld berechnen der Eintrag "TrackingID" in der Liste der Feldnamen enthalten.

Modell mit Werkzeug "Ausschneiden"

Das zweite Beispiel (keine Abbildung) ist ein Modell, bei dem die Ausgabe des Werkzeugs Ausschneiden als Eingabe für das Werkzeug Polygon in Raster fungiert. Da das Werkzeug Ausschneiden die Eingabe-Features lediglich wie mit einer Ausstechtechnik erstellt, verfügt die Ausgabe-Feature-Class über die gleichen Eigenschaften wie die Eingabe-Feature-Class, mit einer Ausnahme, nämlich der geographischen Ausdehnung. Die geographische Ausdehnung der Ausgabe-Feature-Class ist der geometrische Schnittpunkt der Eingabe-Feature- und der Clip-Feature-Ausdehnung. Das Werkzeug Polygon in Raster bestimmt anhand der neuen geographischen Ausdehnung die standardmäßige Zellengröße.

In der ToolValidator-Klasse können Sie mit einem Schema-Objekt Regeln für den Aufbau der Ausgabebeschreibung festlegen. Sie haben beispielsweise die Möglichkeit, folgende Regeln zu definieren:

Ausgabeparameter verfügen über ein Schema

Das Schema-Objekt wird von der Geoverarbeitung erstellt. Jeder Ausgabeparameter des Typs Feature-Class, Tabelle, Raster oder Workspace verfügt über ein Schema-Objekt. Nur die Ausgabe-Datentypen "Feature-Class", "Tabelle", "Raster" und "Workspace" verfügen über ein Schema. Sie greifen über das Parameterobjekt auf das Schema zu und legen Regeln für die Ausgabebeschreibung fest. Im Anschluss an updateParameters überprüft die interne Prüfroutine die festgelegten Regeln und aktualisiert die Ausgabebeschreibung.

Festlegen von Abhängigkeiten

Wenn Sie beispielsweise die Regel "Die Dataset-Felder in Parameter 3 kopieren und dann ein Feld hinzufügen" erstellen, müssen Sie für das Schema-Objekt angeben, aus welchem Parameter kopiert werden soll (Parameter 3). Sie erreichen dies, indem Sie dem Parameterobjekt Abhängigkeiten hinzufügen. Sie können auch mehrere Abhängigkeiten hinzufügen.

def initializeParameters(self):
  # Set the dependencies for the output and its schema properties
  #
  self.params[2].parameterDependencies = [0, 1]

Für ParameterDependencies ist eine Python-Liste erforderlich.

Die Verwendung von Listen und Listenauflistungen erscheint auf den ersten Blick vielleicht verwirrend, Sie werden sich jedoch schnell daran gewöhnen und feststellen, dass sie sehr nützlich sind. Im Folgenden finden Sie Python-Code, der die Verwendung von Listen und Listenauflistungen zeigt. Die Beispiele sind im interaktiven Modus dargestellt (Python-Fenster, interaktives Fenster in PythonWin bzw. Python-Shell in IDLE), in dem Sie Code eingeben und unmittelbare Ergebnisse erhalten.

Beispiel 1: In Python werden alle mit eckigen Klammern umschlossenen Variablen oder Literale zu einer Liste. Wenn Sie eine Liste ausgeben, werden die eckigen Klammern hinzugefügt.

>>> a = [1]
>>> print a
[1]
>>> b = 2
>>> c = [b]
>>> print c
[2]

Beispiel 2: Eine Liste kann eine beliebige Anzahl von Elementen jeden Typs enthalten. Um auf ein Element in einer Liste zuzugreifen, verwenden Sie eckige Klammern, die den Indexwert des Elements enthalten. Das erste Element in einer Liste ist immer [0].

>>> a = [1, "two", 12.6]
>>> print a
[1, 'two', 12.6]
>>> print a[0]	
1

Beispiel 3: Eine einfache Listenauflistung

>>> listOfLists = [ [1,2,3], ["one", "two", "three"] ]
>>> print listOfLists
[[1, 2, 3], ['one', 'two', 'three']]
>>> print listOfLists[0]
[1, 2, 3]
>>> print listOfLists[0][2]
3
>>> print listOfLists[1][2]
three

Beispiel 4: Weitere Listenauflistungen. Beachten Sie, dass die Mitgliedslisten unterschiedlich lang sein können.

>>> listA = [1, 2, 3]
>>> listB = ["a", "b", "C", "Z"]
>>> listOfLists = [listA, listB]
>>> print listOfLists
[[1, 2, 3], ['a', 'b', 'C', 'Z']]
>>> print listOfLists[1][3]
Z

Beispiel 5: Zuerst wird eine leere Liste erstellt, anschließend werden Elemente hinzugefügt und entfernt.

>>> a = []
>>> a.append("zero")
>>> print a
['zero']
>>> b = [1, 2, 3]
>>> a.append(b)
>>> print a
['zero', [1, 2, 3]]
>>> a.remove([1, 2, 3])
>>> print a
['zero']

Weitere Informationen zu Python-Listen und Python im Allgemeinen finden Sie unter http://docs.python.org/.

Die folgenden Beispiele zeigen, wie Sie Abhängigkeiten festlegen und verwenden.

Beispiele für das Festlegen von Abhängigkeiten: "Ausschneiden" und "Feld hinzufügen"

Zur Erinnerung: Das Werkzeug Ausschneiden erstellt eine Kopie der Eingabe-Feature-Definition und legt dann die Ausdehnung auf den Schnittpunkt zwischen Eingabe-Features und Clip-Features fest. Das folgende Beispiel zeigt, wie diese Regel in ToolValidator implementiert wird. (Da es sich bei Ausschneiden um ein integriertes Werkzeug und kein Skript handelt, wird keine Python-ToolValidator-Klasse verwendet. Integrierte Werkzeuge führen die Validierung mit internen Routinen durch, die im Wesentlichen der ToolValidator-Klasse entsprechen. Würde das Werkzeug jedoch die Python-Klasse "ToolValidator" verwenden, sähe diese wie folgt aus.)

def initializeParameters(self):
  # Set the dependencies for the output and its schema properties
  #
  self.params[2].parameterDependencies = [0, 1]

  # Feature type, geometry type, and fields all come from the first 
  #  dependent (parameter 0), the input features
  #
  self.params[2].schema.featureTypeRule = "FirstDependency"
  self.params[2].schema.geometryTypeRule = "FirstDependency"
  self.params[2].schema.fieldsRule = "FirstDependency"

  # The extent of the output is the intersection of the input features and 
  #  the clip features (parameter 1)
  #
  self.params[2].schema.extentRule = "Intersection"

  return

def updateParameter(self):
  return

Das Werkzeug Feld hinzufügen kopiert die Definition eines Eingabeparameters und fügt das benutzerdefinierte Feld hinzu. Wenn Sie den folgenden Link aufrufen, erfahren Sie, wie die Funktion Feld hinzufügen in ToolValidator implementiert wird.

Beispiel für die Verwendung von "AdditionalFields"

Festlegen des Schemas in "initializeParameters" im Vergleich zu "updateParameters"

Beachten Sie, dass im obigen Beispiel mit dem Werkzeug Ausschneiden das Schema-Objekt in initializeParameters geändert wird und dass updateParameters lediglich zurückgibt. Feld hinzufügen dagegen muss das Schema-Objekt in updateParameters ändern, da dieser Funktion die Definition des hinzuzufügenden Feldes erst dann zur Verfügung steht, wenn ein Benutzer Informationen bereitstellt (und updateParameters aufgerufen wird).

Sie können sich diese beiden Fälle als statisch im Vergleich zu dynamisch vorstellen. Ausschneiden ist lediglich auf die Datasets in den abhängigen Parametern angewiesen (statisch), während Feld hinzufügen andere (unabhängige) Parameter wie etwa den Feldnamen und den Feldtyp überprüfen muss (dynamisch).

Dieses statische und dynamische Verhalten wird an der Art und Weise deutlich, wie eine ToolValidator-Klasse aufgerufen wird:

  1. Beim ersten Öffnen des Werkzeugdialogfeldes wird initializeParameters aufgerufen. Sie legen die statischen Regeln für die Ausgabebeschreibung fest. Zu diesem Zeitpunkt wird keine Ausgabebeschreibung erstellt, da der Benutzer keine Werte für die Parameter bereitgestellt hat.
  2. Sobald ein Benutzer mit dem Werkzeugdialogfeld interagiert, wird updateParameters aufgerufen.
  3. updateParameters kann das Schema ändern, um dynamischem Verhalten Rechnung zu tragen, das nicht anhand der Parameterabhängigkeiten bestimmt werden kann, wie etwa das Hinzufügen eines neuen Feldes mit Feld hinzufügen.
  4. Im Anschluss an updateParameters werden die internen Prüfroutinen aufgerufen und die Beschreibung der Ausgabedaten wird anhand der im Schema-Objekt enthaltenen Regeln aktualisiert.
  5. Anschließend wird updateMessages aufgerufen. Sie können die von der internen Prüfung ausgegebenen Warnungen und Fehlermeldungen überprüfen und ggf. ändern bzw. weitere Warnungen und Fehlermeldungen hinzufügen.

Name des Ausgabe-Datasets: Klonen einer abgeleiteten Ausgabe im Vergleich zur erforderlichen Ausgabe

Wenn Sie für die Eigenschaft Schema.Clone den Wert "true" festlegen, weisen Sie die Geoverarbeitung an, eine exakte Kopie (einen Klon) der Beschreibung im ersten abhängigen Parameter in der Liste mit den Parameterabhängigkeiten zu erstellen. Normalerweise wird die Kloneigenschaft in initializeParameters und nicht in updateParameters auf "true" festgelegt, da sie nur einmal festgelegt werden muss.

Falls "ParameterType" für den Ausgabeparameter auf "Derived" gesetzt wird, wird eine exakte Kopie angefertigt. Dieses Verhalten findet man beim Werkzeug Feld hinzufügen.

Falls "ParameterType" auf "Required" gesetzt wird, wird ebenfalls eine exakte Kopie angefertigt, der Katalogpfad zum Dataset wird jedoch geändert. Da die meisten Werkzeuge neue Daten erstellen, ist dies das gängigste Verhalten.

Weitere Informationen

Unter Programmieren einer ToolValidator-Klasse finden Sie genaue Informationen zum Parameter-, Schema- und Filterobjekt sowie Codebeispiele.

Alle skriptbasierten Systemwerkzeuge, etwa das Werkzeug Mehrfachring-Puffer verfügen über ToolValidator-Code, den Sie überprüfen und studieren können. Viele Werkzeuge in der Toolbox Spatial Statistics Tools sind Skriptwerkzeuge mit einer ToolValidator-Implementierung, die Sie untersuchen können.

Fehler bei der ToolValidator-Implementierung – seien es Syntax-, Laufzeit- oder logische Fehler – können nicht immer vermieden werden. Unter Debuggen einer ToolValidator-Klasse erfahren Sie, wie die Geoverarbeitung Fehler abfängt und meldet. Darüber hinaus erhalten Sie Tipps für das Debugging, also die Fehlerbeseitigung.


7/10/2012