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

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

内容说明

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

你还会学到这些

  • 重投影向量图层
  • 在 QGIS 图层列表中选择且移除多个图层

取得资料

美国国家海洋暨大气总署(NOAA)的 Climate Prediction Center 提供了温度和降雨相关的 GIS data 下载 latest grid filei for maximum temperatures。档案会以``us.tmax_nohads_ll_{YYYYMMDD}_float.tif``的分式命名。(Y=年,M=月,D=日) 接着我们要使用 2013 US Gazetteer 的 CSV 档,上面记载所有美国的都市区域位置。下载 Urban Areas Gazetteer File。 然后我们还要对每个县计算最高温的平均值,所以需要 2013 TIGER/Line Shapefiles 。下载`Counties (and equivalents) shapefile <http://www2.census.gov/geo/tiger/TIGER2013/COUNTY/tl_2013_us_county.zip>`_。

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

us.tmax_nohads_ll_20140525_float.tif

2013_Gaz_ua_national.zip

tl_2013_us_county.zip

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

操作流程

1. 选择:menuselection:Layer –> Add Raster Layer 选择刚才下载的``us.tmax_nohads_ll_{YYYYMMDD}_float.tif`` 然后按 Open

../_images/1131.png
  1. 图层载入后,选择 Identify 具然后点选图层的任一处。你可以在「波段 1」中看到该点的摄氏温度值。
../_images/279.png
  1. 接着把刚下载的 2013_Gaz_ua_national.zip 档案解压缩,产生``2013_Gaz_ua_national.txt`` file on your disk。 选择:menuselection:Layer –> Add Delimited Text Layer
../_images/339.png
  1. 在:guilabel:Create a Layer from Delimited Text File 视窗中,点选:guilabel:Browse 然后开启``2013_Gaz_ua_national.txt``。 选择 Custom delimiters`中的:guilabel:`Tab,由于典座标以经纬度编排,因此 X field 选择:guilabel:INTPTLONGY field 选择 INTPTLAT 。 勾选the Use spatial index 然后按下:guilabel:OK
../_images/429.png
  1. 现在我们已做好从影像图层中取样的准备。请安装 Point Sampling Tool 附加元件,安装细节请参考:doc:using_plugins
../_images/530.png
  1. 选择:menuselection:Plugins –> Analyses –> Point sampling tool,开启附加元件视窗。
../_images/628.png
  1. Point Sampling Tool 视窗中, Layer containing sampling points 要选择``2013_Gaz_ua_national``,而且我们必须要明确的指定所有会从输入图层转存到输出图层的栏位值,因此请从``2013_Gaz_ua_national``图层中选择``GEOID``和``NAME``两栏位。我们可以一次从许多影像波段中取样,不过因为我们目前使用的影像只有 1 个波段,所以选择 ``us.tmax_nohads_ll_{YYYYMMDD}_float: Band 1``即可。把输出向量图层命名为``max_temparature_at_urban_locations.shp``后按下:guilabel:OK ,程序就会开始执行,当执行结束后,再按下:guilabel:Close
../_images/727.png
  1. 新的图层 max_temparature_at_urban_locations 会被载入到 QGIS 中。使用:guilabel:Identify 工具,在任何一点上按一下,就可以浏览其属性。你会看到有个称为 ``us.tmax_no``的属性,这就是在此点位置的影像像素值。
../_images/826.png

9. F我们分析的第一部分已经完成,现在来移除一些不需要的图层。按住:kbd:Shift 键然后选择 max_temparature_at_urban_locations 和``2013_Gaz_ua_national`` 图层,以右键点选:guilabel:Remove 就可把它们从 QGIS 的图层列表中移除。

../_images/924.png
  1. 选择:menuselection:Layer –> Add Vector Layer, 选择刚才下载的``tl_2013_us_county.zip``,然后按 Open,选择``tl_2013_us_county.shp`` 图层然后按下:guilabel:OK
../_images/1025.png
  1. tl_2013_us_county 会加入到 QGIS 中。本图层使用的投影法是``EPSG:4269 NAD83``,与影像的投影法不相符,所以我们必须先把新图层重投影到``EPSG:4326 WGS84``才行。
../_images/1132.png
  1. 在``tl_2013_us_county`` 图层上按右键然后选择 存档为:guilabel:Save As..
../_images/1226.png
  1. Save Vector layer as.. 的视窗中, 按下:guilabel:Browse`然后把新档案命名为``counties.shp`。从 CRS 下拉菜单 选择:guilabel:Selected CRS 按下:guilabel:Browse 然后选择``WGS 84``作为 CRS, 勾选:guilabel:Add saved file to map,最后按下:guilabel:OK
../_images/1324.png
  1. 名称为``counties`` 的新图层会加入 QGIS 中。
../_images/1423.png
  1. 启用 Zonal Statistics Plugins。由于它属于核心附加元件,所以 QGIS 已经安装就绪了。有关于如何启用核心附加元件,请参考:doc:using_plugins
../_images/1522.png
  1. 选择:menuselection:Raster –> Zonal statistics –> Zonal statistics
../_images/1621.png

17. Select guilabel:Raster layer 的栏位选择``us.tmax_nohads_ll_{YYYYMMDD}_float``,包含:guilabel:Polygon layer containing the zones`选择``counties`,guilabel:Output column prefix`输入 ``ZS_`。 然后按下 OK

../_images/1720.png
  1. 依照你的资料大小而定,分析可能需要一点时间。
../_images/1820.png
  1. 处理结束后,选择``counties``图层,使用:guilabel:Identify 工具点一下任一个县市的多边形图征,你可以图层中出现了新的属性:ZS_count,``ZS_mean`` 和``ZS_sum``。这三个属性分别为影像像素的总数、像素值的平均,以及像素值的总和。由于我们要求的是平均温度,``ZS_mean``栏位就是我们所需要的。
../_images/1918.png
  1. 让我们来调整一下图层样式,建立一张温度分布地图。在 counties 图层上按右键选择:guilabel:Properties.
../_images/2015.png
  1. 切换至:guilabel:Style`分业, 选择:guilabel:`Graduated 样式然后 guilabel:Column``选择`ZS_mean`。 选择一个你喜欢的:guilabel:Color RampMode of your chose,然后按下:guilabel:Classify 以建立类别,最后按下:guilabel:OK. (样式设定的细节,请参考:doc:basic_vector_styling。)
../_images/2119.png
  1. 最后你会看到县市界的多边形地图现在已依照从影像网格中取出的平均最高气温数值设定好样式了。
../_images/2218.png