点资料内插法

GIS 系统常常把离散的点资料以内插法创造连续的面资料。 自然界中很多东西都是连续的,像是海拔、土壤、温度等等,如果我们想要分析这种面资料,是不可能把整个表面全部测量一次的。 实际上的做法会是我们˙在野外只取几个测量点,然后测量点之外的其他地方就靠内插法求得其值。 在 QGIS 之中,可以透过内建的 Interpolation plugin 附加元件来执行以上所述的事情。

内容说明

我们要使用位于德州的 Arlington 湖的水深测量数据,再根据这些数据制作地形图和等高线图。

你还会学到这些

  • 从点资料计算等高线
  • 套用遮罩于影像图层中的无资料值
  • 为向量图层加上标签

取得资料

Texas Water Development Board 提供了 shapefiles for completed lake surveys .

可以从这里下载 2007-12 survey shapefiles for Lake Arlington .

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

Shapefiles.zip

资料来源 [TWDB]

操作流程

  1. 打开 QGIS,选择 Layer ‣ Add Layer ‣ Add Vector Layer..
../_images/178.png
  1. 选择 Shapefiles.zip 并按下:guilabel:Open
../_images/229.png

3. 在 Select layers to add... 视窗中,按住 Shift 键然后选择 Arlington_Soundings_2007_stpl83.shpBoundary2004_550_stpl83.shp 两图层,按下:guilabel:OK

../_images/320.png
  1. 你会看到 QGIS 中载入了 2 个图层, ``Boundary2004_550_stpl83``是湖泊的边界,我们先在图层选单列表中把这个图层取消勾选。
../_images/415.png
  1. 如此一来第二个图层 Arlington_Soundings_2007_stpl83,会显现出来。虽然资料看起来像是线,但它其实是一连串很接近的点。
../_images/515.png
  1. 点选:guilabel:Zoom 钮,缩放到萤幕中的任一小区域后,就可以看到点了。每个点的座标是差分*DGPS* 的测量值,其值代表湖泊在特定位置由*Depth Sounder*测得的深度。
../_images/614.png
  1. 选择 Identify 工具然后点选任一个点,Identify Results 的面板会出现在左侧,上面记载此点的属性值。在本例中,ELEVATION 属性就是湖泊在此点的深度,而我们的任务就是要利用这些数值进行内插,求得湖泊的深度谱面以及等高线。
../_images/713.png

8. 请确认你的 Interpolation plugin 已启用,详细步骤请参考 使用附加元件 。启用后,选择:menuselection:Raster –> Interpolation –> Interpolation

../_images/813.png

9. 在 Interpolation 中, 选择``Arlington_Soundings_2007_stpl83`` 作为 Vector layersInput 面板。 Interpolation attribute 选择 ELEVATION, 然后按 Add .。调整 Cellsize XCellsize Y 坐标大小到 5. 这个数值代表输出网格的每个像素大小。由于本来源资料的投影座标系统是以 Feet-US 来当单位, 每个像素最终会是 5 feet 的方形大小。点选在 输出档案 右侧的 ..., 把 Output file 命名为 elevation_tin.tif,最后按下 OK

注解

内插的结果会随着你选择的内插方法和参数而有很大的不同。QGIS 支援两种内插方法,分别为 Triagulated Irregular Network (TIN)Inverse Distance Weighting (IDW) ,TIN 法常被使用于高程资料上,而 IDW 法则在内插其他种类的资料时较为常见,例如矿物富集度、人口等等。更多资讯请参考 QGIS 官方文档中的 Spatial Analysis 模组。

../_images/912.png
  1. 看到 elevation_tin 图层载入到 QGIS 后,以右键点选,选择:guilabel:Zoom to layer
../_images/1012.png
  1. 如此一来就可以看到刚刚产生的湖泊底面全貌。内插法对于资料收集区以外的地方并不准确,所以接下来我们要依照湖泊的边缘才接我们的湖泊底面。选择:menuselection:Raster –> Extraction –> Clipper
../_images/1116.png
  1. Output file 命名为``elevation_tin_clipped.tif``。Cliiped mode 选择:guilabel:Mask layer. 然后选择``Boundary2004_550_stpl83``作为我们的:guilabel:Mask layer`,最后按 OK
../_images/1214.png
  1. 新的影像 elevation_tin_clipped 完成后会被载入 QGIS 中。接着我们来调整一下图层的样式,显示各处海拔的不同,注意在 elevation_tin 的最大与最小高度值。以右键点选``elevation_tin_clipped`` 图层,进入:guilabel:Properties
../_images/1313.png
  1. 前往:guilabel:Style 分页,绘:guilabel:Render type 选择``Singleband pseudocolor``. 在 Generate new color map`面板中, 选择 ``Spectral` 色阶,由于我们想看到的是湖泊深度图而不是单纯的高度图,因此请把 Invert`框勾选起来。如此一来,蓝色会被指派到较深的位置,而水浅的地方会以红色表达。按下:guilabel:`Classify
../_images/1411.png
  1. 切换至:guilabel:Tranparency 分页,我们要移除掉所有在外框区域、全黑色的像素,所以在 Additional no data value`一栏输入 ``0` 然后按下 OK
../_images/1511.png
  1. 现在我们已经从湖泊的水深数据点,内插出了湖泊的高程(深度)地图,再让我们试试看产生等深线吧。选择:menuselection:Raster –> Extraction –> Contours
../_images/1610.png

17. 在:guilabel:Contour 视窗中的输出:guilabel:Output file for contour lines, 输入 contours``我们要产生 5 呎间隔的等高线, 因此在 :guilabel:`Interval between contour lines`栏位中输入  ``5.00。勾选 Attribute name 方框,然后按下:guilabel:OK

../_images/179.png
  1. 处理完成后,等高线会被载入为``contours``图层。在图层上按右键选择:guilabel:Properties
../_images/189.png

19.前往到:guilabel:Labels 分页,勾选 Label this layer with 的方框(译按:或是在下拉式选单中选择 Show labels for this layer), 旁边栏位选择``ELEV`` ,在底下的位置 Placement 中,选择 Curved 最后按下 OK

../_images/197.png
  1. 最后,你就会看到标签数值已沿着各等高线标记上去了。
../_images/204.png