在模型构建器中,可通过将替换变量名称用百分号 (%VariableName%) 括起的方式使用其他变量替换某个变量的值或数据集路径。这种变量替换方式称为行内变量替换。
例如,如果变量 Name 的值为 Wilson,则可以将数据集路径构建为 C:\Data\Output.gdb\Clipped_%Name%,路径将解析为 C:\Data\Output.gdb\Clipped_Wilson。
可使用任何模型变量或系统变量执行行内变量替换。
- 模型变量 - 模型中的任意变量。
- 系统变量 - ModelBuilder 提供可在迭代工作流中使用的内置系统变量 n。%n% 是模型中的迭代编号。
模型变量替换
在下述模型中,工作空间变量 Data Workspace 的值为 C:\Data.gdb。通过将此变量名称用百分号括起,此工作空间位置将被替换为 Project 工具参数中的行内变量。运行时,将使用实际变量值 C:\Data.gdb 替换 %Data Workspace%。
使用迭代器
使用模型构建器迭代器时,尤其需要使用模型变量替换。迭代器迭代要素类运行时,它将为工作空间中的每个要素类的路径和名称各创建一个输出变量。可以使用 Name 变量中的值构造输出 Projected Feature Class 的路径。执行工具时,%Name% 将替换为要素类的名称。
模型工具的用户输入
模型变量替换可帮助您将用户输入的值直接传递到模型中的工具。例如,在下方的模型中,宗地 ID 是从地理处理窗格运行模型工具时指定的模型参数。此变量将以 "Parcel" = '%Parcel ID%' 的形式在按属性选择图层工具的表达式参数中使用。运行工具时,表达式中的 %Parcel ID% 将替换为宗地 ID(在下例中为 9),并且将仅选择 ID 为 9 的宗地。
注:
本例中“宗地 ID”变量的数据类型为字符串。在表达式中,字符串类型的行内变量应使用引号 ('%string variable%') 括起。数值类型的行内变量不需要使用引号括起与“计算值”工具一起使用
计算值是具有强大功能的“模型构建器”实用工具,可用于计算基于任何 Python 表达式的值,并可在模型中使用该值。可以使用模型变量替换将值从模型变量传递至计算值 Python 表达式,或者使用已将其计算值存储于模型的其他工具中的输出变量名称进行传递。
下面的模型包含两个数值变量:Number of Residents 和 Waste Per Person Per Year。这两个变量在计算值工具表达式中使用时以百分号括起。计算值工具运行时,变量名称将被替换为它们的值,且此工具会将这两个值相乘以计算 Total Waste Per Year。
使用文件扩展名替换值
如果变量指向具有扩展名的文件(例如 elevation.tif),并且此变量需要使用行内替换包含在另一个工具的输出路径中,则输出将在输出名称中错误地包含 .tif 扩展名。在此情况下,解析路径工具可用于仅获取文件名:elevation。解析路径工具的输出 Name 变量之后可以作为行内替换用于下一个工具。
系统变量替换
模型构建器将提供一个可在迭代工作流中使用的内置系统变量。当模型包含迭代器时,此变量 %n% 指当前模型迭代(第一个迭代为零)。
例如,使用 For 迭代器对模型迭代四次。缓冲区工具的输出被用作输入反馈到此工具。模型进行迭代,并在每次迭代时创建新的输出。%n% 将在缓冲区的输出名称中使用,以为每个迭代的输出提供一个新名称。