使用打印布局图集(QGIS3)自动创建地图

如果您的组织发布印刷的或在线的地图,则通常需要创建具有相同模板的许多地图-通常每个管理单位或感兴趣区域一个。手动创建这些地图可能要花费很长时间,如果您要定期更新这些地图,可能会变得很繁琐。QGIS有一个名为 Atlas 的工具,可以帮助您创建地图模板并轻松发布针对不同地理区域的大量地图。如果您不熟悉打印布局的基础知识,请阅读 :doc:`../ making_a_map`教程。

内容说明

本教学将介绍如何为夏威夷州的每个县制作湿地地图。

你还会学到这些

  • 使用 反转多边形 样式渲染器填充多边形之外的区域。

  • 基于规则 的样式渲染器中编写一个表达式,以仅显示Atlas中的当前功能。

  • 编写表达式以在打印版式中创建动态标签。

  • 使用 Shapeburst fill 样式渲染器创建一个双色调多边形填充。

获取资料

本章中我们使用的是 夏威夷州-规划办公室 提供的 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/22.png
  1. 暂时关闭 HI_Wetlands_Poly 图层的可见性。现在,您将清楚地看到 county10 层中的多边形。此图层包含5个要素,每个要素都具有1个或多个与之关联的多边形。要素代表5个县。我们将使用该层作为覆盖层,并配置QGIS以自动创建5张单独的地图-每个功能一张。

../../_images/32.png
  1. 打开 HI_Wetlands_Poly 层的可见性。转到 Project ‣ New Print Layout..

../../_images/42.png
  1. 将打印布局标题留空,然后单击 OK

../../_images/52.png
  1. Print Layout 窗口中,转到 Layout ‣ Add Map

../../_images/62.png
  1. 按住鼠标左键在要插入地图的位置拖动一个矩形。

../../_images/72.png
  1. 在QGIS3中, Atlas`标签默认情况下不可见。选择 :menuselection:`View –> Panels –> Atlas

../../_images/82.png
  1. 切换到 Atlas 标签。选中 Generate an atlas 框。

../../_images/92.png
  1. 选择 county10 作为覆盖层。这将表明我们要为 county10 图层中的每个多边形要素分别创建1张地图。您还可以检查 Hidden coverage layer 以使要素本身不会出现在地图上。

../../_images/102.png
  1. 切换到 Item Properties 标签。向下滚动并选中由地图集控制的 Controlled by atlas 框。这将表明布局,该项目中显示的地图内容将由 地图集 工具确定。

注解

您必须在 Atlas 标签中启用 Generare an atlas`框,否则 :guilabel:`Controlled by atlas 复选框会出现问题。

../../_images/111.png
  1. 现在您已经配置了Atlas设置,请转到 Atlas ‣ Preview Atlas

../../_images/122.png
  1. 您将看到地图刷新,并显示单个地图的外观。您可以预览每个县多边形的地图外观。转到 Atlas ‣ Next Feature。Atlas将在覆盖图层中的下一个要素范围内渲染地图。

../../_images/132.png
  1. 让我们在地图上添加标签。转到 Layout ‣ Add Label

../../_images/142.png
  1. Item properties 标签下,找到 Main properties 部分,然后单击 Insert an Expression… 按钮。

../../_images/152.png
  1. 在此功能中,标记文字可以使用复盖图层的属性。我们要使用 concat 函数来把两段字串合并,而要合并的字串分别为 County ofcounty10 图层中的 NAME10 属性值。加入以下的表达式后,按下 OK

concat('County of ', "NAME10")
../../_images/162.png
  1. 删除前导 Lorem ipsum 占位符文本,以便文本框仅包含表达式。向下滚动到 Appearance 部分,然后单击 Font 下拉菜单。选择字体并根据您的喜好调整大小。

../../_images/172.png
  1. 选择 居中 作为 Horizontal alignment ,选择 中间 作为 Vertical alignment 选项。

../../_images/182.png
  1. 加入另一个标记,然后在 Main properties 下输入 Wetlands Map 。由于没有使用表达式,此文字在所有的地图中都会相同。

../../_images/192.png
  1. 选择 Atlas ‣ Last Feature,然后确认地图标记有照我们所想的运作。目前湿地地图上的多边形也延伸到了海中,看起来不怎么美观,所以接着我们就要来改变样式,隐藏郡县边界外侧的多边形图征。

../../_images/201.png
  1. 切换到QGIS主视窗,在 county10 图层上按右键选择 Properties

../../_images/212.png
  1. Symbology 标签中,选择 Inverted polygons 渲染器。此渲染器设置多边形的 外部 样式-不是内部。选择白色作为填充色,然后单击 OK

../../_images/221.png
  1. 您会注意到,超出县边界范围的多边形现在消失了。实际上,由于 倒置多边形 样式,它们被从县多边形延伸出的白色填充物所隐藏。

../../_images/23.png
  1. 切换到 Layout 窗口。如果要显示倒置多边形的效果,则需要取消选中 Atlas 标签下的 Hidden coverage layer 框。取消选中后,渲染的图像将显得干净,并且看不到coverage多边形之外的区域。

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

../../_images/25.png
  1. Symbology 标签中,选择 基于规则 作为 Sub renderer。双击 Rule 下的区域。

../../_images/26.png
  1. Edit rule 对话框中,单击 Filter 旁边的 Expression 按钮。

../../_images/27.png
  1. Expression string builder,展开 Variables 组的功能。 @atlas_featureid 变量存储当前所选特征的ID。我们将构造一个仅选择当前选定的Atlas功能的表达式。输入如下表达式,然后单击 OK

$id = @atlas_featureid
../../_images/28.png
  1. 关闭所有中间对话框,然后切换回 Layout 窗口。选择 Map 1 项,然后单击 Item properties 选项卡下的 Update preview 按钮以查看更改。请注意,现在仅显示了覆盖县境的区域。

注解

如果您没有看到 Update preview 按钮,则可以先选择另一个 Item 元素,然后再选择 Map 1 来帮助。

../../_images/29.png
  1. 我们再来加入另一个新的标记,用来标示现在的日期。选择 Layout ‣ Add Label 然后选择地图上的任一区域,完成后按下 Insert an expression 按钮。

../../_images/30.png
  1. 展开 Date and Time 函数组,您将找到 $now 函数。这将保留当前系统时间。函数 todate() 会将其转换为日期字符串。 输入如下表达式,然后单击 OK

concat('Created on: ', todate($now))
../../_images/311.png
  1. 再加入另外一个标记,引用数据来源。你也可以添加其他的地图元素,例如指北针等等,请参考 制作地图 教程的说明。

../../_images/321.png
  1. 我们将进行最后的样式改进。切换回QGIS主窗口,然后右键单击 HI_Wetlands_Poly 图层,然后选择 Properties

../../_images/33.png
  1. Symbology 标签中,单击 Simple fill,然后选择 Shapeburst fill 作为 Symbol layer type。 选择 Two color 选项,然后选择所需的绿色和蓝色阴影。点击 OK

../../_images/34.png
  1. 选择 Map 1 项,然后单击 Item properties 选项卡下的 Update preview 按钮以查看更改。

../../_images/35.png
  1. 对地图的布局和样式感到满意后,请转至 Atlas ‣ Export Atlas as Images

../../_images/36.png
  1. 选择电脑中的某资料夹,然后按下 Choose 按钮。

../../_images/37.png
  1. 将默认选项保留在 Image Export Options 中,然后单击 Save

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

../../_images/39.png
  1. 这里放上完成版地图以供参考。

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