17.15. 裁剪和合并栅格图层

备注

在本课中,我们将看到空间数据准备的另一个示例,以继续在真实世界的场景中使用地理算法。

在本课程中,我们将计算城市周围区域的坡度层,该坡度层在具有单个多边形的矢量层中给出。基本DEM分为两个栅格层,这两个层一起覆盖的区域比我们要处理的城市周围的区域要大得多。如果打开与本课对应的项目,您将看到如下所示。

../../../_images/medfordarea.png

这些层有两个问题:

  • 它们覆盖的面积太大,我们不想要(我们对市中心周围的较小区域感兴趣)

  • 它们在两个不同的文件中(城市边界只属于一个栅格图层,但正如所说的,我们希望在它周围有一些额外的区域)。

这两个问题都可以很容易地用适当的地理算法求解。

首先,我们创建一个矩形来定义我们想要的区域。为此,我们创建一个包含具有城市区域限制的层的边界框的层,然后对其进行缓冲,以使栅格层覆盖的范围比严格需要的多一点。

要计算边界框,我们可以使用 Polygon from layer extent 演算法

../../../_images/bbox.png

为了缓冲它,我们使用 Fixed distance buffer 算法,具有以下参数值。

../../../_images/buffer_dialog.png

警告

语法在最近的版本中发生了更改;将距离和弧折点都设置为.25

下面是使用上面显示的参数获得的结果边界框

../../../_images/buffer.png

它是一个圆框,但我们可以很容易地获得等效方角框,方法是运行 Polygon from layer extent 上面有算法。我们可以先缓冲城市范围,然后再计算范围矩形,这样就省去了一步。

../../../_images/buffer_squared.png

您将注意到,栅格具有与矢量不同的投影。因此,在进行进一步操作之前,我们应该使用 Warp (reproject) 工具。

../../../_images/warp1.png

备注

最近的版本有一个更复杂的界面。确保至少选择了一种压缩方法。

对于包含我们要获取的栅格层的边界框的该层,我们可以使用 Clip raster with polygon 算法。

../../../_images/clip.png

一旦层被裁剪,它们就可以使用传奇进行合并 Mosaic raster layers 算法。

../../../_images/merge1.png

备注

您可以节省先合并后裁剪的时间,并且可以避免两次调用裁剪算法。然而,如果有几个层要合并,并且它们的大小相当大,那么最终得到的层将比以后难以处理的层大。在这种情况下,您可能需要多次调用裁剪算法,这可能很耗时,但不要担心,我们很快就会看到有一些额外的工具可以自动执行该操作。在本例中,我们只有两个层,因此您现在不必担心这一点。

有了这些,我们就得到了我们想要的最终DEM。

../../../_images/finaldem.png

现在是计算坡度层的时候了。

坡度层可使用 Slope, Aspect, Curvature 但是,最后一步得到的DEM不适合作为输入,因为高程值是以米为单位的,但单元大小不是以米为单位表示的(该层使用带有地理坐标的CRS)。需要进行一次重新预测。要重新投影栅格层,请使用 Warp (reproject) 算法可以再次使用。我们重新投影到以米为单位的CRS中(例如3857),这样我们就可以正确地计算坡度,使用SAGA或GDAL。

使用新的DEM,现在可以计算坡度。

../../../_images/slope1.png

这是生成的坡度层。

../../../_images/slopereproj.png

所产生的斜率 Slope, Aspect, Curvature 算法可以用度或弧度来表示;度是更实用、更常见的单位。如果以弧度为单位进行计算, Metric conversions 算法将帮助我们进行转换(但如果您不知道该算法的存在,您可以使用我们已经使用过的栅格计算器)。

../../../_images/metricconversions.png

将转换后的坡度层重新投影回 Reproject raster layer ,我们得到了我们想要的最后一层。

警告

TODO:添加图像

重新投影过程可能会导致最终层包含我们在第一步中计算的边界框之外的数据。这可以通过再次裁剪它来解决,就像我们获得基本DEM所做的那样。