28 使用打印布局地图册(QGIS3)自动化地图制作
原文链接: https://www.qgistutorials.com/en/docs/3/automating_map_creation.html
使用打印布局地图册自动化地图制作 (QGIS3)¶
如果您的组织需要发布印刷版或在线地图,通常需要使用相同的模板创建大量地图——通常是为每个行政单元或感兴趣区域制作一幅。手动创建这些地图非常耗时,如果您想定期更新它们,这会变成一项繁琐的工作。QGIS 有一个名为 Atlas(地图册)的工具,可以帮助您创建地图模板,并轻松为不同的地理区域发布大量地图。如果您不熟悉打印布局的基础知识,请先学习制作地图教程。
任务概述¶
本教程展示了如何为夏威夷州的每个县创建湿地地图。
您将学习的其他技能¶
- 使用
反选多边形样式渲染器来填充多边形之外的区域。 - 在
基于规则的样式渲染器中编写表达式,以便在地图册中仅显示当前要素。 - 编写表达式以在打印布局中创建动态标签。
- 使用
形状渐变填充样式渲染器创建双色多边形填充。
获取数据¶
我们将使用来自夏威夷州 - 规划办公室的GIS 数据图层。
从"生物与生态"类别下载湿地图层。
从"文化与人口统计"类别下载2010 年人口普查县界图层。
为方便起见,您也可以直接从以下链接下载这两个数据集的副本:
数据来源 [HAWAII]
操作步骤¶
- 在 QGIS 浏览器中定位
HI_Wetlands.shp.zip文件并展开它。选择HI_Wetlands_Poly.shp文件并将其拖到画布上。该图层包含代表整个夏威夷州湿地的多边形。

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

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

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

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

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

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

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

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

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

- 切换到 项目属性 选项卡。向下滚动并勾选 受地图册控制 框。这将告知布局,此项目中所显示地图的内容将由
Atlas工具决定。
注意
您必须在 Atlas 选项卡中启用 生成地图册 框,否则 受地图册控制 复选框将被禁用。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 关闭所有中间对话框,切换回 布局 窗口。选择 Map 1 项目,并在 项目属性 选项卡下点击 更新预览 按钮以查看更改。注意,现在只显示覆盖县界的区域。
注意
如果您没有看到 更新预览 按钮,可以先选择另一个项目元素,然后再选择 Map 1,这可能会有所帮助。

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

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

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

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

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

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

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

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

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

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

- 以下是地图图像供参考。

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