在 模型构建器 中,可通过将替换变量名称用百分号 (%VariableName%) 括起的方式使用其他变量替换某个变量的值或数据集路径。 这种变量替换方式称为行内变量替换。
例如,如果变量 Name 的值为 Wilson,则可以将数据集路径构建为 C:\Data\Output.gdb\Clipped_%Name%,路径将解析为 C:\Data\Output.gdb\Clipped_Wilson。
模型构建器 支持采用以下格式的行内变量替换:
- 模型变量 - 可以使用模型中的任意变量。
- 系统变量 - 变量 %n% 可以在迭代工作流中用作模型中的迭代计数器。 变量 %t% 是指以 YYYYMMDDHHMMSS 格式生成输出的时间。
- 工作空间环境 - 可在 模型构建器 中使用四种工作空间环境(%scratchGDB%、%scratchFolder%、%workspace% 和 %scratchWorkspace%)以简化模型数据管理。
模型变量替换
在下述模型中,工作空间变量 Data Workspace 的值为 C:\Data.gdb。 通过将此变量名称用百分号括起,此工作空间位置将被替换为 Project 工具参数中的行内变量。 运行时,将使用实际变量值 C:\Data.gdb 替换 %Data Workspace%。
与迭代器一起使用
使用 模型构建器 迭代器时,尤其需要使用模型变量替换。 迭代器迭代要素类运行时,它将为工作空间中的每个要素类的路径和名称各创建一个输出变量。 可以使用名称变量中的值构造输出投影要素类的路径。 执行工具时,%Name% 将替换为要素类的名称。
模型工具的用户输入
模型变量替换可以帮助您将用户输入的值直接传递到模型内的工具中。 例如,在下方的模型中,后缀是从地理处理窗格运行模型工具时指定的模型参数。 此变量将以 RoadLabel LIKE '%\%Suffix\%' ESCAPE '\' 的形式在按属性选择图层工具的表达式参数中使用。 工具运行时,表达式的工作方式与将行内变量 Suffix 替换为值 ST 的 RoadLabel LIKE '%ST' 相同,并且仅选择标注以 ST 结尾的道路。
注:
本示例中的 Suffix 变量为字符串。 在表达式中,字符串行内变量需要使用引号 ('%Suffix%') 括起。 数字行内变量不需要用引号括起。在第二个示例中,行内变量替换用于将值传递给计算字段工具的参数。 下图所示的模型包含两个变量,即类字段和值。具有 Class 值的类字段用作字段名称参数。 具有 Forest 值的值变量用作表达式参数。 运行计算字段工具时,“类”字段将获取在值变量中保存的值 Forest。
与“计算值”一起使用
计算值是一个 模型构建器 实用程序,用于根据 Python 表达式计算值并在模型中使用该值。 可以使用模型变量替换将值从模型变量传递至计算值 Python 表达式,或者使用已将其计算值存储于模型的其他工具中的输出变量名称进行传递。
下面的模型包含两个数值变量:Number of Residents 和 Waste Per Person Per Year。 这两个变量在计算值工具表达式中使用时以百分号括起。 计算值工具运行时,变量名称将被替换为它们的值,且此工具会将这两个值相乘以计算 Total Waste Per Year。
具有文件扩展名的变量替换
如果变量指向具有扩展名的文件(例如 elevation.tif),并且此变量需要使用行内替换包含在另一个工具的输出路径中,则输出将在输出名称中错误地包含 .tif 扩展名。 在此情况下,解析路径工具可用于仅获取文件名:elevation。 解析路径工具的输出名称变量之后可以作为行内替换用于下一个工具。
系统变量替换
模型构建器 提供的系统变量可以在模型中用于表示当前模型迭代 (%n%) 和时间 (%t%)。
当模型包含迭代器时,此变量 %n% 是指当前模型迭代(第一个迭代为零)。 例如,使用 For 迭代器对模型迭代四次。 缓冲区工具的输出被用作输入反馈到此工具。 模型进行迭代,并在每次迭代时创建输出。 %n% 将在缓冲区的输出名称中使用,以为每个迭代的输出提供一个新名称。
变量 %t% 是指工具输出的创建时间。 例如,如果计划每日运行模型以进行数据备份,使用变量 %t% 时会创建具有时间戳的输出,以指示备份日期。
旧版本:
变量 %i% 的效果与 %n% 的效果相同。 其旨在用于 ArcMap,并且不建议在 ArcGIS Pro 上使用。
工作空间环境
可以在 模型构建器 中使用四个工作空间环境以简化模型中的数据管理。 可以在模型参数中使用工作空间环境,并从地理处理窗格运行模型。
环境 | 用法 | 位置 | 建议的使用方法 |
---|---|---|---|
%scratchGDB% | 工程文件夹\scratch.gdb | 中间输出 | |
%scratchFolder% | 工程文件夹\临时 | 基于文件的中间输出 | |
%workspace% | 当前工作空间环境设置 | 地理处理工具输入和输出 | |
%scratchWorkspace% | 临时工作空间环境设置 | 中间输出 |
例如,如果将工具输出指定为 %scratchGDB%\CopyToScratchGDB,将创建 scratch.gdb 地理数据库(如果尚不存在),并在临时 GDB 环境地理数据库中创建输出 CopyToScratchGDB。
在以下示例中,如果将工具输出指定为 %workspace%\CopyToWorkspace,则将在当前工作空间环境位置中创建输出 CopyToWorkspace。