在做空间分析时,我们很少只运行一个单独的工具。更多时候,是一整串步骤:裁剪、缓冲、统计、再导出结果……

QGIS 的 graphical modeler 就是用来把这些零散步骤“串成一条龙”的可视化工具。

它提供了一个简单的图形界面,你可以像搭积木一样,把每一步处理组合成一个可复用的模型。 以后遇到类似任务,只需要调整少量输入参数,就能一键跑完整个流程,大幅减少重复劳动。

可以从“处理”菜单中打开 graphical modelerProcessing ► Graphical Modeler

打开后,窗口右侧的大画布用来搭建和调整模型结构与流程;左侧则是各种模型节点和配置面板,主要包括:

  1. Model Properties:设置模型名称以及它所属的分组。
  2. Inputs:模型运行时需要由用户提供的输入参数(图层、数值、字符串等)。
  3. Algorithms:可以在模型中使用的处理算法。
  4. Variables:只在 Processing Modeler 中可用的变量定义。
  5. Undo History:操作历史,方便一步步回退。

创建一个模型通常分两步:

  1. 定义输入:告诉模型“运行时需要用户给我哪些东西”(图层、数值、参数等)。每个输入都会出现在画布上。
  2. 搭建流程:把算法一个个放到画布中,并指定它们用哪些输入、依赖谁的输出,最后形成一条完整的工作流。

操作

定义输入

第一步是把模型的输入定义好。 在左侧的 Inputs 面板中,双击某种输入类型即可添加。例如,选择“输入矢量图层”:

添加完成后,画布上会多出一个对应的输入节点:

除了双击,也可以把输入类型从列表中直接拖拽到画布上合适的位置。

如果之后想修改这个输入的参数(比如名称、是否必填、默认值等),只需要在画布上双击该输入节点,会弹出同样的配置对话框,随时可调。


搭建工作流程(使用算法)

所有可用的算法都在左侧 Algorithms 面板中,分组方式基本和 Processing toolbox 中一致,找起来很类似。

要把某个算法加入模型,有两种方式:

  • 双击算法名称
  • 或者像输入一样拖拽到画布中

添加后,你可以:

  • 修改算法在模型中的描述(让模型图更好懂)
  • 添加注释,帮助自己或同事回看时理解这一步是干什么的

弹出的参数设置对话框整体上和 Processing toolbox 里是一致的,只是多了一些与模型相关的选项。

算法输入的几种类型

在模型里配置算法参数时,数据输入大致有四种来源:

  • Value 从当前 QGIS 项目中已加载的图层中选择,或从磁盘路径浏览图层文件。这类似于在普通处理对话框里直接选一个图层。

  • Pre-calculated Value 使用表达式生成器来计算参数值。 你可以在表达式里引用模型输入、图层统计等,这些变量会列在表达式生成器的“搜索”对话框顶部,方便直接点击使用。

  • Model Input 当某个参数应该来自“用户在运行模型时要填写的输入”时,选择这个选项。 这里会列出所有与该参数类型兼容的模型输入。

  • Algorithm Output 当这个算法的输入需要使用“前面某个算法的输出”时,则选择这里。 它会列出流程中已定义、且类型匹配的算法输出。

此外,对于算法的输出,还多了一个 Model Output 选项。 如果勾选它,该输出就会暴露为模型的最终输出之一,可以在下游模型中继续作为输入使用,或者在运行时保存为结果文件。


编辑与管理模型节点

在画布中,右键单击模型中的任意“框”(无论是输入还是算法),会看到一个小菜单:

  • Remove:移除该节点及其连接。
  • Edit:编辑节点参数,打开配置面板。
  • Add Comment:给该节点添加文字备注,方便说明用途或提醒注意事项。
  • Deactivate:将该算法“停用”。 被停用的算法以及与它相关联的算法会以灰色显示,并且在运行模型时不会执行。 这在调试某一部分流程、或者暂时屏蔽某些耗时步骤时很有用。

将模型导出为 Python 脚本

QGIS 中的处理算法既可以从图形界面运行,也可以在 Python 控制台中调用;同样,你也可以用 Python 来编写自己的处理算法。

如果你已经用 graphical modeler 搭好了一个模型,可以直接将其导出为 Python 脚本文件。这是从“可视化搭建”过渡到“Python 自动化”的一个很好入口:

  1. 先用模型器把流程理顺、搭好;
  2. 确认结果没问题后,导出为 Python;
  3. 在脚本基础上做更细致的定制,比如批处理、循环、条件判断等。