17.23. 更多内插

备注

本章展示了使用插补算法的另一个实际案例。

内插是一种常见的技术,它可以用来演示可以通过QGIS处理框架应用的几种技术。本课使用了一些已经介绍过的插补算法,但采用了不同的方法。

本课程的数据还包含点图层,在本例中包含高程数据。我们将使用与上一课相同的方式对其进行插补,但这一次我们将保存部分原始数据,以用于评估插补过程的质量。

首先,我们必须栅格化Points层并填充生成的无数据单元格,但只使用层中的一小部分点。我们将保存10%的点用于以后的检查,因此我们需要准备好90%的点用于插补。为此,我们可以使用 Split shapes layer randomly 算法,我们已经在上一课中使用了该算法,但有一种更好的方法来实现这一点,而不必创建任何新的中间层。取而代之的是,我们可以只选择要用于插补的点(90%分数),然后运行算法。正如我们已经看到的,栅格化算法将只使用那些选定的点,而忽略其余的点。选择可以使用 Random selection 算法。使用以下参数运行它。

../../../_images/select.png

这将选择要栅格化的图层中90%的点

../../../_images/selected.png

该选择是随机的,因此您的选择可能与上图中显示的选择不同。

现在运行 Rasterize 算法以获取第一个栅格图层,然后运行 Close gaps 填充无数据单元格的算法 [Cell resolution: 100 m] 。

../../../_images/filled1.png

为了检查内插的质量,我们现在可以使用未选中的点。此时,我们知道实际高程(Points图层中的值)和内插高程(内插栅格图层中的值)。我们可以通过计算这些值之间的差异来比较这两个值。

因为我们要使用未被选中的点,所以首先,让我们反转选择。

../../../_images/inverted.png

这些点包含原始值,但不包含插值值。要将它们添加到新字段中,我们可以使用 Add raster values to points 演算法

../../../_images/addgridvalues.png

要选择的栅格层(算法支持多个栅格,但我们只需要一个)是通过内插得到的栅格层。我们已将其重命名为 interpolate 该层名称将用作要添加的字段的名称。

现在,我们有了一个包含这两个值的矢量层,其中的点没有用于插补。

../../../_images/extended_layer.png

现在,我们将使用字段计算器来完成此任务。打开 Field calculator 算法,并使用以下参数运行它。

../../../_images/fields_calculator.png

如果包含来自栅格图层的值的字段具有不同的名称,则应相应地修改上述公式。运行这个算法,您将得到一个新的层,其中只包含我们没有用于插补的点,每个点都包含两个高程值之间的差值。

根据该值表示该层将让我们初步了解哪里发现了最大的差异。

../../../_images/diffs.png

对该层进行内插将得到一个在内插区域的所有点具有估计误差的栅格层。

../../../_images/raster_diffs.png

您也可以使用直接获取相同的信息(原始点值和插值值之间的差异 GRASS ► v.sample

您的结果可能与这些结果不同,因为在本课开始时运行随机选择时引入了随机组件。