跳转至

43_创建彩色流域地图 QGIS3

原文链接: https://www.qgistutorials.com/en/docs/3/colorized_river_basin_map.html

创建彩色流域地图 (QGIS3)

在本教程中,我们将学习使用公开可用的水文数据,为您的国家或地区创建艺术性河流地图的 QGIS 工作流程。

注意

本教程的灵感来源于 Grasshopper Geography 制作的精美地图。我拥有他们的一幅印刷品,您也可以通过从他们的在线商店购买地图来支持他们的工作。

任务概述

在本教程中,我们将使用来自 HydroSHEDS 的流域和河流数据图层,为印度河流创建流域地图。

../../_images/rivers_of_india.png

您将学到的其他技能

  • 如何为投影不正确或缺失的矢量图层分配投影。
  • 如何在单个 GeoPackage 中添加多个图层。
  • 如何在您的地图中添加‘由 QGIS 制作’徽章。

获取数据

HydroSHEDS 提供了适用于区域和全球应用的全球水文数据集。这些数据图层源自 SRTM 经过水文条件校正的 DEM。

流域边界

HydroBasins 提供了各大洲不同级别的流域多边形边界。这些边界是分级的——第 N 级的每个流域会进一步细分为第 N+1 级的更小子流域。在本教程中,我们将使用第 6 级流域边界。您可以根据您所在的区域和想要创建的地图类型使用不同级别。访问 HydroBASINS 页面并为您所在的区域下载 zip 文件。

../../_images/download1.png

注意

HydroSHEDS 流域边界源自已有 20 多年历史的 SRTM 数据。这些流域边界可能与您所在地区的官方流域边界不符。在官方数据可用时,您可以用官方来源的多边形替换 HydroBasins 数据。

河流网络

HydroRIVERS 提供了一个表示河流网络的线状 shapefile。访问 HydroRIVERS 页面并为您感兴趣的区域下载 zip 文件。

../../_images/download2.png

行政区划边界

我们将把 HydroSHEDS 数据裁剪到您所选区域的边界。在本教程中,我们要创建印度的河流流域地图,因此将从印度测绘局获取边界 shapefile。访问 印度轮廓图 页面并下载印度国际边界矢量格式文件。如果您需要其他国家或州的行政边界,可以从 GADMgeoBoundaries 获取。

../../_images/download3.png

所有文件下载完成后,解压缩它们并将其复制到一个文件夹中。您现在应该拥有 3 个 shapefile 文件:hybas_as_lev06_v1c.shpHydroRIVERS_v10_as.shp 和行政区划边界文件 `polymap15m_area.shp`

../../_images/download4.png

数据来源:[HYDROSHEDS], [SOI]

操作步骤

  1. 打开 QGIS,在 QGIS 浏览器中找到已下载的文件。将 hybas_as_lev06_v1c.shpHydroRIVERS_v10_as.shp 拖放到画布上。

../../_images/150.png

  1. 找到行政区划边界 shapefile 文件 polymap15m_area.shp 并将其拖放到画布上。

../../_images/229.png

  1. HydroSHEDS 数据图层包含一些无效几何的要素。在进行下一步之前,让我们先修复它们。从 处理 ‣ 工具箱 打开处理工具箱。搜索并找到 矢量几何 ‣ 修复几何 工具。双击以启动它。

../../_images/320.png

注意

您可以查看教程 处理无效几何 (QGIS3) 以了解更多关于无效几何的原因及修复方法。

  1. 选择 hybas_as_lev06_v1c 作为 输入图层。点击 已修复几何 旁边的 … 按钮并选择 保存至 GeoPackage…。

../../_images/49.png

  1. 浏览到您想要保存输出数据的位置并输入名称 data.gpkg。点击 保存。系统将提示您输入图层名称。输入 basins_fixed。点击 确定。接下来点击 运行 以运行算法并生成输出图层。

../../_images/59.png

  1. HydroRIVERS_v10_as 图层重复此步骤。选择与上一步中创建的相同的 GeoPackage 文件 data.gpkg。如果收到指示文件将被覆盖的消息,不必担心。QGIS 不会覆盖文件,而是将新图层附加到同一个 GeoPackage 中。这次使用 rivers_fixed 作为 图层名称。

../../_images/69.png

  1. polymap15m_area 图层附带的投影未被 QGIS 识别。我们将为此图层分配一个已知的投影。搜索并找到 矢量通用 ‣ 指定投影 工具,双击打开。

../../_images/79.png

注意

请记住,指定投影 工具不会重新投影图层,而只是为具有缺失或不正确投影的现有地理参考图层添加正确的投影信息。如果要更改图层的 CRS,请使用 重投影图层 工具。

  1. 选择 polymap15m_area 作为 输入图层。点击 选择 CRS 按钮并搜索 EPSG:7755 - WGS 84 / India NSF LCC 投影并选择它。点击 已指定 CRS 旁边的 … 按钮并选择 保存至 GeoPackage…。

../../_images/89.png

  1. 选择相同的 GeoPackage 文件 data.gpkg 并输入图层名称 admin_boundary_fixed。点击 运行。

../../_images/99.png

  1. 您现在将在 QGIS 的 图层 面板中看到加载了 3 个新图层:basins_fixedrivers_fixedadmin_boundary_fixed。按住 Shift 键并选择所有剩余的图层。右键单击并选择 移除图层…。

../../_images/1013.png

  1. 现在,我们将把流域和河流图层裁剪到行政区划边界。从处理工具箱中搜索并找到 矢量叠加 ‣ 裁剪 工具。双击打开。

../../_images/1116.png

  1. 选择 basins_fixed 作为 输入图层,选择 admin_boundary_fixed 作为 叠加图层。将输出保存到同一个 GeoPackage 文件 data.gpkg 中,图层名为 basins_clipped。点击 运行。

../../_images/1214.png

  1. 处理完成后,对 rivers_fixed 图层重复此过程,将其作为 输入图层。将输出保存到同一个 GeoPackage 文件 data.gpkg 中,图层名为 rivers_clipped。点击 运行。

../../_images/1312.png

  1. 您现在将在 QGIS 的 图层 面板中看到加载了 2 个新图层 basins_clippedrivers_clipped,以及 admin_boundary_fixed 图层。按住 Shift 键并选择所有剩余的图层。右键单击并选择 移除图层…。

../../_images/1411.png

  1. 在进行下一步之前,让我们先保存项目。QGIS 允许您将项目保存在 GeoPackage 内部,这样可以非常方便地避免管理额外的文件。转到 项目 ‣ 保存到 ‣ GeoPackage…。

../../_images/1511.png

  1. 在 将项目保存至 GeoPackage 对话框中,点击 连接 旁边的 … 按钮,浏览到现有的 data.gpkg 文件。输入 rivers_basin_map 作为 项目名称。点击 确定。

../../_images/1610.png

  1. 保存后,您可以在浏览器面板中展开 data.gpkg,看到 QGIS 项目现在已保存在 GeoPackage 内部。此 GeoPackage 的用户现在可以直接从 GeoPackage 中打开项目。

../../_images/1711.png

  1. 要创建我们的彩色地图,我们需要为所有流域着色,使得相邻的流域不具有相同的颜色。QGIS 有一个工具可以做到这一点。从处理工具箱中打开 制图 ‣ 拓扑着色 工具。

../../_images/189.png

  1. 选择 basins_clipped 作为 输入图层。其他选项保留默认值。将输出保存到同一个 GeoPackage 文件 data.gpkg 中,图层名为 basins_with_color。点击 运行。

../../_images/198.png

  1. 处理完成后,一个新图层 basins_with_color 将被加载到 图层 面板中。右键单击该图层并选择 打开属性表。您会注意到该图层有一个名为 color_id 的新属性,其值为整数。为每个整数值分配一种唯一的颜色,将实现图层的拓扑着色。

../../_images/208.png

  1. 我们想把流域的颜色 ID 传递给其中包含的所有河流。从处理工具箱中打开 矢量通用 ‣ 通过位置连接属性 工具。

../../_images/2113.png

  1. 在这里,我们需要选择 rivers_clipped 作为 连接到特征 的图层,选择 basins_with_color 作为 通过比较到 的图层。在 要添加的字段 部分,点击 … 按钮并选择 color_id 字段。将输出保存到 data.gpkg GeoPackage 文件中,图层名为 rivers_with_color。点击 运行。

../../_images/2210.png

  1. 处理完成后,一个新图层 rivers_with_color 将被加载到 图层 面板中。现在该应用符号系统了。选择 admin_boundary_fixed 图层,点击 图层 面板中的 打开图层样式面板 按钮。将颜色更改为黑色。

../../_images/237.png

  1. 接下来,选择 rivers_with_color 图层并选择 分类的 渲染器。

../../_images/248.png

  1. 选择 color_id 作为 值 并点击 分类。您将看到不同流域的河流将被分配不同的颜色。

../../_images/258.png

注意

如果您对随机选择的颜色不满意,可以点击下方列表中各个值的 符号 并选择您自己的颜色。

  1. 默认线条对于我们的地图来说太粗了。让我们修改它。按住 Shift 键并选择列表中的所有符号。点击 符号 以打开 符号设置。

../../_images/267.png

  1. 点击 简单线 并将描边宽度更改为 0.1。现在地图看起来好多了。

../../_images/278.png

  1. 我们可以根据河流的大小为其分配不同的宽度来改进地图。rivers_with_color 图层有一个字段 ORD_STRA,包含河流的 Strahler 级数 值。数值越大,河流越大。我们将使用 助手 来帮助我们将 Strahler 级数值映射到合适的描边宽度。点击 描边宽度 旁边的 数据定义覆盖 按钮并选择 助手…。

../../_images/288.png

  1. 在 输入 部分,选择 ORD_STRA 字段作为 源,值范围从 16。在 输出 部分,选择 尺寸 从 0.050.2。当您输入值时,地图将动态更新。您可能需要根据您所在的区域调整这些值。对地图满意后,点击 返回 按钮。

../../_images/297.png

  1. 您会注意到 描边宽度 的 数据定义覆盖 按钮现在变成了黄色,表示此设置已应用了有效覆盖。

../../_images/306.png

  1. 我们的彩色河流流域地图现已准备就绪。让我们将此地图放入布局中,以便我们可以导出带有其他地图元素的高分辨率版本。转到 项目 ‣ 新建打印布局…。当提示输入名称时,留空并点击 确定。

../../_images/3110.png

  1. 在 布局1 窗口中,右键单击空白画布并选择 页面属性…。

../../_images/324.png

  1. 选择 A4 作为 尺寸。将 背景颜色 更改为黑色。

../../_images/332.png

  1. 转到 添加项目 ‣ 添加地图。

../../_images/342.png

  1. 按住鼠标左键并在画布上选择您要放置地图的区域。

../../_images/352.png

  1. 地图出现后,在 项目属性 选项卡中向下滚动并关闭 背景。

../../_images/361.png

注意

如果您没有看到 项目属性 选项卡或不小心将其关闭,可以通过布局菜单中的 视图 ‣ 面板 ‣ 项目属性 将其找回。

  1. 让我们调整地图范围。点击 交互式编辑地图范围 按钮,然后使用鼠标平移地图。您也可以使用鼠标滚轮调整缩放。如果您想更精细地控制缩放,请手动调整 比例 值。重复此操作,直到您对地图放置位置感到满意。

../../_images/371.png

  1. 接下来,我们将向地图添加一个 QGIS 徽标。转到 添加项目 ‣ 添加图片。

../../_images/381.png

  1. 在您想放置徽标的位置绘制一个矩形。在 项目属性 对话框中,找到徽标图标组。选择 由 QGIS 制作 徽标。

../../_images/391.png

  1. 接下来,我们将添加一个包含数据来源信息的标签。转到 添加项目 ‣ 添加标签。输入数据来源的文本,并调整字体和标签对齐方式。

../../_images/40.png

  1. 准备好导出结果时,转到 布局 ‣ 导出为图像…。浏览到您计算机上要保存 PNG 图像的文件夹,并输入名称 river_basins.png

../../_images/411.png

  1. 选择 300 dpi 作为 导出分辨率 并点击 保存。

../../_images/421.png

  1. 导出完成后,您将在所选位置获得最终的地图图像。

../../_images/431.png

  1. 这是我们使用 QGIS 和开放数据集创建的最终 PNG 图像。

../../_images/441.png


如果您想提供反馈或分享您学习本教程的体验,请在下方留言。(需要 GitHub 账户)