26.6. 批处理界面

26.6.1. 引言

所有算法(包括模型)都可以作为批处理过程执行。也就是说,它们不仅可以使用一组输入执行,还可以使用几组输入执行,并根据需要多次执行算法。这在处理大量数据时很有用,因为不需要从工具箱多次启动算法。

要将算法作为批处理过程执行,请在工具箱中右键单击其名称,然后选择 Execute as batch process 将出现的弹出菜单中的选项。

../../../_images/batch_processing_right_click.png

图 26.32 通过右键单击进行批处理

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

../../../_images/parameters_dialog.png

图 26.33 算法对话框中的批处理

26.6.2. 参数表

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

../../../_images/batch_processing.png

图 26.34 批处理

在顶部工具栏中,您可以执行以下操作:

  • 符号系统添加 Add row :为配置添加新的处理条目

  • 符号系统移除 Remove row(s) :从表格中删除选定的行。行选择是通过单击左侧的数字来完成的,它允许 keyboard combination 用于多项选择。

  • 文件打开 Open 批处理配置文件

  • 文件保存 Save 将批处理配置设置为 .JSON 可以在之后运行的文件

默认情况下,该表仅包含两行:

  • 第一行在每个单元格中显示为 Autofill... ► 下拉菜单,包含 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。

  • 设置文件或层参数时,提供了更多选项:

    • Add Files by Pattern... :向表中添加与 File pattern 在文件夹中 Look in 。例如。 *.shp 将向列表中添加所有 SHP 文件夹中的文件。检查 复选框 Search recursively 还可以浏览子文件夹。

    • Select Files... 单独存储在磁盘上

    • Add All Files from a Directory...

    • Select from Open Layers... 在激活项目中

输出数据参数公开的功能与将算法作为单个进程执行时的功能相同。根据算法的不同,输出可以是:

  • 如果单元格保留为空,则跳过

  • 另存为临时图层:使用填充单元格 TEMPORARY_OUTPUT 别忘了打勾 复选框 Load layers on completion 复选框。

  • 另存为纯文本文件 (.SHP.GPKG.XML.PDF.JPG ,...)它的路径可以用 Autofill 事先公开的期权。例如,使用 Calculate by Expression... 要将输出文件名设置为复杂表达式,请执行以下操作:

    '/home/me/stuff/buffer_' || left(@INPUT, 30) || '_' || @DISTANCE || '.shp'
    

    您也可以直接键入文件路径,或使用在单击附带的 ... 纽扣。选择文件后,将显示一个新的对话框,允许自动完成同一列中的其他单元格(相同的参数)。

    ../../../_images/batch_processing_save.png

    图 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 面板被激活,并显示执行过程的详细信息和步骤。全局批处理任务的进度将显示在对话框下方的进度栏中。