3.6. 演练:使用QGIS和GDAL处理栅格数据

现在您已经看到了QGIS和OGR在处理矢量数据时的作用,您将获得一些处理栅格数据的经验。在这个练习中,我们将从费城的30米分辨率数字高程模型(DEM)开始。我从USGS National Map Viewer 。我们将使用GDAL工具的组合(其中一些工具包装在一个漂亮的QGIS GUI中)为基础地图创建一个好看的地形背景。这将通过添加DEM、山体阴影和着色坡度层来完成。我根据这些指示this tutorial by Mapbox 如果你想了解更多细节,我建议你以后再阅读。

Download the Lesson 3 raster data

将数据提取到一个名为PhiladelphiaElevation的文件夹中,例如c:dataPhiladelphiaElevation。这将包含一个称为dem的数据集。为了节省时间和最小化下载大小,我已经将这个数据集裁剪到费城市边界,并为您将其投影到EPSG:3857。如果将来需要这样做,可以在QGIS中使用Raster>Projections>Warp命令,该命令调用gdalwarp命令。

  1. 启动QGIS并使用“添加栅格图层”

../../_images/add_raster_layer.png

按钮将dem添加到地图。

现在不要添加任何矢量层。如果您最终对使用地形覆盖形状文件感兴趣,请参见本演练末尾的注释。

  1. 通过在目录中选择dem并单击“栅格>分析>山体阴影”,创建山体阴影。将hillshade保存为名为hillshade的TIF文件,并设置参数,如下图所示。然后按Run执行命令。

../../_images/qgis34_695_1.png

图3.12山体阴影工具图形用户界面

请注意,如果您喜欢命令行环境,则可以使用gdaldem hillshade命令创建未来的山体。

  1. 通过在目录中亮显dem图层并单击“栅格>分析>坡度”来创建坡度曲面。将其保存为名为slope的TIF并保留其余默认值。此曲面中的每个像素都有一个介于0和90之间的值,该值指示特定单元格中的坡度。

现在,让我们对坡度进行着色,以便在将这两个层合并为部分透明层时为山体阴影提供额外的浮雕。

  1. 创建只包含以下行的新文本文件,然后将其另存为sloperamp.txt。

0 255 255 255
90 0 0 0

这将创建一个非常简单的颜色渐变,该渐变将以灰度形式对渐变层进行着色,其中0方向的值将变亮,90方向的值将变暗。当与山棚相结合时,此层将导致在地图中弹出书架和悬崖。

5个。打开OSGeo4W命令行窗口,使用cd命令将工作目录更改为费城相关文件夹。6.运行以下命令将颜色渐变应用于坡度:

gdaldem color-relief slope.tif sloperamp.txt slopeshade.tif

您刚刚运行了gdaldem实用程序,它使用提升栅格执行各种操作。特别是,color relief命令使用以下三个参数(按顺序)对栅格进行着色:输入栅格名称、定义颜色渐变的文本文件和输出文件名称。

如果将生成的slopeshade.tif图层添加到QGIS中,应看到以下内容:

../../_images/slopeshade.png

图3.13山体阴影结果

现在,让我们切换回原始的DEM,并使用相同的命令在其中添加一些颜色。就像在上一步中一样,您将使用文本文件定义一个简单的色带,并使用gdal-dem colorrelief命令将其应用于DEM。

  1. 创建一个新的文本文件并添加以下行(确保您的软件不会将其复制为大行;在此处看到它们的位置应该有换行符)。然后将其另存为您的PhiladelphiaElevation文件夹中的demramp.txt。

1 46 154 88
100 251 255 128
1000 224 108 31
2000 200 55 55
3000 215 244 244

请注意,行中的第一个值是栅格的高程值,接下来的三个值构成该高程单元的RGB颜色定义。这个特殊的坡道包含的海拔高度远远超过费城,这样你就可以了解这些坡道是如何创建的。我已经调整了坡道,使低地变绿,费城最丘陵的地区变黄。如果DEM中有高山,棕色和其他颜色就会开始出现。

  1. 运行以下命令:

gdaldem color-relief dem.tif demramp.txt demcolor.tif

将demcolor.tif添加到QGIS时,应该会看到如下内容:

../../_images/color_dem_unclipped.png

图3.14 DEM样本

这看起来不错,但是No Data值被归为绿色。我们需要再剪辑一次。这是一个很好的机会,你可以在QGIS中练习一些栅格剪裁。

  1. 在QGIS中,单击“栅格>提取>按遮罩层剪裁栅格”,然后按如下所示设置参数。请确保将demcolor剪辑到上一个演练中的city_limits.shp polygon(它应该位于PhiladelphiaBaseLayersclipFeature中)。请注意,在该对话框的底部,将显示完整的gdalwarp语法(用于剪切),以防您希望从命令行运行此操作。这是一个有用的学习工具!确保输出文件名以“.tif”结尾,以便将-of GTiff选项添加到gdalwarp命令中。

../../_images/qgis34_695_2.PNG

图3.15 Clipper图形用户界面

现在,让我们把这些加起来。

  1. 在QGIS中创建新地图,并添加剪裁的彩色DEM。然后添加不透明度为40%的山体阴影。然后添加40%不透明的斜线。你应该得到如下信息:

../../_images/qgis_695_3mod.png

图3.16 QGIS中的样本地图输出

现在,根据你的喜好玩一下透明胶片。甚至可以重新运行着色命令以应用不同的渐变。

这种类型的地形层,当被其他向量层覆盖时,可以作为web地图中合适的基础地图层。在以后的课程中,您将学习如何创建此类层的瓦片,以将其引入到web地图中。

请注意,对于较旧版本的QGIS:如果您现在尝试将任何矢量形状文件添加到此地图,它们可能会关闭约20公里,除非-如前一演练中所述-为每个形状文件提供一个QPJ文件,其中包含有关您正在使用的EPSG:3857投影的详细信息。此文件始终包含相同的内容,但它必须与shapefile具有相同的根名称,并且必须与shapefile放在同一目录中。下面是一个atms shapefile的示例atms.qpj 您可以复制并重命名任何要添加到地图中的矢量形状文件。

3.6.1. 保存数据以备将来使用

就像在上一个演练中一样,您将把最终数据集复制到主费城数据文件夹中以备将来使用。

使用Windows资源管理器或等效程序将hillshade.tif、slopeshade.tif和demcolorclipped.tif复制到您在上一演练中创建的费城文件夹(例如c:\ data\ Philadelphia)中。