Skip to content

28 使用打印布局地图册(QGIS3)自动化地图制作

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

使用打印布局地图册自动化地图制作 (QGIS3)

如果您的组织需要发布印刷版或在线地图,通常需要使用相同的模板创建大量地图——通常是为每个行政单元或感兴趣区域制作一幅。手动创建这些地图非常耗时,如果您想定期更新它们,这会变成一项繁琐的工作。QGIS 有一个名为 Atlas(地图册)的工具,可以帮助您创建地图模板,并轻松为不同的地理区域发布大量地图。如果您不熟悉打印布局的基础知识,请先学习制作地图教程。

任务概述

本教程展示了如何为夏威夷州的每个县创建湿地地图。

../../_images/output.png

您将学习的其他技能

  • 使用 反选多边形 样式渲染器来填充多边形之外的区域。
  • 基于规则的 样式渲染器中编写表达式,以便在地图册中仅显示当前要素。
  • 编写表达式以在打印布局中创建动态标签。
  • 使用 形状渐变填充 样式渲染器创建双色多边形填充。

获取数据

我们将使用来自夏威夷州 - 规划办公室GIS 数据图层

从"生物与生态"类别下载湿地图层。

从"文化与人口统计"类别下载2010 年人口普查县界图层。

为方便起见,您也可以直接从以下链接下载这两个数据集的副本:

HI_Wetlands.shp.zip

county10.shp.zip

数据来源 [HAWAII]

操作步骤

  1. 在 QGIS 浏览器中定位 HI_Wetlands.shp.zip 文件并展开它。选择 HI_Wetlands_Poly.shp 文件并将其拖到画布上。该图层包含代表整个夏威夷州湿地的多边形。

../../_images/110.png

  1. 由于我们想为该州的每个县制作单独的湿地地图,我们需要县界图层。浏览到 county10.shp.zip 文件并展开它。选择 county10.shp 文件并将其拖到画布上。

../../_images/210.png

  1. 暂时关闭 HI_Wetlands_Poly 图层的可见性。您现在可以清楚地看到 county10 图层的多边形。此图层包含 5 个要素,每个要素关联一个或多个多边形。这些要素代表 5 个县。我们将使用此图层作为覆盖图层,并配置 QGIS 自动创建 5 张独立的地图——每个要素对应一张。

../../_images/35.png

  1. 打开 HI_Wetlands_Poly 图层的可见性。转到 项目 ‣ 新建打印布局...

../../_images/41.png

  1. 将打印布局标题留空,点击 确定。

../../_images/51.png

  1. 在打印布局窗口中,转到 布局 ‣ 添加地图。

../../_images/61.png

  1. 按住鼠标左键在希望插入地图的位置拖动绘制一个矩形。

../../_images/71.png

  1. 在 QGIS3 中,默认不显示地图册(Atlas)选项卡。选择 视图 ‣ 面板 ‣ Atlas。

../../_images/81.png

  1. 切换到 Atlas 选项卡。勾选 生成地图册 框。

../../_images/91.png

  1. 选择 county10 作为 覆盖图层。这表明我们希望为 county10 图层中的每个多边形要素创建一张地图。您也可以勾选 隐藏覆盖图层,这样要素本身就不会显示在地图上。

../../_images/104.png

  1. 切换到 项目属性 选项卡。向下滚动并勾选 受地图册控制 框。这将告知布局,此项目中所显示地图的内容将由 Atlas 工具决定。

注意

您必须在 Atlas 选项卡中启用 生成地图册 框,否则 受地图册控制 复选框将被禁用。

../../_images/114.png

  1. 配置好 Atlas 设置后,转到 Atlas ‣ 预览地图册。

../../_images/124.png

  1. 您将看到地图刷新并显示单个地图的外观。您可以预览每个县多边形对应的地图样式。转到 Atlas ‣ 下一个要素。Atlas 将根据覆盖图层中下一个要素的范围来渲染地图。

../../_images/133.png

  1. 让我们为地图添加一个标签。转到 布局 ‣ 添加标签。

../../_images/143.png

  1. 在 项目属性 选项卡下,找到 主属性 部分,点击 插入表达式... 按钮。

../../_images/153.png

  1. 地图的标签可以使用覆盖图层的属性。concat 函数用于将多个文本项连接成一个文本项。在本例中,我们将连接 county10 图层的 NAME10 属性值与文本 County of。添加如下表达式,然后点击 确定。
concat('County of ', "NAME10")

../../_images/163.png

  1. 删除开头的 Lorem ipsum 占位符文本,使文本框仅包含表达式。向下滚动到 外观 部分,点击 字体 下拉菜单。选择字体并根据喜好调整大小。

../../_images/173.png

  1. 选择 居中 作为水平对齐选项,中间 作为垂直对齐选项。

../../_images/182.png

  1. 添加另一个标签,在 主属性 下输入 Wetlands Map。由于这里没有表达式,此文本在所有地图上将保持不变。

../../_images/192.png

  1. 转到 Atlas ‣ 上一个要素,验证地图标签是否按预期工作。您会注意到湿地地图中有延伸到海洋中的多边形,看起来不太美观。我们可以更改样式,以隐藏县界以外的区域。

../../_images/202.png

  1. 切换到 QGIS 主窗口。右键单击 county10 图层并选择 属性。

../../_images/212.png

  1. 在 符号化 选项卡中,选择 反选多边形 渲染器。此渲染器样式化的是多边形外部——而非内部。选择白色作为填充颜色,点击 确定。

../../_images/222.png

  1. 您会注意到延伸到县界之外的多边形现在消失了。实际上,它们被来自县多边形外部的白色填充(由于反选多边形样式)隐藏了。

../../_images/232.png

  1. 切换到 布局 窗口。如果我们希望显示反选多边形的效果,需要在 Atlas 选项卡下取消勾选 隐藏覆盖图层 框。取消勾选后,渲染的图像将变得清晰,覆盖多边形以外的区域将不可见。

../../_images/242.png

  1. 不过还有一个问题。您会注意到,在某些情况下,覆盖图层边界以外的地图部分仍然可见。这是因为 Atlas 不会自动隐藏其他要素。这在某些情况下可能有用,但就我们的目的而言,我们只想显示正在生成地图的县的湿地。要解决此问题,切换回 QGIS 主窗口,右键单击 county10 图层并选择 属性。

../../_images/252.png

  1. 在 符号化 选项卡中,选择 基于规则 作为子渲染器。双击 规则 下的区域。

../../_images/261.png

  1. 在 编辑规则 对话框中,点击 筛选器 旁边的 表达式 按钮。

../../_images/272.png

  1. 在 表达式字符串构建器 中,展开 变量 函数组。@atlas_featureid 变量存储当前所选要素的 id。我们将构建一个仅选择当前所选 Atlas 要素的表达式。输入如下表达式,然后点击 确定。
$id = @atlas_featureid

../../_images/282.png

  1. 关闭所有中间对话框,切换回 布局 窗口。选择 Map 1 项目,并在 项目属性 选项卡下点击 更新预览 按钮以查看更改。注意,现在只显示覆盖县界的区域。

注意

如果您没有看到 更新预览 按钮,可以先选择另一个项目元素,然后再选择 Map 1,这可能会有所帮助。

../../_images/292.png

  1. 现在我们将添加另一个动态标签来显示当前日期。转到 布局 ‣ 添加标签 并在地图上选择区域。点击 插入表达式 按钮。

../../_images/302.png

  1. 展开 日期和时间 函数组,您将找到 $now 函数。它保存当前系统时间。todate() 函数会将其转换为日期字符串。输入如下表达式,然后点击 确定。
concat('Created on: ', todate($now))

../../_images/312.png

  1. 添加另一个标签以注明数据来源。您还可以根据需要添加其他地图元素,如指北针、比例尺等,如制作地图教程所述。

../../_images/321.png

  1. 我们将进行最后一次样式改进。切换回 QGIS 主窗口,右键单击 HI_Wetlands_Poly 图层并选择 属性。

../../_images/331.png

  1. 在 符号化 选项卡中,点击 简单填充,然后选择 形状渐变填充 作为符号图层类型。选择 双色 选项,并选择您喜欢的绿色和蓝色色调。点击 确定。

../../_images/341.png

  1. 选择 Map 1 项目,并在 项目属性 选项卡下点击 更新预览 按钮以查看更改。

../../_images/351.png

  1. 对地图布局和样式满意后,转到 Atlas ‣ 将地图册导出为图像。

../../_images/36.png

  1. 选择计算机上的一个目录,然后点击 选择。

../../_images/37.png

  1. 在 图像导出选项 中保留默认设置,然后点击 保存。

../../_images/38.png

  1. Atlas 工具现在将遍历覆盖图层中的每个要素,并根据我们创建的模板创建单独的地图图像。过程完成后,您可以在目录中看到这些图像。

../../_images/39.png

  1. 以下是地图图像供参考。

../../_images/output_1.png ../../_images/output_2.png ../../_images/output_3.png ../../_images/output_4.png ../../_images/output_5.png


如果您想提供反馈或分享您对本教程的经验,请在下方评论。(需要 GitHub 账户)