3. 模型设计器界面与基础操作

模型设计器(Graphical Modeler)是 QGIS 处理框架中的可视化编排工具。它把一个个处理算法当作“积木”,让你在画布上拖拽、连线,把多步处理固化成可重复调用的模型。本节的目标很明确:认识画布与参数面板,理解输入/输出参数的作用,并亲手搭出一个能跑通的最小模型——先对输入图层做缓冲区,再用裁剪图层把缓冲区结果裁掉一部分。这个模型虽小,却完整覆盖了“输入—算法—输出”的模型骨架。

一、界面构成:先认清四个区域

从“处理”菜单打开“图形化模型构建器”后,窗口大致分为四块。左侧是算法面板,可按提供者(QGIS、GDAL 等)或关键词搜索算法,找到后拖到画布即可;中间是画布,所有算法框和连线都在这里组织;右侧是参数面板,选中某个算法框后,可在此设置各参数的取值来源;顶部是工具栏,包含保存、运行、缩放画布、导出模型等按钮。理解一个关键区别很重要:画布上的算法框参数,既可以填“固定值”,也可以绑定为“模型输入”,后者才是模型能被外部复用的前提。

模型设计器里有两类特殊对象:输入(Input)代表模型运行时由用户提供的图层、数值、字段、坐标系等;输出(Output)代表模型最终要交付的结果。它们不是算法,而是模型对外的“接口”。一个模型如果没有输入,就只能处理写死的数据;如果没有输出,运行结果就无处落地。因此,搭建模型的第一步往往不是拖算法,而是想清楚:我要让用户传进来什么,最后要拿走什么。

“缓冲区 + 裁剪”最小模型的数据流与接口 模型输入 ① 待缓冲的矢量图层 模型输入 ② 裁剪范围图层 算法:缓冲区 距离 = 500 米 分段 = 5,末端圆头 算法:裁剪 输入 = 缓冲区结果 叠加图层 = 输入 ② 模型输出 裁剪后的面图层 图层 叠加图层 缓冲结果 关键:算法框参数绑定到“模型输入”后,模型才能被外部复用;输出必须显式声明,否则结果无处落地。

二、搭建过程:从空白画布到可运行模型

假设我们有一份“城市公园点/面图层”和一份“行政区边界图层”,想得到每个行政区范围内、公园向外扩展 500 米后的区域。操作顺序如下。

第一步,添加输入。在左侧算法面板搜索“输入”,把“矢量图层”输入拖入画布,双击或选中后在右侧参数面板把名称改为“待缓冲图层”,几何类型设为“面”(若你的数据是点,就选点)。再拖一个“矢量图层”输入,命名为“裁剪范围图层”。两个输入框会以蓝色出现在画布上,它们就是模型对外的入口。

第二步,拖入缓冲区算法。搜索“缓冲区”(Buffer),拖到画布。选中它,在参数面板中把“输入图层”设为“待缓冲图层”(即绑定到模型输入①),距离填 500,单位选米,分段数填 5,末端样式选圆头。这里要注意:距离单位取决于图层坐标系。若图层是地理坐标系(度),500 会被当作 500 度,结果完全错误;因此应确保输入图层为投影坐标系(米),或在模型里先做重投影。这是初学者最常见的坑。

第三步,拖入裁剪算法。搜索“裁剪”(Clip),拖到画布。把它的“输入图层”绑定为缓冲区算法的输出(在参数面板的下拉里选择“缓冲区”的“输出图层”),把“叠加图层”绑定为“裁剪范围图层”。裁剪的含义是:保留输入图层中落在叠加图层范围内的部分。因此顺序不能反——缓冲区结果是“被裁的”,行政区是“裁剪框”。

第四步,声明输出。在参数面板中,把裁剪算法的输出设为“模型输出”,命名如“裁剪结果”。此时画布上应形成一条清晰的链路:输入①→缓冲区→裁剪←输入②,裁剪→输出。

第五步,保存与运行。点击保存,模型会存为 .model3 文件,默认位于用户配置目录的 processing/models 下。随后可直接在模型设计器里点“运行”,在弹出的对话框中分别指定两个输入图层和输出路径,执行后检查结果图层的范围是否落在行政区边界内、面积是否小于缓冲区总面积。若结果为空,优先检查两个图层的坐标系是否一致、裁剪框是否与数据有空间重叠。

建议在模型里给每个输入和输出都起语义化名称(如“待缓冲图层”“裁剪范围图层”),而不是保留默认的“图层”“输出”。名称会直接显示在模型运行对话框中,是模型可用性的重要一环。

三、参数绑定的两种方式与常见错误

画布上每个算法框的参数都有两种来源:固定值与绑定。固定值写死在模型里,适合“距离 500 米”这类稳定参数;绑定则把参数接到模型输入或上游算法输出上,适合随数据变化的图层、字段、范围。判断标准很简单:这个值是否每次运行都可能不同?是则绑定,否则可固定。

常见错误有三类。其一是把图层参数填成固定路径,导致模型换一份数据就失效;其二是连线方向反了,例如把行政区当作被裁图层,结果得到的是行政区被公园缓冲区切割的碎片;其三是忘记声明输出,模型能运行但结果只存在于临时内存,无法被后续工序或批处理引用。排查时可在模型设计器里用“运行”对话框逐项核对输入绑定,再检查输出列表是否为空。

检查项正确做法错误表现
输入图层坐标系投影坐标系(米),或模型内先重投影缓冲区距离被当作“度”,结果异常巨大或为空
裁剪方向缓冲区结果为“输入”,行政区为“叠加”得到行政区被切割的碎片
输出声明裁剪输出设为模型输出并命名运行后无结果图层可引用
参数来源图层类参数绑定到模型输入写死文件路径,换数据即失效

完成这个最小模型后,你已经掌握了模型设计器的核心操作:用输入定义接口、用算法框组织处理、用连线表达数据流、用输出交付结果。后续更复杂的模型,本质上都是在这条骨架上增加分支、循环与条件判断。建议先把本节模型保存好,再用不同行政区数据运行两三次,观察参数绑定带来的复用效果——这比记住界面按钮位置更有价值。