使用处理框架进行批次处理 (QGIS3)¶
QGIS中的 处理框架 在QGIS中提供了一个运行本机和第三方算法来处理数据的环境。它包含一个不错的批处理界面,使您可以轻松地在多个层上执行算法。批处理是一个有用的工具,可以节省手动工作并帮助您自动执行重复性任务。
内容说明¶
我们将采用几个全局矢量层,并在单个批处理命令中将它们裁剪到非洲范围。
你还会学到这些¶
创建 Filter 可以从图层中删除不需要的功能,而无需创建新图层。
将多个图层合并到一个Geopackage文件中。
操作流程¶
在QGIS浏览器面板中,找到保存下载数据的目录。展开
zip
或gpkg
条目,然后选择ne_10m_admin_0_countries
层。将图层拖到画布上。
您将在图层面板中看到加载的图层。由于我们的任务是将全球图层裁剪到非洲边界,因此我们需要首先准备一个仅包含该大陆要素的图层。让我们看一下属性表,看看可以使用哪个列查询属于特定大陆的要素。右键单击
ne_10m_admin_0_countries
层,然后选择 Open Attribute Table 。
注解
提示:您也可以使用键盘快捷键 F6 打开所选图层的属性表。
在 Attribute Table 窗口中,当您水平滚动时,您会看到数据包含名为 CONTINENT 的属性。我们可以使用该属性来过滤特征。
关闭属性表并返回到QGIS主窗口。右键点击
ne_10m_admin_0_countries
图层,然后选择 Filter 。
在 Query Builder 窗口中,选择 CONTINENT 字段,然后单击 Sample 。这将使用要素中该属性的值的子集填充 Values 面板。此步骤对于了解数据集中存在哪些类型的值很有用。我们可以看到我们的数据集包含一个名为 Africa 的值。
现在,在提供商特定 Provider specific filter expression 。您可以点击 CONTINENT 标签,然后点击 = 按钮和 Africa 标签。或者,您可以在文本框中键入以下表达式。输入表达式后,单击 OK 。
"CONTINENT" = 'Africa'
您将看到地图画布现在仅包含来自非洲的国家。请注意图层名称旁边的过滤器图标,指示该图层已应用该过滤器。如果要查看和使用图层中的所有要素,可以单击过滤器图标并清除表达式。现在,我们将保留过滤器,以便将其他图层裁剪到非洲。
现在,我们准备运行批处理来裁剪图层。在 QGIS Browser 面板中找到自然地球全局层
ne_10m_railroads
,ne_10m_ports
和ne_10m_urban_areas
。按住 Ctrl 键,然后单击每个图层以选择它们。选定后,将它们拖到画布上。
加载图层后,您会注意到它们是全局图层,并且具有跨越所有国家的要素。现在,是时候开始我们的批处理剪辑过程了,以将这些图层剪辑到非洲。打开
。
浏览所有可用算法,然后从 Clip 工具。您也可以使用 Search 来轻松找到算法。
中找到
右键单击 Clip 算法,然后选择 Execute as Batch Process 。
在 Batch Processing 对话框中,第一个选项卡是 Parameters ,我们在其中定义输入。表中的每一行代表1个处理任务。点击 Click Add row 。由于我们的任务涉及3层,因此添加3行。
在 Input layers 列的第一行旁边点击 … 。 选择 Select from Open Layers 。
在 Multiple selection 对话框中,选中我们要裁剪的3层,然后单击 OK 。
您会注意到 Input layer 列将自动填充您选择的所有层。接下来,我们需要选择包含边界的图层以裁剪输入图层。在 Overlay layer 列下的第一行中,点击 … 按钮,然后选择 Select form Open Layers 。
在 Multiple selection 对话框中,选中
ne_10m_admin_0_countries
,然后单击 OK 。
由于剪辑层对于我们所有的输入都是相同的,所以方便的快捷方式是双击列标题 Overlay layer ,并且所有行将自动填充相同的层。
接下来,我们需要定义输出。在 Clipped 列的第一行旁边点击 … 按钮。
浏览到你想要储存输出档的资料夹内,档名输入为
clipped_
,然后按下 Save 。
您会看到一个新的弹出窗口 Autofill settings 对话框。选择
使用参数值填充
作为 Autofill mode 。选择输入层
作为 Parameter to use 。此设置会将输入文件名和指定的clipped_
文件名一起添加到输出中。确保所有输出文件具有唯一的名称并且它们不会相互覆盖很重要。
现在,我们准备开始批处理。确保检查完成时 Load layers on completion ,然后单击 Run 。
裁剪算法将针对每个输入运行,并创建我们指定的输出文件。批处理过程完成后,请单击 Close 以返回到QGIS。
注解
提示:QGIS现在可以在后台运行处理任务,而不会阻塞用户界面。因此,如果您的批处理过程很耗时,则可以关闭对话框并继续处理QGIS中的其他任务,而该过程仍在后台运行。
返回 QGIS 主窗口,您将看到添加到 QGIS 画布中的图层。您会注意到,所有全局层都已正确裁剪到我们指定的大陆边界。
我们已经完成了批量裁剪多个图层的任务。但是QGIS3具有另一个方便的功能,它将帮助您以更有效的方式保存和交付结果。如果要将剪切的图层交付给某人,则可以将单个文件压缩到QGIS之外。将输出图层打包在单个 Geopackage 中的更好选择。在 QGIS Browser 中,找到裁剪后的输出层。您可能必须单击 Refresh 按钮才能看到新添加的文件。
按住 Ctrl 键并选择图层。将它们拖到画布上以将它们加载到QGIS中。
在 Processing Toolbox 中,找到 工具。
在 Package layers 对话框中,单击 Input layers 旁边的 … 按钮。
在 Multiple selection 对话框中,检查
clipped_ne_10m_ports
,clipped_ne_10m_railroads
和clipped_ne_10m_urban_areas
图层。点击 OK 。
选择输入图层后,单击 Destination Geopackage 旁边的 … ,然后选择 Save To File 。
输入输出文件名为
clipped_layers
。
单击 Run 以开始打包过程。
该过程完成后,您将在 QGIS Browser 中看到一个新的geopackage文件,其中包含所有裁剪的输出层。这是计算机上包含所有输出图层的单个文件。