目录

上一个主题

11. 专题图制作

下一个主题

11.2. 使用颜色绘制密度分布


本教程由OSGeo中国中心维护。

11.1. 专题图制作及输出

本节利用地图出版设计的图辑工具自动制作地图,当我们对数据进行分析,数字化后,会有地图输出的要求, 如果你需要时常更新这些地图的话,手动弄起来会花费许多时间,甚至可能会成为超级麻烦事。 QGIS提供工具 Atlas,可以让你设计地图范本并且使用它来制作出版许多不同地区的地图。 这节我们就来了解下。这个节将介绍如何为夏威夷州的每个县制作湿地地图。

我们在这里可以直接下载。

HI_Wetlands.shp.zip

county10.shp.zip

11.1.1. 操作流程

1. 打开 QGIS,选择 Layer ‣ Add Layer ‣ Add Vector Layer 。 如 图 11.1

_images/1_x7q.png

图 11.1 加载图层

2. 选择 "Browser" 找到刚下载的资料,选择 "HI_Wetlands.shp.zip" 并双击 "HI_Wetlands_Poly", 此时文件会加载到QGIS的视窗中,如 图 11.2

_images/2_xyu.png

图 11.2 加载图层

3. 你会看到很多多边形载入到图层中,代表夏威夷州全部的湿地范围。由于我们要分别制作夏威夷每个县的湿地地图, 因此还需要一个县的边界的图层才行。选择 Layer ‣ Add Layer ‣ Add Vector Layer , 然后点选 "county10.shp.zip"按下 Add ,如 图 11.3

_images/3_xzn.png

图 11.3 加载图层

  1. 接下来选择 Project ‣ New Print Layout... ,如 图 11.4

_images/4_xcm.png

图 11.4 选择New Print Layout

  1. 在设计标题处可以添加文字,在这里我们保持空白,按下 OK ,如 图 11.5

_images/5_xmk.png

图 11.5 添加标题

  1. 在"Layout"界面中选择 Add Item ‣ Add Map ,如 图 11.6

_images/6_xsp.png

图 11.6 添加地图

  1. 现在在地图版面上拖拽一块你想插入地图的区域,如 图 11.7

_images/7_xd9.png

图 11.7 添加地图

8. 然后切换到 Item Properties 分页接着向下滚动, 勾选 Controlled by atlas 的方框, 此选项用来告诉电脑该地图的范围是由 "Atlas" 具所控制, 如 fig_qgis_figure401 。 (注:如果这时方框是无法选取的状态,请先完成后续几个步骤,再回来勾选。)

_images/8_x3g.png

9. 切换到 Atlas 分页,如果在地图变面上没有找到 Atlas 分页, 则选择 Atlas ‣ Atlas Setting ,如 图 11.8

_images/9_xyu.png

图 11.8 Atlas Setting设置

10. 在 "Atlas" 分页选择后,勾选 Generate an atlas 方框, Coverage layer , 选择 "county10" 勾选 Hidden coverage layer , 这样一来覆蓋图层内的图征就不会显示在地图上,如 图 11.9

_images/10_xsr.png

图 11.9 Atlas"设置

11. 虽然已经完成了地图设定,但这时地图影像还不会有任何改变。接下来 选择 Atlas ‣ Preview Atlas ,如 图 11.10

_images/11_xe8.png

图 11.10 Preview Atlas设置

12. 现在地图会刷新成为其中一张地图,注意在右侧最底部有个讯息, 告诉你现在所使用的多边形要素编号,如 图 11.11

_images/12_xkc.png

图 11.11 刷新地图

13. 你也可以预览由其他多边形建立的地图,选择 Atlas ‣ Next Feature , 如 图 11.12

_images/13_xgi.png

图 11.12 预览其他地图

  1. 如此一来地图就会刷新为下一个要素覆盖的范围,如 图 11.13

_images/14_x0o.png

图 11.13 预览地图

15. 现在我们可以为地图添加图例,比例尺,标题等。首先,我们为地图添加标题, 选择 Add Item ‣ Add Label ,如 图 11.14

_images/15_xoa.png

图 11.14 添加标记

16. 在标记的 Item properties 分页中,选择 Insert an expression... 钮, 如 图 11.15

_images/16_xlc.png

图 11.15 添加标记

17. 在此功能中,标记文字可以使用覆盖图层的属性。我们要使用 "concat" 函数来把两段字串合并, 而要合并的字串分别为 "County of" 和 "county10" 图层中的 "NAME10" 属性值。 加入以下的表达式后,按下 OK ,如 图 11.16

concat('County of ', "NAME10")
_images/17_xvb.png

图 11.16 合并图层属性

  1. 现在我们调整成我们需要的字体大小,如 图 11.17

_images/18_x3g.png

图 11.17 调整字体

19. 加入另一个标记,然后在 Main properties 下输入 "Wetlands Map" , 由于没有使用表达式,此文字在所有的地图中都会相同,如 图 11.18

_images/19_xj7.png

图 11.18 添加标记

20. 接下来选择 Atlas ‣ Last Feature 然后确认地图标按照预定义的书签操作。 目前湿地地图上的多边形也延伸到了海中,看起来不怎么美观,所以接着我们就要来改变样式, 隐藏郡县边界外侧的多边形图征,如 图 11.19

_images/20_xv7.png

图 11.19 选择Last Feature

21. 现在我们切换到 QGIS 主视窗,在 "county10" 图层上按右键选择 Properties , 如 图 11.20

_images/21_x6u.png

图 11.20 选择属性

22. 在 Style 分页中,选择 Inverted polygons 的呈现方法, 这个特殊的样式设定的是多边形的 "outside" 区域。选择白色做为填充色彩, 然后按下 OK ,如 图 11.21

_images/22_xyg.png

图 11.21 样式设定

23. 回到地图设计的视窗中,如果我们要让反转多边形的设定出现的话, 就得先取消勾选在 Atlas generation 分页下的 Hidden coverage layer 才行。 套用新样式后的地图,因为多边形外围区域已经隐藏起来,看起来清晰许多,如 图 11.22

_images/23_xu9.png

图 11.22 隐藏外围

24. 现在还有一个问题,你可以看到在覆盖图层内部,但是属于其他要素的区域仍然可以看见, 这是因为制图工具并不会自动把其他要素也隐藏起来。此设计在某些状况下很有用,但却不是我们想要的, 每个地图只呈现单一个多边形图征。为了修正此问题,我们要回到 QGIS 主视窗,然后在"county10"图层上按右键, 选择 Properties ,如 图 11.23

_images/24_xtu.png

图 11.23 清理多余图

25. 在 Style 分页中,有个 Sub renderer 下拉选单, 选择 Rule-based 在下方 Rule 的栏位上点两下, 如 图 11.24

_images/25_xw2.png

图 11.24 Style设置

  1. 点选 Filter 右侧的 变量 钮,如 fig_qgis_figure420

_images/26_xfj.png

27. 在 Expression string builder 中,展开 Atlas 的群组或是 Variables 的群组, 然后找到 "$atlasfeatureid" 或 "atlas_featureid" ,此函数会传回目前舆图工具选择的图征。 我们要做的是建立一个表达式,让它只选择制图工具选择的要素,因此请输入以下表达式:$id = $atlasfeatureid, 如 图 11.25

_images/27_x9u.png

图 11.25 变量设置

28. 回到地图设计的视窗,在地图项目的 Item properties 分页中点选 Update preview 后, 就可以看到改变,现在每张地图都只会显示位于本郡县边界内的资料了,如 图 11.26

_images/28_x3m.png

图 11.26 Update preview设置

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

_images/29_x2v.png

图 11.27 标记日期

30. 接下来展开 Date and Time 的群组,找到"$now"这个函数,它用来表示现在的系统时间。 另外我们要使用"todate()"这个函数,用来把"now"的函数值转换成日期字串。输入以下表示式:

concat('Created on: ', todate($now))

图 11.28

_images/30_x4t.png

图 11.28 标记日期

31. 现在再加入另外一个标记,引用资料来源。这里我们还可以添加其他的地图元素, 例如指北针、比例尺、图例等等,如 图 11.29

_images/31_xf5.png

图 11.29 添加其他元素

32. 当你完成地图版面后,选择 Atlas ‣ Export Atlas as Images , 如 图 11.30

_images/32_x2h.png

图 11.30 输出图像

  1. 选择电脑中的某一个资料夹,然后按下 Choose 钮,如 图 11.31

_images/33_xbo.png

图 11.31 输出图像

34. 制图工具会自动地使用我们刚刚建立的范本,为覆盖图层中的每个要素创造各自的地图。 处理完成后,在资料夹中就能找到这些地图,如 图 11.32

_images/34_x82.png

图 11.32 输出图像

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

_images/35_1_xe0.png

图 11.33 输出图像

_images/35_2_xe1.png

图 11.34 输出图像

_images/35_3_xbh.png

图 11.35 输出图像

_images/35_4_xhr.png

图 11.36 输出图像

_images/35_5_xph.png

图 11.37 输出图像