ArcGIS for Desktop

  • Documentation
  • Pricing
  • Support

  • My Profile
  • Help
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

The mapping platform for your organization

ArcGIS for Desktop

A complete professional GIS

ArcGIS for Server

GIS in your enterprise

ArcGIS for Developers

Tools to build location-aware apps

ArcGIS Solutions

Free template maps and apps for your industry

ArcGIS Marketplace

Get apps and data for your organization

  • Documentation
  • Pricing
  • Support
Esri
  • Sign In
user
  • My Profile
  • Sign Out

Help

  • Home
  • Get Started
  • Map
  • Analyze
  • Manage Data
  • Tools
  • More...

Calculate Value

  • Summary
  • Usage
  • Syntax
  • Environments
  • Licensing information

Summary

Calculate Value tool returns a value based on a specified Python expression.

Usage

  • This tool is intended for use in ModelBuilder and not in Python scripting.

  • The Data Type parameter is used in ModelBuilder to help chain the output of the Calculate Value tool with other tools. For example, if you use the Calculate Value tool to calculate a distance for use as input to the Buffer Distance parameter of the Buffer tool, specify Linear Unit for the Data Type parameter.

  • Variables created in ModelBuilder can be used by this tool, but variables desired for use in the expression parameter cannot be connected to the Calculate Value tool. To use them in the expression, enclose the variable name in percent signs (%). For example, if you want to divide a variable named 'Input' by 100, your expression would be %Input%/100.

    Note: in the previous expression, if Input = 123, the expression will return 1. To get decimal places, add decimals to the values in the expression. For example: %Input%/100.00 will return 1.23. The illustration below shows another example of using variables in the expression.

    Using model variable in Calculate Value tool
    Caution:

    In-line variable of type string should be enclosed within quotes ("%string variable%") in an expression. In-line variables of type numbers (double, long) do not require quotes (%double%).

  • Expressions can be created in a standard Python format ONLY. Other scripting languages are not supported.

  • The Calculate Value tool can evaluates simple mathematical expressions. For example:

    • 3+5
    • 9*8
    • 4+(9/3)
  • The Calculate Value tool allows the use of the Python math module to perform more complex mathematical operations. The math module is accessed by preceding the desired function with math. For example:

    • math.sqrt(25)
    • math.cos(0.5)
  • Constants are also supported through the math module. For example:

    • math.pi
  • The arcgis.rand() function is supported. The arcgis.rand() function has been created for ArcGIS tools and should not be confused with the Python Rand() function. Examples of using the arcgis.rand() are as follows:

    • Calculate a random value derived from a uniform distribution of integers between 0 and 10: arcgis.rand("Integer 0 10")
    • Calculate a random value derived from a normal distribution with a mean of 10 and standard deviation of 3: arcgis.rand("Normal 10 3")

    Caution:

    The expression arcgis.rand must be entered in lowercase characters.

  • Generally, you will type the expressions in the Expression parameter. More complicated expressions, such as multiline calculations or logical operations (if, then), will require the use of the Code Block parameter. The Code Block parameter cannot be used on its own; it must be used in conjunction with the Expression parameter.

  • Variables defined in the Code Block parameter can be referenced from the expression.

    Using Expression and Code Block

  • Functions can be defined in the Code Block parameter and called from the expression. In the example below, the function returns a wind direction string based on a random input value. In Python, functions are defined using the def keyword followed by the name of the function and the function's input parameters. In this case, the function is getWind and has one parameter, wind. Values are returned from a function using the return keyword.

    Defining functions in Code Block
  • You can pass variable through the Expression parameter and use if-else logic with inline variables in the code block as shown below. The code block checks to see if the Input Cell Size variable is empty then returns a value based on the condition.

    If-Else example

  • Python methods can be used directly in the Expression parameter of the tool. For example, if you have an input value with a decimal (field value of the input table in this case) and want to use the value in the output name of another tool through inline variable substitution, the decimal can be replaced using Python method replace in the Calculate Value tool expression.

    Python method replace example

  • Python modules can be called and methods such as replace combined or stacked in the code block parameter. In the example below the time module is imported in the code block which returns the current date and time such as Fri Mar 19 2010 09:42:39. This returned value is used as name in Create Folder tool to name the folder. Since the name of the folder cannot contain spaces or punctuation marks, the replace method in Python is used by stacking the method for each element that needs to be replaced. The resulting name of the folder in this example is FriMar192010094239.

    Python time module example.

  • If you are calculating a value in the model and want to use the calculated value with tools such as Buffer that require a buffer distance value as well as a linear unit you have to:

    • return the linear unit in the code block along with the distance value,
    • change the data type of the returned values as shown below, and
    • set the data type parameter to linear unit so that the result of the expression will be converted to a linear unit value.
    Using Calculate Value output as Buffer distance

  • You can use the output of Calculate Value tool directly in any Spatial Analyst tools which accept a raster or a constant value such as Plus, Greater Than, and Less Than (these tools are found in the Spatial Analyst toolbox/Math toolset). To use the output of Calculate Value, change the output data type to Formulated Raster. This output data type format is a raster surface whose cell values are represented by a formula or constant.

    Formulated Raster data type

  • In Python, part of syntax is proper indentation. Indentation level (two spaces or four spaces) does not matter as long as it is consistent throughout the code block.

  • You cannot access model variables from the code block. Such variables must be passed to the code block from the expression. This can be achieved by creating a definition in the Code Block and referencing the definition in the Expression box.

  • Model variables of type list should not be used in the Expression. Due to how list variables work in ModelBuilder, Calculate Value will execute once using the first value in the list variable; other values in the list variable will not be passed to Calculate Value.

  • Note:

    When writing Python scripts, use standard Python statements instead of the Calculate Value tool.

Syntax

CalculateValue_management (expression, {code_block}, {data_type})
ParameterExplanationData Type
expression

The Python expression to be evaluated.

SQL Expression
code_block
(Optional)

Additional Python code. Code in the code block can be referenced in the Expression parameter.

String
data_type
(Optional)

The data type of the output returned from the Python expression. This parameter should be used in ModelBuilder to help chain Calculate Value with other tools.

String

Environments

This tool does not use any geoprocessing environments

Licensing information

  • ArcGIS for Desktop Basic: Yes
  • ArcGIS for Desktop Standard: Yes
  • ArcGIS for Desktop Advanced: Yes

Related topics

  • An overview of the General toolset

ArcGIS for Desktop

  • Home
  • Documentation
  • Pricing
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

About Esri

  • About Us
  • Careers
  • Insiders Blog
  • User Conference
  • Developer Summit
Esri
Tell us what you think.
© Copyright 2016 Environmental Systems Research Institute, Inc. | Privacy | Legal