使用点或多边形对影像资料取样

警告

This tutorial is now obsolete. A new and updated version is available at 使用点或多边形(QGIS3)采样栅格数据

许多科学与环境的资料库使用的是网格状的影像资料,高程资料 (DEM) 同样的也是以影像档的方式发行。这些影像档中,要呈现的资料数值就是影像中每个像素的像素值。有些时候,我们会需要找出在特定地点的像素值,或是把某个区域的所有像素一同囊括以进行后续分析。这些功能在 QGIS 中可以透过两个附加元件来达成,分别是 Point Sampling ToolZonal Statistics plugin

内容说明

使用美国的「当日最高温」资料网格影像,找出所有美国都市区的当日最高温度,以及美国境内所有县的平均当日最高温。

你还会学到这些

  • 重投影向量图层

  • 在 QGIS 图层列表中选择且移除多个图层

取得资料

美国国家海洋暨大气总署(NOAA)的 Climate Prediction Center 提供了温度和降雨相关的 GIS 资料。下载 最近一笔的当日最高温资料。档案会以 us.tmax_nohads_ll_{YYYYMMDD}_float.tif 的分式命名。(Y=年,M=月,D=日)

接着我们要使用 2013 US Gazetteer 的 CSV 档,上面记载所有美国的都市区域位置。下载 Urban Areas Gazetteer File

然后我们还要对每个县计算最高温的平均值,所以需要 2013 TIGER/Line Shapefiles。下载 县边界 (及相等行政区) 的 shapefile

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

us.tmax_nohads_ll_20140525_float.tif

2013_Gaz_ua_national.zip

tl_2013_us_county.zip

资料来源 [NOAACPC] [USGAZETTEER] [TIGER]

操作流程

  1. 选择 图层 ‣ 加入影像图层,选择刚才下载的 us.tmax_nohads_ll_{YYYYMMDD}_float.tif ,然后按 开启

../_images/1191.png
  1. 图层载入后,选择 识别图征 工具然后点选图层的任一处。你可以在「波段 1」中看到该点的摄氏温度值。

../_images/2147.png
  1. 接着把刚下载的 2013_Gaz_ua_national.zip 档案解压缩,产生 2013_Gaz_ua_national.txt。选择 图层 ‣ 加入分隔文字图层

../_images/382.png
  1. 从分隔文件建立一个图层 视窗中,点选 浏览 然后开启 2013_Gaz_ua_national.txt。选择 自订分隔符号 中的 定位键,由于典座标以经纬度编排,因此 X座标 选择 INTPTLONGY座标 选择 INTPTLAT。勾选 使用空间索引,然后按下 确定

../_images/460.png
  1. 现在我们已做好从影像图层中取样的准备。请安装 Point Sampling Tool 附加元件,安装细节请参考 使用附加元件

../_images/561.png
  1. 选择 附加元件 ‣ Analyses ‣ Point sampling tool,开启附加元件视窗。

../_images/658.png
  1. Point Sampling Tool 视窗中,Layer containing sampling points 要选择 2013_Gaz_ua_national,而且我们必须要明确的指定所有会从输入图层转存到输出图层的栏位值,因此请从 2013_Gaz_ua_national 图层中选择 GEOIDNAME 两栏位。我们可以一次从许多影像波段中取样,不过因为我们目前使用的影像只有 1 个波段,所以选择 us.tmax_nohads_ll_{YYYYMMDD}_float: Band 1 即可。把输出向量图层命名为 max_temparature_at_urban_locations.shp 后按下 确定,程式就会开始执行,当执行结束后,再按下 关闭

../_images/757.png
  1. 新的图层 max_temparature_at_urban_locations 会被载入到 QGIS 中。使用 识别图征 工具,在任何一点上按一下,就可以浏览其属性。你会看到有个称为 us.tmax_no 的属性,这就是在此点位置的影像像素值。

../_images/855.png
  1. 我们分析的第一部分已经完成,现在来移除一些不需要的图层。按住 Shift 键然后选择 max_temparature_at_urban_locations2013_Gaz_ua_national 图层,以右键点选 移除,就可把它们从 QGIS 的图层列表中移除。

../_images/954.png
  1. 选择 图层 ‣ 加入向量图层,选择刚才下载的 tl_2013_us_county.zip ,然后按 开启,选择 tl_2013_us_county.shp 图层然后按下 确定

../_images/1053.png
  1. tl_2013_us_county 会加入到 QGIS 中。本图层使用的投影法是 EPSG:4269 NAD83 ,与影像的投影法不相符,所以我们必须先把新图层重投影到 EPSG:4326 WGS84 才行。

../_images/1192.png
  1. tl_2013_us_county 图层上按右键然后选择 存档为…

../_images/1253.png
  1. 储存向量图层为… 的视窗中,按下 浏览然后把新档案命名为 counties.shp。点选 选取CRS 钮,然后选择 WGS 84 作为 CRS,勾选 加入储存档案至地图中,最后按下 确定

../_images/1351.png
  1. 名称为 counties 的新图层会加入 QGIS 中。

../_images/1450.png
  1. 启用 区域统计附加元件(Zonal Statistics Plugins)。由于它属于核心附加元件,所以 QGIS 已经安装就绪了。有关于如何启用核心附加元件,请参考 使用附加元件

../_images/1548.png
  1. 选择 影像 ‣ 区域统计 ‣ 区域统计

../_images/1644.png
  1. 影像图层 的栏位选择 us.tmax_nohads_ll_{YYYYMMDD}_float包含此区域的多边形图层 选择 counties输出的栏位前缀 输入 ZX_,然后按下 确定

../_images/1741.png
  1. 依照你的资料大小而定,分析可能需要一点时间。

../_images/1841.png
  1. 处理结束后,选择 counties 图层,使用 识别图征 工具点一下任一个县市的多边形图征,你可以图层中出现了新的属性:ZS_countZS_mean,和 ZS_sum。这三个属性分别为影像像素的总数、像素值的平均,以及像素值的总和。由于我们要求的是平均温度,ZS_mean 栏位就是我们所需要的。

../_images/1935.png
  1. 让我们来调整一下图层样式,建立一张温度分布地图。在 counties 图层上按右键选择 属性

../_images/2028.png
  1. 切换至 样式 分业,选择 渐层 样式然后 选择 ZS_mean。选择一个你喜欢的 色彩映射表模式,然后按下 分类以建立类别,最后按下 :guilabel:`确定。(样式设定的细节,请参考 基本向量资料样式设定。)

../_images/2148.png
  1. 最后你会看到县市界的多边形地图现在已依照从影像网格中取出的平均最高气温数值设定好样式了。

../_images/2228.png