使用打印布局图集(QGIS3)自动创建地图¶
如果您的组织发布印刷的或在线的地图,则通常需要创建具有相同模板的许多地图-通常每个管理单位或感兴趣区域一个。手动创建这些地图可能要花费很长时间,如果您要定期更新这些地图,可能会变得很繁琐。QGIS有一个名为 Atlas
的工具,可以帮助您创建地图模板并轻松发布针对不同地理区域的大量地图。如果您不熟悉打印布局的基础知识,请阅读 :doc:`../ making_a_map`教程。
内容说明¶
本教学将介绍如何为夏威夷州的每个县制作湿地地图。
你还会学到这些¶
使用
反转多边形
样式渲染器填充多边形之外的区域。在
基于规则
的样式渲染器中编写一个表达式,以仅显示Atlas中的当前功能。编写表达式以在打印版式中创建动态标签。
使用
Shapeburst fill
样式渲染器创建一个双色调多边形填充。
获取资料¶
本章中我们使用的是 夏威夷州-规划办公室 提供的 GIS资料图层
下载隶属于生物与生态类别的 湿地 图层。
下载隶属于文化与人口统计类别的 2010 郡县边界 图层。
为了方便起见,你也可以直接用下面的连结下载这两份数据集:
数据来源 [HAWAII]
操作流程¶
在QGIS浏览器中找到
HI_Wetlands.shp.zip
文件并将其展开。选择HI_Wetlands_Poly.shp
文件并将其拖到画布上。该图层包含代表整个夏威夷州湿地的多边形。
由于我们要为该州的每个县制作单独的湿地地图,因此需要县边界层。浏览到
county10.shp.zip
文件并将其展开。选择county10.shp
文件并将其拖到画布上。
暂时关闭
HI_Wetlands_Poly
图层的可见性。现在,您将清楚地看到county10
层中的多边形。此图层包含5个要素,每个要素都具有1个或多个与之关联的多边形。要素代表5个县。我们将使用该层作为覆盖层,并配置QGIS以自动创建5张单独的地图-每个功能一张。
打开
HI_Wetlands_Poly
层的可见性。转到 。
将打印布局标题留空,然后单击 OK。
在 Print Layout 窗口中,转到 。
按住鼠标左键在要插入地图的位置拖动一个矩形。
在QGIS3中, Atlas`标签默认情况下不可见。选择 :menuselection:`View –> Panels –> Atlas。
切换到 Atlas 标签。选中 Generate an atlas 框。
选择
county10
作为覆盖层。这将表明我们要为county10
图层中的每个多边形要素分别创建1张地图。您还可以检查 Hidden coverage layer 以使要素本身不会出现在地图上。
切换到 Item Properties 标签。向下滚动并选中由地图集控制的 Controlled by atlas 框。这将表明布局,该项目中显示的地图内容将由
地图集
工具确定。
注解
您必须在 Atlas 标签中启用 Generare an atlas`框,否则 :guilabel:`Controlled by atlas 复选框会出现问题。
现在您已经配置了Atlas设置,请转到
。
您将看到地图刷新,并显示单个地图的外观。您可以预览每个县多边形的地图外观。转到
。Atlas将在覆盖图层中的下一个要素范围内渲染地图。
让我们在地图上添加标签。转到
。
在 Item properties 标签下,找到 Main properties 部分,然后单击 Insert an Expression… 按钮。
在此功能中,标记文字可以使用复盖图层的属性。我们要使用
concat
函数来把两段字串合并,而要合并的字串分别为County of
和county10
图层中的NAME10
属性值。加入以下的表达式后,按下 OK。
concat('County of ', "NAME10")
删除前导 Lorem ipsum 占位符文本,以便文本框仅包含表达式。向下滚动到 Appearance 部分,然后单击 Font 下拉菜单。选择字体并根据您的喜好调整大小。
选择
居中
作为 Horizontal alignment ,选择中间
作为 Vertical alignment 选项。
加入另一个标记,然后在 Main properties 下输入
Wetlands Map
。由于没有使用表达式,此文字在所有的地图中都会相同。
选择
,然后确认地图标记有照我们所想的运作。目前湿地地图上的多边形也延伸到了海中,看起来不怎么美观,所以接着我们就要来改变样式,隐藏郡县边界外侧的多边形图征。
切换到QGIS主视窗,在
county10
图层上按右键选择 Properties。
在 Symbology 标签中,选择 Inverted polygons 渲染器。此渲染器设置多边形的 外部 样式-不是内部。选择白色作为填充色,然后单击 OK 。
您会注意到,超出县边界范围的多边形现在消失了。实际上,由于 倒置多边形 样式,它们被从县多边形延伸出的白色填充物所隐藏。
切换到 Layout 窗口。如果要显示倒置多边形的效果,则需要取消选中 Atlas 标签下的 Hidden coverage layer 框。取消选中后,渲染的图像将显得干净,并且看不到coverage多边形之外的区域。
不过还有一个问题。您会注意到,在某些情况下,覆盖图层边界之外的地图部分仍然可见。这是因为Atlas不会自动隐藏其他功能。在某些情况下这可能很有用,但出于我们的目的,我们只想显示正在生成其地图的县的湿地。要解决此问题,请切换回QGIS主窗口,然后右键单击
county10
层,然后选择 Properties。
在 Symbology 标签中,选择
基于规则
作为 Sub renderer。双击 Rule 下的区域。
在 Edit rule 对话框中,单击 Filter 旁边的 Expression 按钮。
在 Expression string builder,展开 Variables 组的功能。
@atlas_featureid
变量存储当前所选特征的ID。我们将构造一个仅选择当前选定的Atlas功能的表达式。输入如下表达式,然后单击 OK。
$id = @atlas_featureid
关闭所有中间对话框,然后切换回 Layout 窗口。选择 Map 1 项,然后单击 Item properties 选项卡下的 Update preview 按钮以查看更改。请注意,现在仅显示了覆盖县境的区域。
注解
如果您没有看到 Update preview 按钮,则可以先选择另一个 Item 元素,然后再选择 Map 1 来帮助。
我们再来加入另一个新的标记,用来标示现在的日期。选择 Insert an expression 按钮。
然后选择地图上的任一区域,完成后按下
展开 Date and Time 函数组,您将找到
$now
函数。这将保留当前系统时间。函数todate()
会将其转换为日期字符串。 输入如下表达式,然后单击 OK。
concat('Created on: ', todate($now))
再加入另外一个标记,引用数据来源。你也可以添加其他的地图元素,例如指北针等等,请参考 制作地图 教程的说明。
我们将进行最后的样式改进。切换回QGIS主窗口,然后右键单击
HI_Wetlands_Poly
图层,然后选择 Properties。
在 Symbology 标签中,单击 Simple fill,然后选择
Shapeburst fill
作为 Symbol layer type。 选择 Two color 选项,然后选择所需的绿色和蓝色阴影。点击 OK 。
选择 Map 1 项,然后单击 Item properties 选项卡下的 Update preview 按钮以查看更改。
对地图的布局和样式感到满意后,请转至
。
选择电脑中的某资料夹,然后按下 Choose 按钮。
将默认选项保留在 Image Export Options 中,然后单击 Save。
Atlas工具现在将遍历coverage图层中的每个要素,并根据我们创建的模板创建单独的地图图像。该过程完成后,您就可以在目录中看到图像。
这里放上完成版地图以供参考。