网格式影像的基本分析与样式设定

警告

This tutorial is now obsolete. A new and updated version is available at 基本栅格样式和分析(QGIS3)

许多的科学观测与研究产生的是网格式影像(Raster)资料。这种资料以点阵图的方式呈现,点阵中的每个像素都有自己的特定数值。只要使用一些数学运算,就可以拿这些数值进行有趣的分析。QGIS 中的 影像计算 功能具有许多基本的指令可供使用,在本教学中,会展示基本的 影像计算 功能操作,以及一些设定网格式影像样式的选项。

内容说明

我们要使用人口密度的网格资料,呈现 1990 到 2000 年间,人口密度具有大幅度改变的地方。

你还会学到这些

  • 在 QGIS 中一次读取多个资料集。

取得资料

这边要使用的是 Columbia University 公布的 世界网格化人口分布 (GPW) v3 资料库中,以 ASCII 格式储存的、1990 年和 2000 年的全球网格化人口资料。

以下说明如何搜寻与下载相关资料。

  1. 前往 Population Density Grid, v3 download page.,在 Data Attributes 中选择 .ascii format1° resolution1990 年,然后按 Download。接下来你可能要建立一个免费帐号然后登入,或是直接使用底下的 Guest Download 来下载。接者以同样的方式取得 2000 年的资料。

../_images/1187.png

完成后会有 2 个 zip 档。

为了方便起见,你也可以直接用下面的连结下载:

gl_gpwv3_pdens_90_ascii_one.zip

gl_gpwv3_pdens_00_ascii_one.zip

资料来源 [GPW3]

操作流程

  1. 打开 QGIS,选择 图层 ‣ 加入影像图层

../_images/2143.png
  1. 移到下载档案的资料夹,按住 Ctrl 键后点选两个 zip 档,这样就可以一次读取它们。(译注:如果出现错误讯息的话,先解压缩到同一个资料夹中,然后再参考下一步,选择目标档案即可。)

../_images/380.png
  1. 每个 zip 档都有 2 个网格档。有 a 的那个档表示人口数量有经过调整以符合联合国的统计数值。本教学使用调整过后的资料。选择 glds00ag60.asc 图层,然后按下 确定

../_images/458.png
  1. 这个图层并没有定义 CRS,因此我们得手动选择 EPSG:4326 作为这个以经纬度为单位的图层之座标参考系统。

../_images/559.png
  1. 由于我们选择了两个 zip 档,因此同样的步骤要做两次。重复以上步骤,这次选择 glds90ag60.asc 加到专案中。

../_images/656.png
  1. 再一次选 EPSG:4326 作为 CRS。

../_images/755.png
  1. 现在两个图层都读到 QGIS 内了。网格式影像会使用灰阶来呈现,颜色越深表示像素值越低,而颜色越浅表示像素值越高。

../_images/853.png
  1. 影像中的每个像素都有自身值,在这两个档案中,这个值就是人口密度。选择 识别图征 后在影像的任一处点一下,就可以看到这个像素的人口密度值。

../_images/952.png
  1. 为了适当的呈现人口密度分布的图样,得调整一下样式才行。在图层名字上按右键选择 属性,或是直接在图层名字上按两下,都可以进到图层属性的视窗。

../_images/1051.png
  1. 样式 分页下,把 绘图类型 换成 单波段伪彩色,然后按下位于 产生新的色彩对映表 中的 分类 钮。会有 5 个新颜色和值跑出来,最后按下 确定

../_images/1188.png
  1. 回到 QGIS 主画面,就可以看到影像使用类似温度分布图的概念着色。顺便也对另一个影像执行相同步骤。

../_images/1251.png
  1. 我们的分析目标是找出在 1990 年到 2000 年间有剧烈的人口变动的地方,方法则是计算这两个影像的每个像素数值的差异。选择 影像 ‣ 影像计算

../_images/1349.png
  1. 影像波段 的选择框中,可以点两下以选择某个图层。这里的波段命名方式是图层名称加上「@」再加上波段编号,由于我们的影像都只有 1 个波段,所有每个影像都只会有「编号 1」。在影像计算的功能中,可以针对像素进行基本的数学运算,为了找出人口密度差异,必须要在 2000 年的资料中减掉 1990 年的资料,所以计算式要输入 glds00ag60@1 - glds90ag60@1。把输出档命名为 pop_density_change_2000_1990.tif,勾选 将结果加入专案 ,最后按 确定

../_images/1448.png
  1. 操作完成后,新图层会被加入到 QGIS 中。

../_images/1546.png
  1. 虽然灰阶看起来还不错,但我们还是可以改一个更能表达资讯的样式。在 pop_density_change_2000_1990 图层上按右键后进入 属性

../_images/1642.png
  1. 这次我们要把在同一个范围之内的像素值设成相同颜色。在设定之前,先到 诠释资料 分页内看一下这个影像的属性,尤其是最大值和最小值。

../_images/1739.png
  1. 切到 样式 分页下,把 绘图类型 换成 单波段伪彩色,再把 色彩内插 调成 离散。之后按下 手动新增值 4 次以建立 4 个类别,点一下类别的数值就可以进行更改。在这里,色彩对应的规则是「像素值比这个类别的值低的所有像素,都会被设成这个类别的颜色」。因为我们的影像的像素最小值比 -2000 还高一点,所以我们把第一个类别的值设成 -2000,这样这个颜色代表的就是「没有资料值」(No Data Values)。照如下的方式把所有类别都设定完成,然后按下 确定

../_images/1839.png
  1. 现在人口变多或变少的地方就清楚的显示出来了。接下来按下 放大 钮在欧洲附近拉一个矩形,缩进去看看细节。

../_images/1933.png
  1. 选择 识别图征 后在影像红色含蓝色处点看看,就可以确认刚刚的样式设定是没问题的。

../_images/2026.png
  1. 最后再让我们多做一步,把人口密度呈现负增长的地方筛选出来。开启 影像 ‣ 影像计算

../_images/2144.png
  1. 输入如下所示的表示式,如果像素值符合表示式,输出的像素值就是 1 ,如果不符合,就会是 0。这样我们就可以得到新的影像档,像素值为 1 时表示负增长,值为 0 时则没有负增长。把输出档命名为 negative_pop_change_2000_1990,勾选 将结果加入专案 ,最后按 确定

pop_density_change_2000_1990@1 < -10
../_images/2226.png
  1. 新图层产生后,以右键进入 属性 ,在 透明度 分页中的 附加无资料值 的地方打上 0 ,这样的话值为 0 的像素也会被设成透明。最后按下 确定

../_images/2323.png
  1. 最后,就只剩下所有的负人口增长区是灰黑色的了。

../_images/2421.png