使用处理框架进行批次处理

QGIS 2.0 引进了一个称为处理框架(Processing Framework)的新概念。它的前身是 Sextante,旨在为 QGIS 提供可以用来执行原生或第三方提供的演算法来处理资料的环境。此概念包含一个很棒的批次处理介面,让使用者可以简单地对许多图层执行程序计算。这个批次处理工具可以自动处理重复的工作,为你省去许多时间精力。

内容说明

我们要只使用一个批次指令,来裁切几个全球的向量图层的非洲大陆区域资料。

你还会学到这些

  • 融合 (Dissolve) 图层中具有相同属性的多边形图征

取得资料

Natural Earth 可以载到以下几个向量图层:

下载后,把所有的 shapefile 都解压缩到同一个资料夹。

资料来源: [NATURALEARTH]

操作流程

  1. 选择:menuselection:Layer –> Add Vector Layer
../_images/114.png
  1. 选择刚下载的 Admin 0 Countries shapefile ne_10m_admin_0_countries.shp 并按下:guilabel:Open
../_images/212.png
  1. 由于我们的任务是裁切全球图层到非洲大陆的范围,因此需要先准备一个多边形图层,描绘出非洲大陆的外框。本图层具有一个称为**CONTINENT**的属性,我们可以利用一个称为「融合(Dissolve)」的地理运算工具,来融合所有具有相同属性的非洲国家(多边形)成为一个大的多边形。
../_images/36.png
  1. 选择:menuselection:Vector –> Geoprocessing Tools –> Dissolve,开启:guilabel:`Dissolve`工具。
../_images/43.png
  1. 在:guilabel:Input vector layer`中输入``ne_10m_admin_0_countries`,guilabel:Dissolve field 选择``CONTINENT``,输出档命名为``continents.shp`` ,然后勾选:guilabel:`Add result to convas`至 QGIS 地图中。

注解

如果你想要不管属性、融合**ALL** 的多边形的话,可以在:guilabel:Dissolve field`中选择:guilabel:– Dissolve All –` ,这样的话所有的多边形就会融合成一个。

../_images/53.png
  1. 融合的处理需要一些时间。 当处理完毕后,名为 continent 的新图层会加到QGIS 中,使用工具列上的:guilabel:Select Single Feature 工具,点选非洲大陆,把大陆外框的多边形选取起来。
../_images/63.png

7.在``continents``图层上按右键选择:guilabel:Save Selection As...,勾选 储存仅选取的图征。(译按:旧一点的 QGIS 版本可以直接选择 储存选取范围为...)

../_images/73.png
  1. 输出档案命名为``africa.shp``,由于我们只需要大陆的形状,不在乎其属性值,因此:guilabel:Skip attribute creation`的框框也可以勾选起来。顺便确认 :guilabel:`Add saved file to map 有勾选后,按下:guilabel:OK
../_images/83.png
  1. 现在 QGIS 已载入了``africa``图层,图层内只有一个非洲的多边形。现在我们可以开始批次剪下档案了。开启 Processing ‣ Toolbox
../_images/93.png
  1. 在所有可用的运算法中搜寻并找到 裁切 Clip 工具。它可能会放在它可能会放在 geoalgorithms ‣ 向量 ‣ 叠层 目录底下,或是旧版的:menuselection:QGIS geoalgorithms –> Vector overlay tools –> Clip`底下。你也可以使用:guilabel:`Search 框简单查询此运算法的位置。
../_images/103.png
  1. 右键点选:guilabel:Clip 运算法然后选择:guilabel:Execure as batch process
../_images/115.png
  1. 在:guilabel:Batch Processing 的视窗中,第一个分页:guilabel:Parameters`就是我们给定输入档案的地方。请点选第一行的:guilabel:`Input layer 框旁边的:guilabel:`...`按钮。
../_images/123.png
  1. 切换至你刚下载的有关全球交通的 shapefile 的资料夹,按住:kbd:Ctrl 键然后选择所有你想要裁切的图层。你也可以使用:kbd:Shift 或:kbd:Ctrl-A 进行多重选取。接着按下:guilabel:`Open`旧档。
../_images/133.png
  1. 你会看到:guilabel:Input layer c栏位现在已经自动填上我们刚才选择的档案。你可以使用:guilabel:Add row 的按钮增加更多栏位,一次处理更多资料。接下来,我们要选择含有裁切边界的图层,因此请点选 裁切图层 旁边的:guilabel:... 钮,选择``africa.shp``。由于我们要用同一个:guilabel:Clip layer`所有的输入档,因此可以在:guilabel:`Clip layer 的标题地方点两下,此图层就会自动填到所有的空白行中。接下来我们要设定输出档案,请点选在:guilabel:Clipped 一栏旁边的:guilabel:... 钮。
../_images/143.png
  1. 浏览到你想要储存输出档的资料夹内,档名输入为``clipped_``然后按下 Save
../_images/153.png
  1. 你会看到有个 Autofill settings 的视窗出现。guilabel:Autofill mode`选择:guilabel:`Fill with parameter values ,guilabel:Parameter to use 选择:guilabel:Input layer。此设定会让所有的输出档档名为输入档档名之前再加上``output_`` 文字。此步骤非常重要,务必确认出各个输出档档名都是独一无二的,才不会发生互相覆蓋的情况。
../_images/163.png
  1. 现在批次处理已经准备就绪,请按下:guilabel:Run
../_images/172.png
  1. 裁切运算将执行在你刚刚指定的输入档上,然后制作成为输出档。批次处理完成后,产生的图层会载入到 QGIS 中,你会发现这些全球的图层都被裁切到只剩下非洲大陆的区域了。
../_images/183.png