1. 课程导入与场景锚定
在GIS生产一线,制图往往不是“做一张图”,而是“做一批图”。一个县有上百个行政村,每个村要出一张规划图;一个监测站有连续12个月的遥感影像,每月要出一张变化图;一本专题地图册包含几十个图幅,每幅的图名、图例、比例尺都要随数据变化。如果逐张手工排版,不仅耗时,而且极易出现图名写错、图例漏改、比例尺不一致等低级错误。批量制图要解决的核心问题,就是把“重复的排版动作”交给程序,把“判断与设计”留给人。
QGIS提供了两条互补的技术路径。第一条是地理处理模型(Graphical Modeler),它把多个处理算法(如裁剪、投影、字段计算、导出)串成一条可复用的处理链,输入输出以参数形式暴露出来。第二条是地图集与批量导出(Atlas / 批量渲染),它让一个打印布局(Layout)绑定一份“覆盖层要素”,按要素逐条驱动地图范围、图名、属性表等元素,从而一次输出多幅成品图。二者结合,就形成了本课程的主线:用模型准备“每幅图各自的数据”,用布局与地图集完成“每幅图各自的排版”,最后批量导出并校验。
上图把本课程的技术链路和三类典型场景放在一起,便于先建立整体印象。需要强调的是,模型与地图集不是二选一,而是分工不同:模型擅长“把原始数据加工成每幅图各自需要的图层”,地图集擅长“把同一套版式套用到多个要素上”。如果数据本身已经是一村一图层、一期一文件,模型可以简化甚至省略;如果所有村共用一个图层、只是按属性筛选,那么地图集配合表达式就能完成大部分工作,模型只负责必要的预处理。
核心概念与工具链
先厘清几个容易混淆的概念。地理处理模型是一个以 .model3 为扩展名的可视化处理链,模型中的每个算法节点都有输入参数和输出参数,模型整体可以像普通算法一样被调用,也可以暴露参数供批处理使用。打印布局是制图的“版式容器”,包含地图项、图名、图例、比例尺等元素。地图集是布局的一个功能开关,开启后需指定一个“覆盖层图层”,布局会按该图层的要素逐条渲染,并通过 @atlas_feature、@atlas_pagename 等变量把当前要素信息注入到图名、表达式和地图范围中。批量导出则是把地图集渲染结果按页写出为 PDF、PNG 或 SVG 的过程。
工具链上,模型编辑器位于“处理 → 图形化模型器”,布局管理器位于“工程 → 布局管理器”,地图集设置在布局的“地图集”面板中,批量导出在布局窗口的“布局 → 导出为图像/PDF”里选择“导出地图集”。这三处是本课程后续反复操作的核心入口。
一个可参照的教学示例
假设某县有 8 个行政村,需要为每个村输出一张“村庄规划示意图”,要求图名包含村名、图例显示用地分类、比例尺统一为 1:10000、输出 PNG 且文件名为“村名_规划图.png”。这是一个典型的“一要素一图”任务。合理的做法是:准备村界图层(含 村名 字段)和用地分类图层;在模型中完成用地图层按村界裁剪(若数据量大)或直接使用全量数据配合地图集的范围过滤;在布局中把图名设为表达式 '【' || "村名" || '】村庄规划示意图',地图集覆盖层选村界图层,地图项勾选“受地图集控制”;导出时选择地图集导出,文件名表达式设为 "村名" || '_规划图'。这样一次操作即可得到 8 张命名规范、版式一致的成品图。
学习路径与常见误区
本课程后续将按“模型搭建 → 布局与表达式 → 地图集绑定 → 批量导出 → 质检与复用”的顺序展开。初学者最常见的三个误区是:其一,把地图集当成“自动排版万能钥匙”,忽略了覆盖层字段的规范性,导致图名错位;其二,在模型中硬编码文件路径,换一台机器或换一批数据就失效,正确做法是把路径和字段名暴露为模型参数;其三,导出后不做抽检,空图幅、范围越界、图例缺项往往在批量结果中才暴露。建议在正式批量前先用 2~3 个要素试跑,确认图名、范围、图例、命名四项无误后再全量导出。
把这一节记住一句话即可:批量制图的本质是“用稳定的字段驱动稳定的版式”,模型负责让数据稳定,地图集负责让版式稳定,导出与质检负责让结果可信。后面的章节,就是把这句判断拆成可操作的步骤。