Calculate Value (ModelBuilder)

Summary

Returns a value based on a specified Python expression.

Usage

  • This tool is intended for use in ModelBuilder, 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:

    Inline variable of type string should be enclosed within quotes ("%string variable%") in an expression. Inline 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 random module is supported for generating random numbers. Examples of using the random module are as follows:

    • Calculate a random integer between 0 and 10: random.randint(0, 10)
    • Calculate a random value derived from a normal distribution with a mean of 10 and standard deviation of 3: random.normalvariate(10, 3)

    Legacy:

    arcgis.rand() is no longer supported as of ArcGIS Pro 2.0. Comparable functions using Python's random module should be used instead. To use the random module successfully, add it as an import in the Code Block parameter.

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

  • Note:

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

Syntax

arcpy.mb.CalculateValue(expression, {code_block}, {data_type})
ParameterExplanationData Type
expression

The Python expression to be evaluated.

SQL Expression
code_block
(Optional)

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

String
data_type
(Optional)

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

  • Address LocatorAddress Locator
  • Address Locator StyleAddress Locator Style
  • Analysis Cell SizeAnalysis Cell Size
  • Annotation LayerAnnotation Layer
  • Any ValueAny Value
  • ArcMap DocumentArcMap Document
  • Areal UnitAreal Unit
  • BIM File WorkspaceBIM File Workspace
  • BooleanBoolean
  • Building Discipline LayerBuilding Discipline Layer
  • Building Discipline Scene LayerBuilding Discipline Scene Layer
  • Building LayerBuilding Layer
  • Building Scene LayerBuilding Scene Layer
  • CAD Drawing DatasetCAD Drawing Dataset
  • Calculator ExpressionCalculator Expression
  • Catalog RootCatalog Root
  • Cell SizeCell Size
  • Cell Size XYCell Size XY
  • Composite LayerComposite Layer
  • CompressionCompression
  • Coordinate SystemCoordinate System
  • Coordinate Systems FolderCoordinate Systems Folder
  • CoverageCoverage
  • Coverage Feature ClassCoverage Feature Class
  • Data ElementData Element
  • Data FileData File
  • Database ConnectionsDatabase Connections
  • DatasetDataset
  • DateDate
  • dBASE TabledBASE Table
  • DecimateDecimate
  • Diagram LayerDiagram Layer
  • Dimension LayerDimension Layer
  • Disk ConnectionDisk Connection
  • DoubleDouble
  • Elevation Surface LayerElevation Surface Layer
  • Encrypted StringEncrypted String
  • EnvelopeEnvelope
  • Evaluation ScaleEvaluation Scale
  • ExtentExtent
  • Extract ValuesExtract Values
  • Feature ClassFeature Class
  • Feature DatasetFeature Dataset
  • Feature LayerFeature Layer
  • Feature SetFeature Set
  • FieldField
  • Field InfoField Info
  • Field MappingsField Mappings
  • FileFile
  • FolderFolder
  • Formulated RasterFormulated Raster
  • Fuzzy functionFuzzy function
  • GeoDataServerGeoDataServer
  • GeodatasetGeodataset
  • Geometric NetworkGeometric Network
  • Geostatistical LayerGeostatistical Layer
  • Geostatistical Search NeighborhoodGeostatistical Search Neighborhood
  • Geostatistical Value TableGeostatistical Value Table
  • GlobeServerGlobeServer
  • GPServerGPServer
  • GraphGraph
  • Graph Data TableGraph Data Table
  • Group LayerGroup Layer
  • Horizontal FactorHorizontal Factor
  • Image ServiceImage Service
  • IndexIndex
  • INFO ExpressionINFO Expression
  • INFO ItemINFO Item
  • INFO TableINFO Table
  • Internet Tiled LayerInternet Tiled Layer
  • KML LayerKML Layer
  • LAS DatasetLAS Dataset
  • LAS Dataset LayerLAS Dataset Layer
  • LayerLayer
  • Layer FileLayer File
  • LayoutLayout
  • LineLine
  • Linear UnitLinear Unit
  • LongLong
  • M DomainM Domain
  • MapMap
  • Map Server LayerMap Server Layer
  • MapServerMapServer
  • Mosaic DatasetMosaic Dataset
  • Mosaic LayerMosaic Layer
  • NeighborhoodNeighborhood
  • Network Analyst Class FieldMapNetwork Analyst Class FieldMap
  • Network Analyst Hierarchy SettingsNetwork Analyst Hierarchy Settings
  • Network Analyst LayerNetwork Analyst Layer
  • Network Data SourceNetwork Data Source
  • Network DatasetNetwork Dataset
  • Network Dataset LayerNetwork Dataset Layer
  • Network Travel ModeNetwork Travel Mode
  • Parcel FabricParcel Fabric
  • Parcel Fabric for ArcMapParcel Fabric for ArcMap
  • Parcel Fabric Layer for ArcMapParcel Fabric Layer for ArcMap
  • Parcel LayerParcel Layer
  • PointPoint
  • PolygonPolygon
  • Projection FileProjection File
  • PyramidPyramid
  • RadiusRadius
  • Random Number GeneratorRandom Number Generator
  • Raster BandRaster Band
  • Raster Calculator ExpressionRaster Calculator Expression
  • Raster CatalogRaster Catalog
  • Raster Catalog LayerRaster Catalog Layer
  • Raster Data LayerRaster Data Layer
  • Raster DatasetRaster Dataset
  • Raster LayerRaster Layer
  • Raster StatisticsRaster Statistics
  • Raster TypeRaster Type
  • Record SetRecord Set
  • Relationship ClassRelationship Class
  • RemapRemap
  • ReportReport
  • Route Measure Event PropertiesRoute Measure Event Properties
  • Scene LayerScene Layer
  • SemivariogramSemivariogram
  • ServerConnectionServerConnection
  • ShapefileShapefile
  • Spatial ReferenceSpatial Reference
  • SQL ExpressionSQL Expression
  • StringString
  • String HiddenString Hidden
  • TableTable
  • Table ViewTable View
  • Terrain LayerTerrain Layer
  • Text FileText File
  • Tile SizeTile Size
  • Time configurationTime configuration
  • Time UnitTime Unit
  • TINTIN
  • TIN LayerTIN Layer
  • ToolTool
  • ToolboxToolbox
  • Topo FeaturesTopo Features
  • TopologyTopology
  • Topology LayerTopology Layer
  • Trace NetworkTrace Network
  • Trace Network LayerTrace Network Layer
  • Transformation functionTransformation function
  • Utility NetworkUtility Network
  • Utility Network LayerUtility Network Layer
  • VariantVariant
  • Vector Tile LayerVector Tile Layer
  • Vertical FactorVertical Factor
  • Voxel LayerVoxel Layer
  • VPF CoverageVPF Coverage
  • VPF TableVPF Table
  • WCS CoverageWCS Coverage
  • Weighted Overlay TableWeighted Overlay Table
  • Weighted SumWeighted Sum
  • WMS MapWMS Map
  • WorkspaceWorkspace
  • XY DomainXY Domain
  • Z DomainZ Domain
String

Derived Output

NameExplanationData Type
value

The calculated value.

Data Element; Layer; Table View

Environments

This tool does not use any geoprocessing environments.

Licensing information

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes