17.26. 批处理界面

备注

本课介绍批处理界面,该界面允许使用一组不同的输入值执行单个算法。

有时,给定的算法必须使用不同的输入重复执行。例如,当一组输入文件必须从一种格式转换成另一种格式时,或者当给定投影中的几个层必须转换成另一种投影时,就是这种情况。

在这种情况下,在工具箱上重复调用算法不是最佳选择。相反,应该使用批处理接口,这极大地简化了执行给定算法的多次执行。要将算法作为批处理过程运行,请在工具箱中找到它,而不是双击它,而是右键单击它并选择 Run as batch process

../../../_images/batch_menu.png

对于此示例,我们将使用 Reproject algorithm ,所以找到它并按照上面描述的那样做。您将进入以下对话框。

../../../_images/batch_dialog.png

如果您查看本课的数据,您将看到它包含一组三个shapefile,但不包含QGIS项目文件。这是因为,当算法作为批处理运行时,可以从当前QGIS项目或文件中选择图层输入。这使得更容易处理大量的层,例如,给定文件夹中的所有层。

批处理对话框表格中的每一行代表算法的一次执行。一行中的单元格对应于算法所需的参数,这些单元格并不像普通的单执行对话框中那样排列在另一个之上,而是在该行中水平排列。

定义要运行的批处理过程是通过用相应值填充表来完成的,该对话框本身包含几个工具来简化这项任务。

让我们开始一块块地填田吧。要填充的第一列是 Input layer 一。无需输入我们要处理的每个层的名称,您可以选择所有层,并让对话框在每行中放置一个。点击左上角单元格中的按钮,在弹出的文件选择对话框中,选择要重新投影的三个文件。因为每一行只需要其中一个,所以其余的将用于填充下面的行。

../../../_images/first_column_filled.png

默认行数为3,这正是我们必须转换的层数,但如果选择更多层,则会自动添加新行。如果要手动填充条目,可以使用 Add row 纽扣。

我们要将所有这些层转换为EPSG:23029 CRS,因此我们必须在第二个字段中选择该CRS。我们希望为所有行打开相同的ON,但我们不必为每一行都这样做。相反,使用相应单元格中按钮设置第一行(顶部的那一行)的CRS,然后双击列标题。这会导致使用顶部单元格的值填充列中的所有单元格。

../../../_images/second_column_filled.png

最后,我们必须为每次执行选择一个输出文件,该文件将包含相应的重新投影层。再来一次,让我们只做第一排。单击上方单元格中的按钮,然后在要放置输出文件的文件夹中输入文件名(例如, reprojected.shp )。

现在,当您点击 OK 在文件选择对话框中,文件不会自动写入单元格,但会显示如下所示的输入框。

../../../_images/autofill.png

如果选择第一个选项,则只填充当前单元格。如果您选择其他任何一个,下面的所有行都将使用给定的图案填充。在本例中,我们将选择 Fill with parameter value 选项,然后选择 Input Layer 值在下面的下拉菜单中。这将导致 Input Layer (即层名称)添加到我们已添加的文件名中,从而使每个输出文件名不同。批处理表现在应该如下所示。

../../../_images/complete.png

最后一列设置是否将生成的层添加到当前QGIS项目。保留默认设置 Yes 选项,这样您就可以在这种情况下看到结果。

点击 OK 并且将运行批处理过程。如果一切顺利,你所有的层都将被处理,并且已经创建了3个新层。