利用地图出版设计的图辑工具自动创造地图

警告

本教学已有新的版本,请前往 使用打印布局图集(QGIS3)自动创建地图

如果你的所属单位有出版纸本或线上地图的话,你或许会常常需要使用同一个范本制作许多地图,这些地图通常个别代表不同的行政区或是不同的特定区域。如果你需要时常更新这些地图的话,手动弄起来会花费许多时间,甚至可能会成为超级麻烦事。不过,QGIS 有个称为 舆图 的工具,可以让你设计地图范本并且使用它来制作出版许多不同地区的地图。如果你对「地图出版设计(Print Composer)」不熟悉,请先阅读 制作地图 中的教学。

内容说明

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

你还会学到这些

  • 使用 反转多边形 样式设定多边形外侧的区域样式

  • 规则 样式设定中使用表达式,让舆图工具只显示现在选择的图征

  • 在地图出版设计中使用表达式建立动态标记

取得资料

本章中我们使用的是夏威夷州 Office of Planning提供的 GIS 资料图层

下载隶属于生物与生态类别的湿地图层

下载隶属于文化与人口统计类别的 2010 郡县边界 图层

为了方便起见,你也可以直接用下面的连结下载这两份资料集:

HI_Wetlands.shp.zip

county10.shp.zip

资料来源 [HAWAII]

操作流程

  1. 打开 QGIS,选择 图层 ‣ 加入图层 ‣ 加入向量图层

../_images/1137.png
  1. 选择 HI_Wetlands.shp.zip 并按下 确定

../_images/290.png
  1. 选择 HI_Wetlands_Poly 图层并点选 确定

../_images/347.png
  1. 你会看到很多多边形出现,代表夏威夷州全部的溼地范围。由于我们要分别制作夏威夷每个县的溼地地图,因此还需要一个郡县边界的图层才行。选择 图层 ‣ 加入图层 ‣ 加入向量图层,然后点选 county10.shp.zip,按下 开启

../_images/431.png
  1. 选择 专案 ‣ 建立地图出版设计

../_images/531.png
  1. 设计标题保持空白,按下 确定

../_images/630.png
  1. 选择 图层 ‣ 加入地图

../_images/730.png
  1. 在地图版面上拖曳一块你想插入地图的区域。

../_images/829.png
  1. 切换到 项目属性 分页然后向下捲动,勾选 由舆图控制 的方框,此选项用来告诉电脑本地图的范围是由舆图工具所控制。(译按:如果这时方框是无法选取的状态,请先完成后续几个步骤,再回来勾选。)

../_images/930.png
  1. 切换到 舆图设计 分页,勾选 产生舆图 方框,复盖图层 选择 county10,如此一来电脑就会为每个在 county10 内的多边形图征创造各自的地图。你也可以勾选 隐藏复盖范围图层,这样一来「复盖图层」内的图征就不会显示在地图上。

../_images/1028.png
  1. 虽然已经完成了舆图设定,但这时地图影像还不会有任何改变。选择 舆图 ‣ 预览舆图

../_images/1138.png
  1. 按下去之后地图会刷新成为其中一张地图看起来的样子,注意在右侧最底部有个讯息,告诉你现在所使用的多边形图征编号。

../_images/1230.png
  1. 你也可以预览由其他多边形建立的地图,请选择 舆图 –> 下一个图征

../_images/1329.png
  1. 如此一来地图就会刷新为下一个图征复盖的范围。

../_images/1428.png
  1. 来加点标记吧!选择 图层 ‣ 加入标记

../_images/1527.png
  1. 在标记的 项目属性 分页中,选择 插入表示式…

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

concat('County of ', "NAME10")
  1. 调整成你喜欢的字体大小。

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

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

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

../_images/2118.png
  1. 样式 分页中,选择 反转多边形 的呈现方法,这个特殊的样式设定的是多边形的「外部」区域。选择白色做为填充色彩,然后按下 确定

../_images/2216.png
  1. 回到地图设计的视窗,如果我们要让反转多边形的设定出现的话,就得先取消勾选在 舆图设计 分页下的 隐藏复盖范围图层 才行。套用新样式后的地图由于多边形外围区域已经隐藏起来,看起来干净许多。

../_images/2313.png
  1. 不过目前还有一个问题,你可以看到在位在复盖图层内部,但是属于其他图征的区域仍然可以看见,这是因为舆图工具并不会自动把其他图征也隐藏起来。此设计在某些状况下很有用,但却不是我们想要的、每个地图只呈现单一个多边形图征内的资讯。为了修正此问题,我们要回到 QGIS 主视窗,然后在 county10 图层上按右键,选择 属性

../_images/2412.png
  1. 样式 分页中,有个 子绘图 下拉选单,选择 规则 的呈现方法。在下方 规则 的栏位上点两下。

../_images/2512.png
  1. 点选 过滤条件 右侧的 钮。

../_images/2610.png
  1. 表达式字串建构器 中,展开 Atlas 的群组(译按:或是 Variables 的群组),然后找到 $atlasfeatureidatlas_featureid,此函数会传回目前舆图工具选择的图征。我们要做的是建立一个表达式,让它只选择舆图工具选择的图征,因此请输入以下表达式:

$id = $atlasfeatureid
../_images/2710.png
  1. 回到地图设计的视窗,在地图项目的 项目属性 分页中点选 :guilabel:` 更新预览` 后,就可以看到改变,现在每张地图都只会显示位于本郡县边界内的资料了。

../_images/2810.png
  1. 我们再来加入另一个新的标记,用来标示现在的日期。选择 图层 ‣ 加入标记 然后选择地图上的任一区域,完成后按下 插入表示式 钮。

../_images/297.png
  1. 展开 日期与时间 的群组,找到 now 这个函数,它用来表示现在的系统时间。另外我们要使用 todate()``这个函数,用来把 ``now 的函数值转换成日期字串。请输入以下表示式:

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

../_images/3111.png
  1. 当你完成地图版面后,选择 舆图 ‣ 汇出舆图为影像

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

../_images/3310.png
  1. 舆图工具会自动地使用我们刚刚建立的范本,为复盖图层中的每个图征创造各自的地图。处理完成后,在资料夹中就能找到这些地图。

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

../_images/35_1.jpg ../_images/35_2.jpg ../_images/35_3.jpg ../_images/35_4.jpg ../_images/35_5.jpg