43_创建彩色流域地图 QGIS3
原文链接: https://www.qgistutorials.com/en/docs/3/colorized_river_basin_map.html
创建彩色流域地图 (QGIS3)¶
在本教程中,我们将学习使用公开可用的水文数据,为您的国家或地区创建艺术性河流地图的 QGIS 工作流程。
注意
本教程的灵感来源于 Grasshopper Geography 制作的精美地图。我拥有他们的一幅印刷品,您也可以通过从他们的在线商店购买地图来支持他们的工作。
任务概述¶
在本教程中,我们将使用来自 HydroSHEDS 的流域和河流数据图层,为印度河流创建流域地图。
您将学到的其他技能¶
- 如何为投影不正确或缺失的矢量图层分配投影。
- 如何在单个 GeoPackage 中添加多个图层。
- 如何在您的地图中添加‘由 QGIS 制作’徽章。
获取数据¶
HydroSHEDS 提供了适用于区域和全球应用的全球水文数据集。这些数据图层源自 SRTM 经过水文条件校正的 DEM。
流域边界¶
HydroBasins 提供了各大洲不同级别的流域多边形边界。这些边界是分级的——第 N 级的每个流域会进一步细分为第 N+1 级的更小子流域。在本教程中,我们将使用第 6 级流域边界。您可以根据您所在的区域和想要创建的地图类型使用不同级别。访问 HydroBASINS 页面并为您所在的区域下载 zip 文件。
注意
HydroSHEDS 流域边界源自已有 20 多年历史的 SRTM 数据。这些流域边界可能与您所在地区的官方流域边界不符。在官方数据可用时,您可以用官方来源的多边形替换 HydroBasins 数据。
河流网络¶
HydroRIVERS 提供了一个表示河流网络的线状 shapefile。访问 HydroRIVERS 页面并为您感兴趣的区域下载 zip 文件。
行政区划边界¶
我们将把 HydroSHEDS 数据裁剪到您所选区域的边界。在本教程中,我们要创建印度的河流流域地图,因此将从印度测绘局获取边界 shapefile。访问 印度轮廓图 页面并下载印度国际边界矢量格式文件。如果您需要其他国家或州的行政边界,可以从 GADM 或 geoBoundaries 获取。
所有文件下载完成后,解压缩它们并将其复制到一个文件夹中。您现在应该拥有 3 个 shapefile 文件:hybas_as_lev06_v1c.shp、HydroRIVERS_v10_as.shp 和行政区划边界文件 `polymap15m_area.shp`。
数据来源:[HYDROSHEDS], [SOI]
操作步骤¶
- 打开 QGIS,在 QGIS 浏览器中找到已下载的文件。将
hybas_as_lev06_v1c.shp和HydroRIVERS_v10_as.shp拖放到画布上。
- 找到行政区划边界 shapefile 文件
polymap15m_area.shp并将其拖放到画布上。
- HydroSHEDS 数据图层包含一些无效几何的要素。在进行下一步之前,让我们先修复它们。从 处理 ‣ 工具箱 打开处理工具箱。搜索并找到 矢量几何 ‣ 修复几何 工具。双击以启动它。
注意
您可以查看教程 处理无效几何 (QGIS3) 以了解更多关于无效几何的原因及修复方法。
- 选择
hybas_as_lev06_v1c作为 输入图层。点击 已修复几何 旁边的 … 按钮并选择 保存至 GeoPackage…。
- 浏览到您想要保存输出数据的位置并输入名称
data.gpkg。点击 保存。系统将提示您输入图层名称。输入basins_fixed。点击 确定。接下来点击 运行 以运行算法并生成输出图层。
- 为
HydroRIVERS_v10_as图层重复此步骤。选择与上一步中创建的相同的 GeoPackage 文件data.gpkg。如果收到指示文件将被覆盖的消息,不必担心。QGIS 不会覆盖文件,而是将新图层附加到同一个 GeoPackage 中。这次使用rivers_fixed作为 图层名称。
polymap15m_area图层附带的投影未被 QGIS 识别。我们将为此图层分配一个已知的投影。搜索并找到 矢量通用 ‣ 指定投影 工具,双击打开。
注意
请记住,指定投影 工具不会重新投影图层,而只是为具有缺失或不正确投影的现有地理参考图层添加正确的投影信息。如果要更改图层的 CRS,请使用 重投影图层 工具。
- 选择
polymap15m_area作为 输入图层。点击 选择 CRS 按钮并搜索EPSG:7755 - WGS 84 / India NSF LCC投影并选择它。点击 已指定 CRS 旁边的 … 按钮并选择 保存至 GeoPackage…。
- 选择相同的 GeoPackage 文件
data.gpkg并输入图层名称admin_boundary_fixed。点击 运行。
- 您现在将在 QGIS 的 图层 面板中看到加载了 3 个新图层:
basins_fixed、rivers_fixed和admin_boundary_fixed。按住Shift键并选择所有剩余的图层。右键单击并选择 移除图层…。
- 现在,我们将把流域和河流图层裁剪到行政区划边界。从处理工具箱中搜索并找到 矢量叠加 ‣ 裁剪 工具。双击打开。
- 选择
basins_fixed作为 输入图层,选择admin_boundary_fixed作为 叠加图层。将输出保存到同一个 GeoPackage 文件data.gpkg中,图层名为basins_clipped。点击 运行。
- 处理完成后,对
rivers_fixed图层重复此过程,将其作为 输入图层。将输出保存到同一个 GeoPackage 文件data.gpkg中,图层名为rivers_clipped。点击 运行。
- 您现在将在 QGIS 的 图层 面板中看到加载了 2 个新图层
basins_clipped和rivers_clipped,以及admin_boundary_fixed图层。按住Shift键并选择所有剩余的图层。右键单击并选择 移除图层…。
- 在进行下一步之前,让我们先保存项目。QGIS 允许您将项目保存在 GeoPackage 内部,这样可以非常方便地避免管理额外的文件。转到 项目 ‣ 保存到 ‣ GeoPackage…。
- 在 将项目保存至 GeoPackage 对话框中,点击 连接 旁边的 … 按钮,浏览到现有的
data.gpkg文件。输入rivers_basin_map作为 项目名称。点击 确定。
- 保存后,您可以在浏览器面板中展开
data.gpkg,看到 QGIS 项目现在已保存在 GeoPackage 内部。此 GeoPackage 的用户现在可以直接从 GeoPackage 中打开项目。
- 要创建我们的彩色地图,我们需要为所有流域着色,使得相邻的流域不具有相同的颜色。QGIS 有一个工具可以做到这一点。从处理工具箱中打开 制图 ‣ 拓扑着色 工具。
- 选择
basins_clipped作为 输入图层。其他选项保留默认值。将输出保存到同一个 GeoPackage 文件data.gpkg中,图层名为basins_with_color。点击 运行。
- 处理完成后,一个新图层
basins_with_color将被加载到 图层 面板中。右键单击该图层并选择 打开属性表。您会注意到该图层有一个名为color_id的新属性,其值为整数。为每个整数值分配一种唯一的颜色,将实现图层的拓扑着色。
- 我们想把流域的颜色 ID 传递给其中包含的所有河流。从处理工具箱中打开 矢量通用 ‣ 通过位置连接属性 工具。
- 在这里,我们需要选择
rivers_clipped作为 连接到特征 的图层,选择basins_with_color作为 通过比较到 的图层。在 要添加的字段 部分,点击 … 按钮并选择color_id字段。将输出保存到data.gpkgGeoPackage 文件中,图层名为rivers_with_color。点击 运行。
- 处理完成后,一个新图层
rivers_with_color将被加载到 图层 面板中。现在该应用符号系统了。选择admin_boundary_fixed图层,点击 图层 面板中的 打开图层样式面板 按钮。将颜色更改为黑色。
- 接下来,选择
rivers_with_color图层并选择分类的渲染器。
- 选择
color_id作为 值 并点击 分类。您将看到不同流域的河流将被分配不同的颜色。
注意
如果您对随机选择的颜色不满意,可以点击下方列表中各个值的 符号 并选择您自己的颜色。
- 默认线条对于我们的地图来说太粗了。让我们修改它。按住
Shift键并选择列表中的所有符号。点击 符号 以打开 符号设置。
- 点击 简单线 并将描边宽度更改为
0.1。现在地图看起来好多了。
- 我们可以根据河流的大小为其分配不同的宽度来改进地图。
rivers_with_color图层有一个字段ORD_STRA,包含河流的 Strahler 级数 值。数值越大,河流越大。我们将使用 助手 来帮助我们将 Strahler 级数值映射到合适的描边宽度。点击 描边宽度 旁边的 数据定义覆盖 按钮并选择 助手…。
- 在 输入 部分,选择
ORD_STRA字段作为 源,值范围从1到6。在 输出 部分,选择 尺寸 从0.05到0.2。当您输入值时,地图将动态更新。您可能需要根据您所在的区域调整这些值。对地图满意后,点击 返回 按钮。
- 您会注意到 描边宽度 的 数据定义覆盖 按钮现在变成了黄色,表示此设置已应用了有效覆盖。
- 我们的彩色河流流域地图现已准备就绪。让我们将此地图放入布局中,以便我们可以导出带有其他地图元素的高分辨率版本。转到 项目 ‣ 新建打印布局…。当提示输入名称时,留空并点击 确定。
- 在 布局1 窗口中,右键单击空白画布并选择 页面属性…。
- 选择
A4作为 尺寸。将 背景颜色 更改为黑色。
- 转到 添加项目 ‣ 添加地图。
- 按住鼠标左键并在画布上选择您要放置地图的区域。
- 地图出现后,在 项目属性 选项卡中向下滚动并关闭 背景。
注意
如果您没有看到 项目属性 选项卡或不小心将其关闭,可以通过布局菜单中的 视图 ‣ 面板 ‣ 项目属性 将其找回。
- 让我们调整地图范围。点击 交互式编辑地图范围 按钮,然后使用鼠标平移地图。您也可以使用鼠标滚轮调整缩放。如果您想更精细地控制缩放,请手动调整 比例 值。重复此操作,直到您对地图放置位置感到满意。
- 接下来,我们将向地图添加一个 QGIS 徽标。转到 添加项目 ‣ 添加图片。
- 在您想放置徽标的位置绘制一个矩形。在 项目属性 对话框中,找到徽标图标组。选择
由 QGIS 制作徽标。
- 接下来,我们将添加一个包含数据来源信息的标签。转到 添加项目 ‣ 添加标签。输入数据来源的文本,并调整字体和标签对齐方式。
- 准备好导出结果时,转到 布局 ‣ 导出为图像…。浏览到您计算机上要保存 PNG 图像的文件夹,并输入名称
river_basins.png。
- 选择
300 dpi作为 导出分辨率 并点击 保存。
- 导出完成后,您将在所选位置获得最终的地图图像。
- 这是我们使用 QGIS 和开放数据集创建的最终 PNG 图像。
如果您想提供反馈或分享您学习本教程的体验,请在下方留言。(需要 GitHub 账户)
















































