QGIS地图图册怎么做?Atlas功能如何配?

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

很多同学在做行政区成果图、样点分布图、项目分幅图时,都会遇到同一个问题:QGIS地图图册怎么做?Atlas功能如何配? 如果每个乡镇、每个地块、每个调查区都手动缩放、导出一张图,不仅慢,而且很容易出现比例尺不一致、标题漏改、范围偏移等问题。QGIS 的 Atlas 图册功能就是为了解决这类“按要素批量出图”的工作流。

QGIS地图图册怎么做 QGIS Atlas功能如何配
QGIS Atlas 图册的典型流程:用覆盖图层控制每一页地图范围,再通过动态文本和批量导出生成图册。

引言:QGIS地图图册适合解决什么问题

QGIS地图图册适合“同一套版式,按不同空间对象重复出图”的场景。最常见的例子包括:按行政村导出村域图、按地块导出权属图、按样区导出调查图、按网格导出巡查图、按道路分段导出施工图。

它的核心价值不是单纯“导出多张图片”,而是让每一页地图自动匹配对应要素的范围、名称、编号、属性信息和比例尺设置。这样可以把原本几十分钟甚至几小时的重复制图工作,变成一次配置、批量输出。

本文以 QGIS 布局管理器中的 Atlas 功能为主线,讲清楚 QGIS地图图册怎么做、Atlas功能如何配、动态标题怎么写、图幅范围怎么控制,以及常见导出问题如何排查。

背景:为什么手动出图容易出错

在 QGIS 中,普通出图流程通常是:调整地图窗口、打开布局、设置比例尺、修改标题、导出图片或 PDF。这个流程适合单张图,但不适合几十张、上百张图。

手动出图常见问题有:

  • 每张图的缩放范围不一致,导致图册阅读体验差。
  • 标题、编号、行政区名称需要手动修改,容易漏改。
  • 比例尺、图例、指北针位置虽然固定,但地图主体范围不断变化。
  • 某些图幅边界被裁切,重要地物没有完整显示。
  • 导出文件命名混乱,后期整理成本高。

Atlas 图册功能的设计思路是:用一个“覆盖图层”作为分页依据。覆盖图层中的每一个要素,对应图册中的一页。QGIS 会依次读取每个要素的几何范围和属性字段,自动生成对应地图页面。

原理:Atlas功能如何配才算理解到位

Atlas 的关键概念有三个:覆盖图层、地图项联动、动态表达式。

1. 覆盖图层决定图册页数

覆盖图层也可以理解为“分页图层”。如果覆盖图层有 20 个乡镇面要素,那么 Atlas 通常会生成 20 页图册;如果覆盖图层有 100 个地块面要素,就可以生成 100 页地块图。

覆盖图层可以是行政区面、地块面、网格面,也可以是点图层或线图层。但在实际制图中,面图层最常见,因为它天然具备范围边界。

2. 地图项联动决定每页显示范围

在 QGIS 布局中,地图主体是一个“地图项”。Atlas 启用后,需要让这个地图项跟随当前 Atlas 要素自动缩放。否则 Atlas 虽然在翻页,但地图范围不会变化。

这一点是新手最容易漏掉的配置:启用 Atlas 不等于地图自动缩放,必须在地图项属性中勾选由 Atlas 控制。

3. 动态表达式决定标题和文件名

Atlas 可以读取覆盖图层的字段,例如名称字段、编号字段、行政代码字段。通过表达式,可以让标题自动变成“某某乡土地利用现状图”,也可以让导出文件名自动变成“001_某某乡.pdf”。

这就是 QGIS Atlas功能如何配的核心:空间范围用几何控制,文字内容用字段控制,输出文件名用表达式控制。

步骤:QGIS地图图册怎么做

步骤一:准备覆盖图层和业务图层

先在 QGIS 工程中准备好两类数据:

  • 覆盖图层:用于控制每一页图册范围,例如乡镇边界、村界、地块、网格。
  • 业务图层:真正需要展示的内容,例如道路、水系、用地分类、样点、遥感影像。

建议先检查覆盖图层属性表,至少保留一个可读性好的名称字段,例如 nametown村名plot_id。这个字段后面会用于动态标题和导出文件名。

如果字段中存在空值、重复值或特殊符号,建议提前清理。尤其是导出文件名字段,不要包含 /:*? 这类容易影响文件保存的字符。

步骤二:设置地图样式和图层顺序

在进入布局之前,先把主地图窗口中的图层样式调好。Atlas 只负责批量出图,不会自动帮你优化符号系统。

建议按以下顺序检查:

  1. 覆盖图层边界是否清晰,可设置为空心填充加粗边线。
  2. 业务图层是否被覆盖图层遮挡。
  3. 点、线、面符号在目标比例尺下是否可读。
  4. 标注是否会在小范围图幅中重叠。
  5. 如果有影像底图,透明度和亮度是否合适。

如果希望每一页突出当前 Atlas 要素,可以给覆盖图层设置基于规则的样式,或在布局中额外使用当前要素高亮效果。简单项目中,先用清晰边界即可。

步骤三:新建布局并添加地图项

在 QGIS 菜单中选择“项目”中的“新建打印布局”,输入布局名称,例如“乡镇图册”。进入布局窗口后,添加地图项,并调整到页面主体区域。

常见版式建议:

  • A4 纵向:适合单个行政区、地块范围较紧凑的图册。
  • A4 横向:适合东西向较长的区域。
  • A3 横向:适合包含较多图层和注记的专题图。

添加地图项后,可以先手动调整一次范围,让页面中大致显示研究区范围。后面启用 Atlas 后,每一页会根据覆盖要素自动更新。

步骤四:启用 Atlas 并选择覆盖图层

在布局窗口中找到 Atlas 设置面板,勾选“生成图册”或“启用 Atlas”。然后在覆盖图层中选择你的分页图层,例如乡镇边界或地块图层。

常用配置如下:

  • 覆盖图层:选择用于分页的面图层。
  • 过滤要素:如果只想导出部分区域,可填写表达式筛选。
  • 排序:按编号、名称或行政代码排序,保证输出顺序稳定。
  • 输出文件名表达式:使用字段生成每页文件名。

例如,如果覆盖图层中有字段 codename,可以使用类似表达式作为文件名:

"code" || '_' || "name"

如果只有名称字段,可以先使用:

"name"

注意,表达式中的字段名要和属性表完全一致。如果字段是中文,也可以使用中文字段名,但为了长期维护,项目中更推荐使用英文或拼音字段名。

步骤五:让地图项跟随 Atlas 要素缩放

选中布局中的地图项,在地图项属性中找到 Atlas 相关设置,勾选“由 Atlas 控制”或类似选项。然后设置缩放方式。

常见范围控制方式有两类:

  • 边距方式:按当前要素外接矩形自动缩放,并增加一定百分比边距。
  • 固定比例尺方式:每页使用统一比例尺,适合标准化图幅。

如果是行政区图册,通常建议使用“自动缩放到要素范围 + 10% 到 20% 边距”。这样每个区域都能完整显示,并留出适当空白。

如果是工程图、地籍图、标准图幅,建议使用固定比例尺,例如 1:500、1:1000、1:5000。这样可以保证每页空间尺度一致,但需要注意大范围要素可能显示不完整。

步骤六:添加动态标题

在布局中添加文本标签。标题不要手动写死,而是使用 QGIS 表达式读取当前 Atlas 要素字段。

例如字段名为 name,标题可以写成:

[% "name" %] 土地利用现状图

如果字段为 town,可以写成:

[% "town" %] 行政区专题图

这类动态文本会在 Atlas 翻页时自动变化。第一页可能显示“东山镇土地利用现状图”,第二页自动变成“西河镇土地利用现状图”。

步骤七:添加图例、比例尺、指北针和备注

一个完整的 QGIS地图图册通常不只包含地图主体,还应包含图例、比例尺、指北针、数据来源、制图时间和项目名称。

建议至少添加以下内容:

  • 图例:保留必要图层,删除无关图层项。
  • 比例尺:选择线段式比例尺,单位与坐标系一致。
  • 指北针:放在右上角或图外空白区域。
  • 坐标系说明:例如 CGCS2000、高斯克吕格投影、UTM 投影等。
  • 数据来源:便于成果交付和复核。

如果图册用于正式成果交付,建议在页面底部增加制图单位、日期、审核人等信息。

步骤八:预览 Atlas 翻页效果

配置完成后,在布局窗口中打开 Atlas 预览。使用上一页、下一页按钮检查每一页效果。

重点检查:

  • 每一页地图范围是否正确跟随要素变化。
  • 标题是否读取到了正确字段。
  • 是否有某些要素过小,导致图幅缩放过度。
  • 是否有某些要素过大,导致比例尺或注记不可读。
  • 图例、比例尺、指北针是否遮挡地图内容。
  • 导出文件名是否符合预期。

不要只看第一页。很多 Atlas 问题只会出现在后面的特殊要素上,例如狭长地块、飞地、多部件面、属性为空的记录。

步骤九:批量导出 PDF 或图片

预览确认无误后,可以选择导出 Atlas。常见输出方式包括:

  • 导出为单个 PDF:适合形成一本完整图册。
  • 导出为多个 PDF:适合按村、按地块分别提交。
  • 导出为 PNG 或 JPEG:适合汇报材料、网页展示或后续排版。

如果用于打印归档,优先选择 PDF。如果用于 Web 展示,可以导出 PNG。JPEG 适合照片和影像底图,但对线划图和文字可能不如 PNG 清晰。

常见坑:QGIS Atlas功能如何配才不翻车

坑一:启用了 Atlas,但地图范围不变

原因通常是只在 Atlas 面板中启用了图册,却没有在地图项属性中勾选由 Atlas 控制。解决方法是选中地图项,进入地图项属性,确认 Atlas 控制已启用。

坑二:导出的图册每页标题都一样

这通常是标题写成了普通文本,而不是动态表达式。应使用 [% "字段名" %] 这种形式读取当前要素字段。

如果字段名写错,标题可能为空。可以打开覆盖图层属性表,复制准确字段名再填写。

坑三:部分图幅要素被裁切

如果使用固定比例尺,较大的要素可能超出地图范围。如果使用自动范围但边距太小,也可能出现边界贴边的问题。

解决方法:

  • 提高边距比例,例如从 5% 改为 15%。
  • 对狭长区域改用横向版式。
  • 对大小差异特别大的要素分组出图。
  • 必要时单独为特殊区域制作补充图。

坑四:动态文件名导出失败

如果输出文件名中包含非法字符,系统可能无法保存文件。建议先用字段计算器生成一个干净的文件名字段,例如 atlas_name,只保留编号、下划线和中文名称。

也可以在表达式中进行简单替换,例如把空格替换为下划线:

replace("name", ' ', '_')

坑五:坐标系不合适导致比例尺和面积表达不可靠

Atlas 出图本身不强制要求投影坐标系,但如果图册涉及比例尺、距离、面积、工程精度,建议使用适合本区域的投影坐标系,而不是直接使用经纬度坐标系。

例如,中国区域常见项目会使用 CGCS2000 相关投影坐标系。若使用 EPSG:4326 经纬度坐标系,比例尺显示和距离感知可能不符合工程制图习惯。

坑六:标注在某些页面严重重叠

Atlas 每页范围不同,标注密度也不同。一个在总图上合适的标注样式,到了局部图上可能过密。

建议使用比例尺控制标注显示,或对不同级别地物设置不同标注规则。对于正式图册,可以先批量导出草稿,再针对少数问题图幅微调。

方法比较:Atlas、手动出图和图幅网格该怎么选

方法 适用场景 优点 局限
手动出图 只需要 1 到 3 张成果图 操作直观,调整灵活 不适合大量重复图幅,容易漏改标题和范围
QGIS Atlas 图册 按行政区、地块、网格、样区批量出图 自动分页、动态标题、批量导出,效率高 需要提前整理覆盖图层和字段
规则图幅网格 标准分幅、巡查网格、遥感切片索引图 图幅大小统一,便于编号和管理 不一定贴合行政区或业务对象边界
脚本批量制图 大规模自动化制图、固定生产流程 可重复、可集成到生产系统 需要 PyQGIS 或其他编程能力

如果你的需求是“每个行政区一张图”或“每个地块一张图”,优先使用 QGIS Atlas。它比手动出图稳定,也比写脚本门槛低。

如果你的需求是严格按固定大小网格出图,可以先生成网格面图层,再把网格作为 Atlas 覆盖图层。这样既能保持图幅统一,又能使用 Atlas 的批量导出能力。

检查清单:导出前逐项确认

在正式导出 QGIS地图图册之前,建议按下面清单快速检查:

  • 覆盖图层是否选对,页数是否符合预期。
  • 覆盖图层属性表中是否有稳定的名称或编号字段。
  • 地图项是否勾选由 Atlas 控制。
  • 范围缩放方式是自动边距还是固定比例尺。
  • 动态标题是否能随 Atlas 翻页变化。
  • 导出文件名表达式是否包含非法字符。
  • 图例是否只保留必要图层。
  • 比例尺、指北针、制图说明是否完整。
  • 至少抽查第一页、中间页、最后一页和几个特殊形状要素。
  • 输出 PDF 或图片的分辨率是否满足打印或交付要求。

如果图册页数很多,建议先低分辨率导出一版检查稿,确认版式和字段无误后,再导出正式成果。

FAQ:QGIS地图图册常见问题

QGIS地图图册怎么做才适合批量交付?

关键是先把覆盖图层整理好。每个要素对应一页,每个要素都应有唯一编号和清晰名称。然后在布局中使用 Atlas 控制地图范围,用动态文本生成标题,用表达式生成导出文件名。这样导出的图册更适合批量交付和归档。

QGIS Atlas功能如何配动态标题?

在布局中添加文本标签,使用表达式读取当前 Atlas 要素字段。例如字段名为 name,可以写 [% "name" %] 专题图。Atlas 翻页时,标题会自动读取当前要素的属性值。

Atlas 覆盖图层必须是面图层吗?

不必须。点、线、面都可以作为覆盖图层。但面图层最适合行政区、地块、网格这类图册,因为它的空间范围明确。点图层作为覆盖图层时,通常需要设置固定比例尺或较大的缓冲范围,否则地图范围可能过小。

QGIS Atlas 可以一次导出多个单独 PDF 吗?

可以。导出 Atlas 时可以选择按页面分别导出,也可以使用文件名表达式为每个 PDF 命名。实际项目中,按村、按地块分别导出 PDF 很常见。

为什么我的 Atlas 导出文件顺序是乱的?

通常是没有设置排序字段。可以在 Atlas 设置中启用排序,按行政代码、编号或名称字段排序。建议使用数字编号或标准行政区划代码,而不是依赖图层默认记录顺序。

QGIS地图图册能不能每页只显示当前行政区内的数据?

可以,但需要进一步配置。简单做法是用覆盖图层边界遮罩或裁剪业务数据;更高级的做法是使用基于 Atlas 当前要素的规则表达式,只显示与当前要素相交或属于当前区域的数据。对于新手,建议先完成基础 Atlas 出图,再处理按页过滤显示。

Atlas 图册导出很慢怎么办?

常见原因包括影像底图太大、图层太多、标注计算复杂、输出分辨率过高。可以先关闭不必要图层,降低草稿导出分辨率,简化标注规则,或把大型矢量数据建立空间索引后再导出。

结论:先把覆盖图层和动态字段配好

QGIS地图图册的关键不是反复点击导出,而是把 Atlas 的三个核心环节配置正确:覆盖图层决定页数,地图项联动决定范围,动态表达式决定标题和文件名。

如果你刚开始学习 QGIS Atlas功能如何配,建议先用一个包含 5 到 10 个要素的小图层练习,跑通“启用 Atlas、控制地图范围、动态标题、批量导出”这条流程。等流程稳定后,再用于完整行政区图册、地块图册或项目成果图批量生产。

实际工作中,最可靠的做法是:先整理字段,再设计版式;先预览抽查,再正式导出。这样做出来的 QGIS地图图册既高效,也更容易通过检查和交付。