QGIS地图图册怎么做?Atlas功能如何配?
wowwwai
GIS研习社 · 工具流程与项目排障
你是不是导出几十张图导到手抽筋?Atlas就是你的自动化救星
上周一个研究生私信我:‘老师,我要为全县200个村各做一张规划图,手动切换、导出、命名…三天过去了还没做完,眼睛都快瞎了。’这场景太熟悉了——2018年我在某省国土空间规划项目里,也干过这种苦力活。直到我发现了QGIS的Atlas功能,从此告别重复劳动。

Atlas不是什么神秘黑科技,它本质上就是一个“智能翻页器”:你设定好“按哪个字段翻页”,它就自动遍历每个要素,逐个渲染、导出成独立地图。就像你给200个学生每人发一份定制试卷,Atlas就是那个不知疲倦的教务老师。
三步搭建你的第一个地图图册
别被“图册”这个词唬住,配置Atlas比你想的简单得多。核心就三步:选驱动层、设页面、调输出。我们以“分乡镇输出人口密度专题图”为例:
- 选驱动层(Coverage Layer):在打印布局中打开Atlas面板,勾选“生成Atlas”。然后选择包含所有乡镇边界的面图层——这个图层决定了你要“翻多少页”。每个乡镇就是一个页面。
- 绑定页面名称字段:在“Page name”下拉框中,选择乡镇名称字段(如
town_name)。这样每张图右下角就能自动打上“XX镇人口密度图”的标题,再也不用手动改名。 - 锁定地图范围:选中布局里的地图项,在Item Properties里勾选“Controlled by Atlas”。这样每次翻页时,地图会自动缩放到当前乡镇的边界——相当于给每个乡镇拍一张“特写”。
进阶技巧:让图册更智能、更美观
基础配置只能解决“有没有”,要做出专业级图册,还得靠这些细节打磨:
- 动态标题与标注:在文本框里输入表达式
[% "town_name" %],就能让标题随页面自动变化。同理,用[% round("pop_density",1) %]可以在图例旁显示当前乡镇的人口密度值。 - 过滤脏数据:如果某些乡镇数据缺失不想输出?在Atlas面板的“Filter”里写表达式,比如
"pop_density" IS NOT NULL,一键跳过无效页。 - 批量导出PDF/图片:菜单栏点“导出为PDF”,勾选“导出Atlas”,QGIS就会自动生成200个单独PDF文件,文件名自动带上乡镇名——这才是真正的解放双手。
避坑指南:那些让我踩过雷的Atlas陷阱
第一次用Atlas时,我曾导出一堆空白页。后来发现是坐标系没统一——驱动层和底图不在同一个CRS下,导致“特写镜头”对不准。还有一次,客户抱怨图例文字重叠,原来是忘了在“Item Properties”里取消地图项的“Lock layers”选项,导致所有页面共用同一套图层可见性。
| 常见报错 | 原因 | 解决方案 |
|---|---|---|
| 导出全是空白 | 驱动层与底图坐标系不一致 | 统一使用WGS84或当地投影 |
| 图例/标注不更新 | 未启用“Data defined override” | 在文本属性中绑定字段表达式 |
从今天起,把时间花在思考上,而不是点鼠标上
Atlas的本质,是把GIS分析师从机械劳动中解放出来。当你不再为导图熬夜,才有精力去优化配色方案、调整符号系统、甚至给每个乡镇加一句人文注解——这才是技术该有的温度。
你用Atlas做过最疯狂的项目是什么?是给全国3000+县级单位出图?还是给某个城市500个社区做防疫地图?在评论区留下你的故事,点赞最高的三位,我会送你《QGIS自动化制图秘籍》电子书一份!