26.6. 批处理界面
26.6.1. 引言
所有算法(包括模型)都可以作为批处理过程执行。也就是说,它们不仅可以使用一组输入执行,还可以使用几组输入执行,并根据需要多次执行算法。这在处理大量数据时很有用,因为不需要从工具箱多次启动算法。
要将算法作为批处理过程执行,请在工具箱中右键单击其名称,然后选择 Execute as batch process 将出现的弹出菜单中的选项。

图 26.32 通过右键单击进行批处理
如果您打开了算法的执行对话框,您还可以从那里启动批处理界面,单击 Run as batch process... 纽扣。

图 26.33 算法对话框中的批处理
26.6.2. 参数表
执行批处理类似于执行算法的单次执行。必须定义参数值,但在这种情况下,我们需要的不只是每个参数的单个值,而是一组参数值,每次必须执行算法时都需要一个参数值。值是使用如下所示的表引入的,其中每行都是迭代,列是算法的参数。

图 26.34 批处理
在顶部工具栏中,您可以执行以下操作:
Remove row(s) :从表格中删除选定的行。行选择是通过单击左侧的数字来完成的,它允许 keyboard combination 用于多项选择。
默认情况下,该表仅包含两行:
第一行在每个单元格中显示为 options 以快速填充下面的单元格。可用的选项取决于参数类型。
下拉菜单,包含第二行(以及后续的每一行)表示算法的一次执行,每个单元格包含其中一个参数的值。它类似于从工具箱中执行算法时看到的参数对话框,但排列方式不同。
在表格底部,您可以设置是否 Load layers on completion 。
一旦设置了表的大小,就必须用所需的值填充它。
26.6.3. 填写参数表
对于大多数参数,设置值都很简单。适当的小部件,与 single process dialog ,允许只键入值,或从可能的值列表中选择它,具体取决于参数类型。这还包括数据定义小部件(如果兼容)。
若要自动执行批处理定义并避免逐个单元格填充表格单元格,您可能需要按下 Autofill... 参数菜单,然后选择以下任一选项来替换该列中的值:
Fill Down 将接受第一个进程的输入,并为所有其他进程输入它。
Calculate by Expression... 将允许您创建一个新的QGIS表达式,用于更新该列中的所有现有值。现有参数值(包括来自其他列的参数值)可通过在表达式中使用 variables 。例如,根据每一层的缓冲距离设置分段数:
CASE WHEN @DISTANCE > 20 THEN 12 ELSE 8 END
Add Values by Expression... 将使用返回数组的表达式中的值添加新行(与 Calculate by Expression... ,它只在现有行上工作)。预期的用例是允许使用复杂的数字序列填充批处理对话框。例如,使用表达式为批处理缓冲区添加行
generate_series(100, 1000, 50)
对于距离参数结果,新行的值为100、150、200、...1000。设置文件或层参数时,提供了更多选项:
输出数据参数公开的功能与将算法作为单个进程执行时的功能相同。根据算法的不同,输出可以是:
如果单元格保留为空,则跳过
另存为临时图层:使用填充单元格
TEMPORARY_OUTPUT
别忘了打勾Load layers on completion 复选框。
另存为纯文本文件 (
.SHP
,.GPKG
,.XML
,.PDF
,.JPG
,...)它的路径可以用 Autofill 事先公开的期权。例如,使用 Calculate by Expression... 要将输出文件名设置为复杂表达式,请执行以下操作:'/home/me/stuff/buffer_' || left(@INPUT, 30) || '_' || @DISTANCE || '.shp'
您也可以直接键入文件路径,或使用在单击附带的 ... 纽扣。选择文件后,将显示一个新的对话框,允许自动完成同一列中的其他单元格(相同的参数)。
图 26.35 批量处理保存
如果缺省值 (Do not autofill )时,它只会将选定的文件名放入参数表格中选定的单元格中。如果选择了任何其他选项,则所有单元格 below 系统将根据定义的条件自动填充选定的选项:
Fill with numbers :递增地在文件名后追加一个数字
Fill with parameter values :您可以选择其同一行中的值附加到文件名中的参数。这对于根据输入数据对象命名输出数据对象特别有用。
另存为数据库容器中的层:
# Indicate a layer within a GeoPackage file ogr:dbname='C:/Path/To/Geopackage.gpkg' table="New_Table" (geom) # Use the "Calculate By Expression" to output to different layers in a GeoPackage 'ogr:dbname=\'' || @project_folder || '/Buffers.gpkg\' table="' || @INPUT || '_' || @DISTANCE || '" (geom)'
26.6.4. 执行批处理过程
要在引入所有必需的值后执行批处理,只需单击 Run 。这个 Log 面板被激活,并显示执行过程的详细信息和步骤。全局批处理任务的进度将显示在对话框下方的进度栏中。