计算值 (ModelBuilder)

摘要

基于指定的 Python 表达式返回值。

使用情况

  • 此工具专用于 ModelBuilder ,而并不在编写 Python 脚本时使用。

  • 在 ModelBuilder 中使用数据类型参数可将计算值工具的输出与其他工具相连接。例如,如果使用计算值工具计算距离并将其用作 缓冲区工具的缓冲距离参数的输入,则请指定数据类型参数的线性单位。

  • 虽然此工具可以使用在 ModelBuilder 中创建的变量,但是表达式参数中需要使用的变量无法连接到计算值工具。要在表达式中使用它们,请将变量名称用百分号 (%) 括起。例如,如果要将名称为“Input”的变量除以 100,表达式将为 %Input%/100。

    请注意:在上面的表达式中,如果 Input = 123,此表达式将返回 1。要获得保留小数位的值,请将各值的小数位添加到此表达式中。例如:%Input%/100.00 将返回 1.23。下图显示的是另一个在表达式中使用变量的示例。

    在计算值工具中使用模型变量
    警告:

    在表达式中,字符串类型的行内变量应使用引号括起 ("%字符串变量%")。数值类型的行内变量(双精度型、长整型)不需要使用引号括起 (%双精度型%)。

  • 只能使用标准 Python 格式创建表达式。不支持其他脚本语言。

  • 计算值工具可对简单的数学表达式进行求值。例如:

    • 3+5
    • 9*8
    • 4+(9/3)
  • 计算值工具允许使用 Python 数学模块执行更为复杂的数学运算。通过在所需函数前添加 math 可访问相应数学模块。例如:

    • math.sqrt(25)
    • math.cos(0.5)
  • 数学模块还支持常量。例如:

    • math.pi
  • random 模块支持生成随机数。使用 random 模块的示例如下:

    • 在 0 到 10 之间取一个随机整数:random.randint(0, 10)
    • 计算从平均值为 10 且标准差为 3 的正态分布中获取的随机值:random.normalvariate(10, 3)

    旧版本:

    自 ArcGIS Pro 2.0 起不再支持 arcgis.rand()。应使用利用 Python random 模块的类似函数。要成功使用 random 模块,请将其作为导入添加到代码块参数中。

  • 通常,将在表达式参数中输入表达式。诸如多行计算或逻辑运算 (if, then) 等更为复杂的表达式需要使用代码块参数。代码块参数不能单独使用;此参数必须与表达式参数结合使用。

  • 可从表达式中引用代码块参数中定义的变量。

    使用表达式和代码块

  • 函数可在代码块参数中定义,并可从表达式中调用。在以下示例中,函数将基于随机输入值返回风向字符串。在 Python 中,各函数可通过 def 关键字定义,关键字后为函数的名称以及函数的输入参数。在本示例中,函数为 getWind 并包含一个参数 wind。使用 return 关键字会将值从函数中返回。

    在代码块中定义函数
  • 您可通过表达式参数传递变量,还可将 if-else 逻辑用于代码块中的行内变量,如下所示。代码块将检查 Input Cell Size 变量是否为空,然后根据条件返回值。

    If-Else 示例

  • Python 方法可直接在工具的“表达式”参数中使用。例如,如果输入值带有小数(输入表的字段值即为这种情况),并且您想通过行内变量替换在其他工具的输出名称中使用此值,则可在计算值工具表达式中使用 Python 方法替换来替换此小数。

    Python 方法替换示例

  • 可以调用 Python 模块,还可以在代码块参数中合并或堆叠 Python 方法(例如 replace)。在以下示例中,time 模块将被导入到代码块中,此代码块将返回当前日期和时间,如 Fri Mar 19 2010 09:42:39。此返回值在创建文件夹工具中用作名称,用来命名文件夹。由于文件夹的名称不能包含空格或标点符号,因此 Python 中的 replace 方法的使用方式为,为每个需要替换的元素堆叠此方法。在本示例中,得到的文件夹名称为 FriMar192010094239。

    Python 时间模块示例。

  • 如果在计算模型中的一个值时需要通过诸如缓冲区(需要缓冲距离值和线性单位)等工具使用该计算值,您需要:

    • 将代码块中的线性单位与距离值一同返回,
    • 如下图所示更改返回值的数据类型,
    • 然后将数据类型参数设置为线性单位,这样,表达式的结果将被转换为线性单位值。
    将计算值的输出用作缓冲距离

  • 在任何接受栅格或常数值的 Spatial Analyst 工具中,可以直接使用计算值工具的输出结果,例如,加、大于和小于(这些工具位于 Spatial Analyst 工具箱/数学工具集中)。要使用计算值的输出结果,请将输出数据类型更改为“格式化的栅格”。此输出数据类型格式是像元值由公式或常量表示的栅格表面。

    格式化的栅格数据类型

  • 在 Python 中,部分语法将适当缩进。缩进程度(两个空格或四个空格)可任意设置,但在整个代码块中缩进程度必须保持一致。

  • 无法从代码块访问模型变量。此类变量必须从表达式传递到代码块。此操作可通过在代码块中创建定义并在表达式框中引用所创建的定义来实现。

  • 注:

    编写 Python 脚本时,请使用标准 Python 语句,而不是计算值工具。

参数

标注说明数据类型
表达式

要进行求值的 Python 表达式。

SQL Expression
代码块
(可选)

Python 代码块。可以在表达式参数中引用代码块中的代码。

String
数据类型
(可选)

指定从 Python 表达式返回的输出的数据类型。应在 ModelBuilder 中使用此参数,以便将计算值工具与其他工具相连接。

  • 地址定位器—地址定位器
  • 地址定位器样式—地址定位器样式
  • 分析像元大小—分析像元大小
  • 注记图层—注记图层
  • 任何值—任何值
  • ArcMap 文档—ArcMap 文档
  • 面积单位—面积单位
  • BIM 文件工作空间—BIM 文件工作空间
  • 布尔—布尔
  • 建筑领域图层—建筑领域图层
  • 构建领域场景图层—构建领域场景图层
  • 建筑图层—建筑图层
  • 构建场景图层—构建场景图层
  • CAD 工程图数据集—CAD 工程图数据集
  • 计算器表达式—计算器表达式
  • 目录根—目录根
  • 像元大小—像元大小
  • 像元大小 XY—像元大小 XY
  • 复合图层—复合图层
  • 压缩—压缩
  • 坐标系—坐标系
  • 坐标系文件夹—坐标系文件夹
  • Coverage—Coverage
  • Coverage 要素类—Coverage 要素类
  • 数据元素—数据元素
  • 数据文件—数据文件
  • 数据库连接—数据库连接
  • 数据集—数据集
  • 日期—日期
  • dBASE 表—dBASE 表
  • 抽稀—抽稀
  • 逻辑示意图图层—逻辑示意图图层
  • 尺寸图层—尺寸图层
  • 磁盘连接—磁盘连接
  • 双精度—双精度
  • 高程表面图层—高程表面图层
  • 加密字符串—加密字符串
  • 包络矩形—包络矩形
  • 评估等级—评估等级
  • 范围—范围
  • 提取值—提取值
  • 要素类—要素类
  • 要素数据集—要素数据集
  • 要素图层—要素图层
  • 要素集—要素集
  • 字段—字段
  • 字段信息—字段信息
  • 字段映射—字段映射
  • 文件—文件
  • 文件夹—文件夹
  • 格式化栅格—格式化栅格
  • 模糊函数—模糊函数
  • GeoDataServer—GeoDataServer
  • 地理数据集—地理数据集
  • 几何网络—几何网络
  • 地统计图层—地统计图层
  • 地统计搜索邻域—地统计搜索邻域
  • 地统计值表—地统计值表
  • GlobeServer—GlobeServer
  • GPServer—GPServer
  • 图表—图表
  • 图表数据表—图表数据表
  • 分组图层—分组图层
  • 水平系数—水平系数
  • 影像服务—影像服务
  • 索引—索引
  • INFO 表达式—INFO 表达式
  • INFO 项目—INFO 项目
  • INFO 表—INFO 表
  • Internet 切片图层—Internet 切片图层
  • KML 图层—KML 图层
  • LAS 数据集—LAS 数据集
  • LAS 数据集图层—LAS 数据集图层
  • 图层—图层
  • 图层文件—图层文件
  • 布局—布局
  • 线—线
  • 线性单位—线性单位
  • 长整型—长整型
  • M 值域—M 值域
  • 地图—地图
  • 地图服务器—地图服务器
  • 地图服务器图层—地图服务器图层
  • 镶嵌数据集—镶嵌数据集
  • 镶嵌图层—镶嵌图层
  • 邻域分析—邻域分析
  • Network Analyst 类 FieldMap—Network Analyst 类 FieldMap
  • Network Analyst 等级设置—Network Analyst 等级设置
  • 网络分析图层—网络分析图层
  • 网络数据源—网络数据源
  • 网络数据集—网络数据集
  • 网络数据集图层—网络数据集图层
  • 网络出行模式—网络出行模式
  • 宗地结构—宗地结构
  • ArcMap 宗地结构—ArcMap 宗地结构
  • ArcMap 宗地结构图层—ArcMap 宗地结构图层
  • 宗地图层—宗地图层
  • 点—点
  • 面—面
  • 投影文件—投影文件
  • 金字塔—金字塔
  • 半径—半径
  • 随机数生成器—随机数生成器
  • 栅格波段—栅格波段
  • 栅格计算器表达式—栅格计算器表达式
  • 栅格目录—栅格目录
  • 栅格目录图层—栅格目录图层
  • 栅格数据图层—栅格数据图层
  • 栅格数据集—栅格数据集
  • 栅格图层—栅格图层
  • 栅格统计—栅格统计
  • 栅格类型—栅格类型
  • 记录集—记录集
  • 关系类—关系类
  • 重映射—重映射
  • 报表—报表
  • 路径测量事件属性—路径测量事件属性
  • 场景图层—场景图层
  • 半变异函数—半变异函数
  • ServerConnection—ServerConnection
  • Shapefile—Shapefile
  • 空间参考—空间参考
  • SQL 表达式—SQL 表达式
  • 字符串—字符串
  • 隐藏字符串—隐藏字符串
  • 表—表
  • 表视图—表视图
  • Terrain 图层—Terrain 图层
  • 文本文件—文本文件
  • 分块大小—分块大小
  • 时间配置—时间配置
  • 时间单位—时间单位
  • TIN—TIN
  • TIN 图层—TIN 图层
  • 工具—工具
  • 工具箱—工具箱
  • 拓扑要素—拓扑要素
  • 拓扑—拓扑
  • 拓扑图层—拓扑图层
  • 追踪网络—追踪网络
  • 追踪网络图层—追踪网络图层
  • 变换函数—变换函数
  • 公共设施网络—公共设施网络
  • 公共设施网络图层—公共设施网络图层
  • 变量—变量
  • 矢量切片图层—矢量切片图层
  • 垂直系数—垂直系数
  • 体元图层—体元图层
  • VPF Coverage—VPF Coverage
  • VPF 表—VPF 表
  • WCS Coverage—WCS Coverage
  • 加权叠加表—加权叠加表
  • 加权总和—加权总和
  • WMS 地图—WMS 地图
  • WMTS 图层—WMTS 图层
  • 工作空间—工作空间
  • XY 值域—XY 值域
  • Z 值域—Z 值域
String

派生输出

标注说明数据类型
值

计算值。

数据元素;图层;表视图

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是