用 QGIS 在地圖上繪製河流

最近在做一个需要标注河流的地图,使用了 World Wildlife Fund (WWF) 提供的 HydroRIVERS 数据集。他们的数据包含全球河流,并附带了重要的水文属性,如流量和河级。1

这份笔记记录了在 QGIS 中使用这份数据时遇到的主要问题及解决方案。包括:

  1. 如何使用 HydroRIVERS 数据 在 QGIS 中显示亚洲的河流网络。
  2. 想要地图上只显示主要河流,要怎幺做?
  3. 想在特定河流上标注名称,如“熊野川”,要怎幺做?
  4. 想在地图上删去某条河流要怎幺做?

QGIS 软件窗口。以浅蓝色线条描绘了河流,并在河流上标注了“熊野川”。
QGIS 软件窗口。以浅蓝色线条描绘了河流,并在河流上标注了“熊野川”。

1 在 QGIS 画出亚洲所有的河流

数据获取

  1. 访问 HydroSHEDS 网站,找到 HydroRIVERS 产品页面。网址: https://www.hydrosheds.org/products/hydrorivers
  2. 在下载区,找到 范围(Extent)为“Asia”、文档格式(File format)为“Shapefile”的数据,并下载对应的压缩包。
  3. 解压缩后将得到一组文档,其中包括:
    • 内核图形文件:.shp
    • 属性表格:.dbf
    • 投影信息:.prj (ASCII 文本档)
    • 索引文件:.shx、.sbn、.sbx

Shapefile 格式需要一组文档(.shp, .dbf, .shx, .prj 等)才能完整使用。

在 QGIS 加载 .shp 文档

  1. 打开 QGIS。选择 图层 (Layer) > 添加图层 (Add Layer) > 添加矢量图层 (Add Vector Layer)
  2. 在打开的对话框中,点击矢量数据集右侧的“…”,找到解压缩后的文件夹,载入 .shp 文件。
  3. 点击 添加 (Add)。数据较大,可能需要等待一段时间。

2 仅显示较大河流(数据筛选)

  1. 在「图层」面板中,右键点击 HydroRIVERS 图层,选择 过滤(如下图)。
  2. HydroRIVERS 提供了两个主要的规模属性:
    • DIS_AV_CMS:长期平均径流量。
    • ORD_STRA:斯特拉勒河级(Strahler Order)。
  3. 构建表达式: 选择一个合适的流量阈值(例如,只显示流量 $\ge 50 \text{ m}^3/\text{s}$ 的河流)。
"DIS_AV_CMS" >= 50
  1. 点击 确定 (OK)。地图上将只显示符合条件的较大河段。

QGIS 软件窗口。画布上描绘了河流、小溪等水体。左侧是“图层”面板。用户右键点击了“HydroRIVERS v10 as”图层,弹出了一个上下文菜单,菜单中选中了“过滤(F)…”选项。
对 HydroRIVERS 图层进行过滤操作

3 给河流标上名字

现在想要在特定河流上标注「熊野川」。

手动添加名称字段

  • 添加名称字段:
    1. 右键点击 HydroRIVERS 图层,选择 打开属性表 (Open Attribute Table)。
    2. 点击 切换编辑模式(铅笔图标,见下图①)。
    3. 点击 新建字段 (见下图②),创建一个名为 RiverName 的“文本(字符串)”类型的新字段。将长度设为 50。

QGIS 软件的图层属性表,顶部为菜单栏,左数第一个按钮是“切换编辑模式”的按钮,第十八个按钮是“新建字段”的按钮。
属性表

  • 手动输入名称:
    1. 使用 选取要素 工具在地图上框选「熊野川」的所有河段(如下图)。
    2. 右键点击 HydroRIVERS 图层,再次选择 打开属性表
    3. 在弹出的窗口中,在顶部菜单栏中点击 字段计算器 (算盘图标)。
    4. 勾选 更新现有字段,选择 RiverName
    5. 在表达式中输入 '熊野川'(使用单引号)。
    6. 点击 确定 (OK) 并保存编辑。

QGIS 软件窗口。使用蓝色的线条标注河流,其中黄色线条代表被选中的河流。
使用选取要素工具框选出了「熊野川」(黄色部分)

现在再次右键点击 HydroRIVERS 图层,打开**“属性..” > 标注 > 单一标注 > OK**,就能在河流上看到“熊野川”的标注。

如果显示为“???”,则需要修改图层的 数据源编码(如 GBK 和 UTF-8)。 右键点击图层,打开“属性..” > 源 > 设置 > 数据源编码。

优化标注位置

为了避免「熊野川」这个名字在河道上重复出现多次

  1. 右键点击图层,打开“属性..”> 标注。
  2. 切换到 渲染 (Rendering) 子页签。
  3. 要素选项 (Feature Options) 中,勾选 合并相连的线以防止重复标注

如果河流是垂直走向,标签会难以阅读,需要将中文/日文本符竖排显示:

  1. 打开“属性..”> 标注 > 位置,在常规设置中将“模式”改为“水平”。
  2. 打开 HTML 格式: 进入 标注 > 文本,勾选 允许 HTML 格式化 (Allow HTML formatting)。
  3. 修改标注表达式: 点击 (Value) 字段右侧的 Э(epsilon)图标,输入以下表达式:regexp_replace("RiverName", '(.)', '\\1<br />') 。这会在中文本符之间插入 HTML 换行标签 <br />,模仿竖排效果。
  4. 优化显示: 在 描边 子页签,勾选 绘制文本描边,确保竖排文本清晰可见。

4 在地图上删去某条河流

想要删除熊野川北侧的“北山川”。

识别目标河流

找到想删除的那条河流的唯一标识,例如它的 HYRIV_ID 或您手动添加的 RiverName 字段。

  1. 使用 选取要素 (Select Features) 工具在地图上框选需要删去的河段。
  2. 右键点击图层,选择 打开属性表
  3. 在弹出的窗口的左下角,展开下拉式选单,选中“显示选中的要素”。
  4. 记下 HYRIV_ID,或修改 RiverName 为「River X」。

添加排除该河流的条件

  1. 在「图层」面板中,右键点击 HydroRIVERS 图层,选择 过滤
  2. 修改表达式: 在原有的筛选条件上,添加排除该河流的条件。

假设主要条件是 "DIS_AV_CMS" >= 50 ,想排除名为「River X」的河流:

"DIS_AV_CMS" >= 50
AND "RiverName" != 'River X'

也可以使用 ID 排除: 假设 ID 是 40551262、40551676 和 40552098:

"DIS_AV_CMS" >= 50 
AND "HYRIV_ID" != 40551262
AND "HYRIV_ID" != 40551676
AND "HYRIV_ID" != 40552098
  1. 点击 确定 (OK)。这样该河流就会被精确地从地图上排除。

  1. 參見 Lehner, B., Grill G. (2013). Global river hydrography and network routing: baseline data and new approaches to study the world’s large river systems. Hydrological Processes, 27(15): 2171–2186. https://doi.org/10.1002/hyp.9740 ↩︎

?隨機抽選一篇