Wert berechnen (ModelBuilder)
Zusammenfassung
Das Werkzeug "Wert berechnen" gibt einen auf einem angegebenen Python-Ausdruck basierenden Wert zurück.
Verwendung
-
Dieses Werkzeug ist nur für die Verwendung in ModelBuilder, nicht in Python-Skripten vorgesehen.
-
Der Parameter Datentyp wird in ModelBuilder verwendet, um die Ausgabe des Werkzeugs Wert berechnen mit anderen Werkzeugen verketten zu können. Wenn Sie das Werkzeug Wert berechnen z. B. zum Berechnen einer Entfernung als Eingabe für den Parameter Pufferabstand des Werkzeugs Puffer verwenden, können Sie für den Parameter Datentyp "Lineare Einheit" angeben.
-
In ModelBuilder erstellte Variablen können in diesem Werkzeug verwendet werden, Variablen für den Parameter "Ausdruck" können jedoch nicht mit dem Werkzeug Wert berechnen verbunden werden. Wenn Sie diese im Ausdruck verwenden möchten, setzen Sie den Variablennamen in Prozentzeichen (%). Wenn Sie beispielsweise die Variable "Eingabe" durch 100 dividieren möchten, muss der Ausdruck %Eingabe%/100 lauten.
Hinweis: Wenn im oben aufgeführten Ausdruck Eingabe = 123 ist, gibt der Ausdruck 1 zurück. Um Dezimalstellen zu erhalten, fügen Sie den Werten im Ausdruck Dezimalstellen hinzu. Beispiel: %Eingabe%/100,00 gibt 1,23 zurück. Die Abbildung unten veranschaulicht ein weiteres Beispiel für die Verwendung von Eigenschaften im Ausdruck.
Achtung:Inline-Variablen vom Typ "Zeichenfolge" müssen in Ausdrücken in Anführungszeichen eingeschlossen werden ("%Zeichenfolgevariable%"). Für Inline-Variablen mit numerischen Typen ("Double", "Long") sind keine Anführungszeichen erforderlich (%Double%).
-
Ausdrücke können NUR in einem Standard-Python-Format erstellt werden. Andere Skriptsprachen werden nicht unterstützt.
-
Mit dem Werkzeug Wert berechnen können einfache mathematische Ausdrücke ausgewertet werden. Beispiel:
- 3+5
- 9*8
- 4+(9/3)
-
Mit dem Werkzeug Wert berechnen kann das math-Modul von Python zur Durchführung komplexer mathematischer Operationen eingesetzt werden. Zum Aufrufen des mathematischen Moduls muss der gewünschten Funktion "math" vorangestellt werden. Beispiel:
- math.sqrt(25)
- math.cos(0.5)
-
Das math-Modul unterstützt außerdem Konstanten. Beispiel:
- math.pi
-
Die arcgis.rand()-Funktion wird unterstützt. Die arcgis.rand()-Funktion wurde für ArcGIS-Werkzeuge erstellt und darf nicht mit der Rand()-Funktion von Python verwechselt werden. Es folgen einige Beispiele für die Verwendung von arcgis.rand():
- Berechnung eines Zufallswertes, der von einer Ganzzahl-Gleichverteilung zwischen 0 und 10 abgeleitet wurde: arcgis.rand("Ganzzahl 0 10")
- Berechnung eines von einer Normalverteilung mit einem Mittelwert von 10 und einer Standardabweichung von 3 abgeleiteten Zufallswertes: arcgis.rand("Normal 10 3")
Achtung:Der Ausdruck arcgis.rand muss immer mit Kleinbuchstaben eingegeben werden.
-
Am Allgemeinen geben Sie die Ausdrücke im Parameter Ausdruck ein. Für kompliziertere Ausdrücke, wie zum Beispiel mehrzeilige Berechnungen oder logische Operationen ("if", "then"), muss der Codeblock-Parameter verwendet werden. Der Codeblock-Parameter kann nicht alleine verwendet werden. Er muss in Verbindung mit dem Ausdruck-Parameter eingesetzt werden.
Der Ausdruck kann auf die im Codeblock-Parameter definierten Variablen verweisen.
Funktionen können im Codeblock-Parameter definiert und im Ausdruck aufgerufen werden. Im folgenden Beispiel gibt die Funktion auf der Grundlage eines Zufallseingabewertes eine Windrichtungszeichenfolge zurück. In Python werden Funktionen mit dem Schlüsselwort def definiert, auf das der Name der Funktion und die Eingabeparameter der Funktion folgen. In diesem Fall lautet die Funktion getWind, und sie umfasst einen einzelnen Parameter mit dem Namen wind. Werte werden von einer Funktion mit dem Schlüsselwort return zurückgegeben.
Sie können eine Variable im Parameter "Ausdruck" übergeben und im Codeblock die If-Else-Logik für Inline-Variablen verwenden. Im Codeblock wird überprüft, ob die Variable Input Cell Size leer ist, und dann wird je nach Bedingung ein Wert zurückgegeben.
Python-Methoden können direkt im Parameter "Ausdruck" des Werkzeugs verwendet werden. Wenn beispielsweise ein Eingabewert mit Dezimalstellen (in diesem Fall der Feldwert der Eingabe-Tabelle) vorliegt und Sie den Wert per Inline-Variablenersetzung im ausgegebenen Namen eines anderen Werkzeugs verwenden möchten, können Sie den Dezimalwert im Ausdruck des Werkzeugs Wert berechnen mit der replace-Methode von Python ersetzen.
Im Parameter "Codeblock" können Python-Module aufgerufen und Methoden wie "replace" kombiniert oder gestapelt werden. Im folgenden Beispiel wird das time-Modul in den Codeblock importiert, der wiederum das aktuelle Datum und die Uhrzeit zurückgibt, z. B. Fri Mar 19 2010 09:42:39. Dieser zurückgegebene Wert wird im Werkzeug Ordner erstellen als Name für den Ordner verwendet. Da der Name des Ordners keine Leerzeichen oder Interpunktionszeichen enthalten darf, wird die Methode replace von Python für jedes zu ersetzende Element gestapelt. Der Name des Ordners in diesem Beispiel lautet daher FriMar192010094239.
Wenn Sie im Modell einen Wert berechnen und den berechneten Wert in Werkzeugen wie Puffer verwenden möchten, die sowohl einen Wert für den Pufferabstand als auch eine lineare Einheit erfordern, müssen Sie wie folgt vorgehen:
- Geben Sie die lineare Einheit im Codeblock zusammen mit dem Distanzwert zurück.
- Ändern Sie den Datentyp der zurückgegebenen Werte wie unten dargestellt.
- Legen Sie den Parameter für den Datentyp auf "Lineare Einheit" fest, sodass das Ergebnis des Ausdrucks in eine lineare Einheit konvertiert wird.
Sie können die Ausgabe des Werkzeugs Wert berechnen direkt in einem beliebigen Werkzeug von ArcGIS Spatial Analyst verwenden, das ein Raster oder einen konstanten Wert wie Plus,Greater than und Less than akzeptiert (diese Werkzeuge befinden sich in der Toolbox Spatial Analyst /Toolset "Mathematik"). Um die Ausgabe von Wert berechnen zu verwenden, ändern Sie den Ausgabedatentyp in "Formuliertes Raster". Dieses Format des Ausgabedatentyps ist eine Raster-Oberfläche, deren Zellenwerte durch eine Formel oder eine Konstante angegeben werden.
-
In Python bilden richtige Einrückungen einen wichtigen Teil der Syntax. Die Einzugsebene (zwei oder vier Leerstellen) spielt keine Rolle, solange sie innerhalb des Codeblocks einheitlich ist.
-
Vom Codeblock kann nicht auf Modellvariablen zugegriffen werden. Solche Variablen müssen vom Ausdruck an den Codeblock übergeben werden. Dies kann durch Erstellen einer Definition im Codeblock und Verweisen auf die Definition im Feld Ausdruck erzielt werden.
Wenn Sie Python-Skripte erstellen, verwenden Sie statt des Werkzeugs Wert berechnen die Python-Standardanweisungen.
Syntax
Parameter | Erläuterung | Datentyp |
expression |
Der auszuwertende Python-Ausdruck. | SQL Expression |
code_block (optional) |
Zusätzlicher Python-Code. Der Ausdruck im Parameter "Ausdruck" kann auf Code im Codeblock verweisen. | String |
data_type (optional) |
Der Datentyp der Ausgabe, die vom Python-Ausdruck zurückgegeben wird. Verwenden Sie diesen Parameter in ModelBuilder, um das Werkzeug "Wert berechnen" mit anderen Werkzeugen verketten zu können. | String |