该工具通过执行指定的Python表达式来返回计算结果。
1、 该工具仅适用于模型构建,不支持Python脚本编辑。
2、 在模型构建中,通过设置数据类型参数,可将计算值工具的结果与其他工具衔接使用。例如,若利用该工具计算出一个距离数值,并将其作为缓冲区工具中缓冲距离的输入,则需将数据类型参数设定为线性单位,以确保参数正确识别和传递。
3、 该工具虽支持模型构建器中的变量,但表达式参数无法直接连接计算值工具中的变量。若需在表达式中引用变量,应将变量名用百分号括起。例如,若要将名为Input的变量除以100,表达式应写为%Input%/100,确保变量正确代入运算。
4、 当输入值为123时,该表达式结果为1。若需保留小数部分,可将数值除以对应的小数倍数,例如使用%Input%/100.00即可得到1.23。表达式支持变量引用,下图即展示了变量在实际表达式中的具体应用方式,便于灵活处理不同数据需求。
5、 仅允许使用标准Python语法编写表达式,不兼容其他脚本语言。
6、 该工具能计算简单数学表达式的结果,比如加减乘除等运算。
7、 3+5
8、 9*8
9、 计算值工具支持利用 Python 数学模块进行复杂运算。只需在函数前加上math前缀,即可调用对应数学功能,实现更强大的计算能力。
10、 数学模块支持常量,如圆周率等。
11、 提供对 arcgis.rand() 函数的支持。该函数专为 ArcGIS 工具设计,需注意其与 Python 内置的 random 函数不同,不可混用。以下是 arcgis.rand() 的具体使用示例,展示如何在实际操作中调用该函数生成随机值,适用于地理数据处理和空间分析场景。
12、 生成0到10之间均匀分布的随机整数,使用函数arcgis.rand(Integer 0 10)进行计算。
13、 从均值为10、标准差为3的正态分布中随机生成数值,可使用arcgis.rand(Normal 10 3)实现。
14、 通常在表达式参数中输入简单表达式,对于多行计算或条件逻辑等复杂操作,则需使用代码块参数。代码块参数不能独立存在,必须与表达式参数配合使用,共同完成复杂逻辑的定义与执行。
15、 表达式可引用代码块参数中定义的变量。
16、 函数可以在代码块的参数中进行定义,并通过表达式调用。例如,一个函数根据随机输入值返回对应的风向字符串。在 Python 中,使用 def 关键字来定义函数,其后紧跟函数名称和括号内的参数列表。本例中的函数名为 getWind,接收一个名为 wind 的参数。函数体中通过 return 语句将计算结果返回给调用者,从而实现特定功能的封装与复用。
17、 可通过表达式参数传入变量,并在代码块中使用 if-else 逻辑处理行内变量。例如,代码会判断 Input Cell Size 变量是否为空,再根据判断结果返回相应值。
18、 在工具的表达式参数中可直接调用Python方法。例如,当输入值包含小数时(如输入表字段的数值),若需将该值通过行内变量替换用于其他工具的输出名称,可借助Calculate Value工具中的Python replace方法对小数点进行替换处理,从而实现格式的灵活调整与动态命名。
19、 可通过调用Python模块实现功能扩展,并在代码块参数中组合或连续使用多个Python方法,例如replace方法。以下示例中,首先导入time模块,利用该模块获取当前系统时间,返回结果形如Fri Mar 19 2010 09:42:39。该时间字符串随后被用作创建文件夹时的名称输入。然而,操作系统要求文件夹名称中不能包含空格或特殊字符,因此需对原始字符串进行处理。通过在Python中连续调用replace方法,逐个替换掉其中的空格及其他不允许的字符。每一次replace调用都作用于前一次的结果之上,形成方法堆叠效果。经过这一系列替换操作后,原始时间字符串被转换为无空格、无标点的纯文本格式,最终生成的文件夹名称为FriMar192010094239,符合命名规范且具有唯一性,便于自动化的文件管理与组织。
20、 若需在本模型中计算数值,并将结果用于需缓冲距离与线性单位的工具(如缓冲区分析),请按以下步骤操作。
21、 返回包含线性单位和距离值的代码块结果
22、 修改返回值类型,随后进行相应调整。
23、 将数据类型参数设为线性单位,表达式结果将自动转换为对应的线性数值。
24、 在使用任何支持栅格或常数值的 Spatial Analyst 工具时,可直接引用加、大于、小于等数学计算工具的输出结果。这些工具位于 Spatial Analyst 工具箱的数学工具集中。若要顺利使用计算值工具的输出,需将其输出数据类型设置为格式化的栅格。该格式将公式或常量表达的计算结果转化为栅格表面,每个像元值均依据指定表达式生成,从而实现与其他工具的无缝衔接和后续分析操作的连续性。
25、 在Python中,代码需通过缩进来体现结构层次,可选用两个或四个空格,但同一代码块内必须保持缩进一致。
26、 代码块无法直接访问模型变量,需通过表达式传入。可在代码块中定义变量,并在表达式中引用该定义,以实现数据传递与访问。
评论
更多评论