简介:这份通过审图号GS(2022)1873号正式审查的中国标准地图矢量数据包,面向GIS开发、测绘制图、数据分析与学术研究场景,为需要规范中国版图底图的用户提供权威边界数据与完整属性信息。压缩包共14个文件,仅584KB,包含两套成组的shapefile要素数据(shp/shx/dbf),对应的prj投影文件与cpg字符编码文件,并附qmd地图文档及json配置文件。其中dbf记录河流、道路、居民点等要素属性,shp/shx保存几何边界与索引关系;prj与cpg确保不同软件中的投影和文字显示准确,JSON则便于数据交换与更新维护。目前已有466人学习下载。整套数据既支持制图、地理信息存储与展示,也可用于科研分析和公共信息发布;借助qmd/JSON配置和元数据,使用者无需重新处理边界即可加载到主流GIS平台,能有效减少底图溯源、坐标转换与编码设置环节,提升项目规范性;无论是Web地图服务、专题制图还是教学科研,都是可直接使用的可靠底图,初学者也能通过qmd与prj等配置了解常见GIS数据组织方式。
1. 中国标准地图与审图号 GS(2022)1873号到底是什么
做中国地图可视化的人,最容易在最后一步翻车:自己用开源数据画了国界,结果版图缺了南海诸岛、国界线走向不对,审图直接被退回。这也是为什么我现在做任何对外交付的图,底图一律用“中国标准地图”,比如审图号 GS(2022)1873号这一版。它是对外公开、免费下载的官方审定地图,自带正式审图号,只要你不动国界线和版图要素、发布时标注审图号,就能合规使用。这篇笔记就围绕这一版式地图讲清楚三件事:审图号意味着什么,怎么把它转成 GIS 能用的底图并叠加业务数据,以及我踩过的五类坑。
2. 审图号 GS(2022)1873号 是怎么一回事:先看懂再动手
2.1 审图号的读法:GS、年份、序号各代表什么
总有人以为审图号只是下载链接里的一个随机编号,其实它是地图内容通过法定审核后获得的一个正式编号,等同于这张地图的“合规身份证”。GS 是“国审”二字的拼音缩写,括号里的 2022 表示批准年份,1873 是当年的顺序号。换句话说,这张地图是 2022 年度第 1873 个通过审核的地图版本。
审核的内容不是配色好不好看,而是国家版图要素是否完整、国界线走向是否准确、岛屿和附图是否齐全、地图要素是否符合公开地图规范。所以你在官方平台下载标准地图时,看到的每一张图都有自己的审图号,下载页面上也会同步展示。这个编号要印在图上,或者在你发布使用这张地图的报告、论文、大屏截图时,在适当位置标注“地图审图号:GS(2022)1873号”。
有一点要特别注意:审图号是对应具体图幅和版式的,不是这系列地图的统称。同样是 2022 年的标准地图,不同比例尺、不同专题版本可能是不同审图号。这篇笔记提到的 1873 号,指的是 2022 年版中国全图那一批。你实际下载时确认一下下载页面显示的审图号和文件名称是否一致,避免引用出错。
2.2 为什么外部交付我默认用标准地图当底图
很多开发者的第一反应是:我自己有省市边界矢量数据,为什么还要用一张 JPG 当底图?问题就出在“自有数据”的合规性上。
| 底图来源 | 合规风险 | 前期工作量 | 适用场景 |
|---|---|---|---|
| 自绘国界轮廓 | 高,国界线走向和岛屿极易出错 | 高 | 内部原型草稿 |
| 开源边界数据 | 高,来源不明、未经过审图 | 低 | 技术预研、本地开发 |
| 标准地图官方图 | 低,官方审定并带审图号 | 低,需要做一次配准 | 论文配图、媒体图、大屏、对外交付物 |
我一般会把标准地图当成“底图层”,而不是“数据层”。它能帮你把国界线、南海诸岛、审图号这些合规问题一次性解决,你只需要在它上面叠加自己的业务数据。换句话说,标准地图解决的是“地图本身合法”的问题,你要解决的是“业务数据表达正确”的问题。
但标准地图也有边界:它是静态图,不适合做需要缩放、平移的动态 Web 应用;它不提供地市级边界;它的注记是官方样式,不允许删除修改。如果你的需求是做一个可交互的中国地图网站,那正确路径不是拿这张标准地图硬改,而是使用带审图号的在线地图服务,或者自己制图后再送审。判断标准很简单:凡是“对外发布的地图样式的成品”,都绕不开审图这件事。
2.3 格式选型:JPG 做分析、EPS 做印刷、TIF 做确认
下载这版地图时,页面上一般提供多种格式。很多人直接默认下载 JPG,但在正式工作流里,格式选错会带来后续一堆问题。
JPG 是最常用的,分辨率高、体积适中,适合直接拿来做地理配准和叠加分析。EPS 是矢量格式,适合导入排版工具做印刷级输出,但它在 GIS 软件里不能直接当栅格底图用,需要先转成 TIFF。TIF 可能是栅格原图,也可能带空间参考,关键是下载后先用 gdalinfo 或 QGIS 看一下有没有坐标信息。我实际遇到的情况是:官方下载的 TIF 很多时候并不自带地理参考,最终还是要靠配准这一步把坐标加上。
所以我的选型习惯是:进 GIS 分析用 JPG;进排版软件做印刷图用 EPS;想省去配准直接对照坐标验证,才检查 TIF。无论选哪个,第一步都是把图的坐标空间定下来,这就是下一章的事。
3. 在 QGIS 里把 JPG 变成带坐标系的底图:配准与叠加
3.1 三步配准:控制点、多项式、导出 GeoTIFF
配准这件事听着有点玄学,其实就是告诉软件:图上这个像素点对应现实中的哪个经纬度。官方标准地图的图面上印有经纬网,这给了我们最可靠的配准依据:用经纬网的交点作为控制点。
常见做法是先在 QGIS 里手工配准,因为它能让你直观看到每个控制点的残差。操作路径是:栅格菜单 -> 地理配准器 -> 打开待配准图像 -> 添加点。缩放到底图上,找某条经线和某条纬线的交叉点,先在地图上点击,再在弹出的对话框里输入这个点对应的经纬度,就是一个控制点。
如果你习惯用命令行批量处理,可以用 GDAL 完成同样的工作。下面这段命令是模板,重点是 -gcp 参数的写法:从左到右依次是像素 X 坐标、像素 Y 坐标、经度、纬度。
# 进入地图文件所在目录,确认图像实际尺寸 identify "GS(2022)1873.jpg" # 从图面经纬网上读出控制点经纬度,从图像工具里量出像素坐标 # 按“像素X 像素Y 经度 纬度”的顺序填写 gdal_translate -of GTiff \ -gcp 960 1383 80.0 40.0 \ -gcp 7080 1410 130.0 40.0 \ -gcp 960 5160 80.0 20.0 \ -gcp 7080 4890 130.0 20.0 \ "GS(2022)1873.jpg" gcp.tif # 选择目标坐标系 CGCS2000 经纬度,一阶多项式重采样 gdalwarp -r cubic -t_srs EPSG:4490 -order 1 \ gcp.tif "GS(2022)1873_georef.tif"这里要强调:上面命令里的 4 个控制点是格式演示,绝对不要照抄,因为不同下载版本图幅范围可能不同,经纬网交点位置也不同。正确做法是在 QGIS 配准器里逐个添加控制点,让它自动把像素坐标和经纬度对应起来;如果你非用命令行不可,就需要先用图像工具把鼠标停留位置的像素坐标读出来,再对照图上的经纬网标注填入数值。
配准完成后,要看配准报告里的 RMS(均方根误差)。一阶多项式配合 10 个左右均匀分布的控制点,RMS 控制在 1 像素以内是完全可以做到的。如果 RMS 偏大,优先删掉偏差最大的点,而不是盲目加更多点。标准地图的经纬网很规整,残差大往往意味着某个点的经纬度填错了。
3.2 目标坐标系:4490 还是 3857,别随手选
配准时一定会问到目标坐标系,这一步很多人随便选,后面叠加数据时才发现对不齐。标准地图基于中国官方坐标系 CGCS2000,所以配准时最稳妥的目标 CRS 是 EPSG:4490,也就是 CGCS2000 的地理坐标系,单位是度。
如果你的成果要直接丢给前端做 Web 地图,比如叠加到在线瓦片底图上,那就需要输出成 EPSG:3857(Web 墨卡托),因为在线底图几乎都是 3857。但要注意:3857 在高纬度地区面积变形严重,不能拿它量算面积和距离。
还有一类场景是印刷出版,常见做法是配准到 4490 后,再按需要投影到高斯克吕格或兰伯特等角圆锥投影。我的经验是:分析、叠加、验证全部在 4490 下完成,只有最后发布时才复制一份转换成发布坐标系。这样不会因为中途反复投影导致精度损失。
3.3 叠加业务数据:点、线、面怎么对齐
配准完成后,下一步就是把你的业务数据压到这张底图上。这里最容易犯的错是:把图层拖进来看到图形就以为成功了,完全没有检查坐标系是否一致。
在 QGIS 里加载业务图层,比如一个 CSV 点文件,要确保图层的 CRS 是 EPSG:4490。如果原始数据是 WGS84 的经纬度坐标,需要先给图层赋予 EPSG:4326,再重投影到 4490,不能直接改图层 CRS,否则坐标值不变但坐标含义变了。
检查对齐最简单的方法是加载一份已知位置的点,比如某条河流的采砂点、某个城市的监测点,看它是不是落在正确的省区内。如果整体偏移,先检查重投影方向;如果个别点位偏,可能是数据源精度问题。下面这段脚本可以把当前地图画布导出成一张成品图,适合检查叠加效果。
# 在 QGIS Python 控制台运行:导出当前画布为 PNG from qgis.core import QgsMapSettings, QgsMapRendererParallelJob from qgis.core import QgsProject from PyQt5.QtCore import QSize layers = [layer for layer in QgsProject.instance().mapLayers().values() if layer.isValid()] settings = QgsMapSettings() settings.setLayers([layer.id() for layer in layers]) settings.setDestinationCrs(layers[0].crs()) settings.setExtent(iface.mapCanvas().extent()) settings.setOutputSize(QSize(4200, 3200)) job = QgsMapRendererParallelJob(settings) job.start() job.waitForFinished() job.renderedImage().save("output_preview.png", "png")脚本的逻辑是:把当前画布里的所有可见图层逐层取出,设置画布范围和输出尺寸,然后用并行渲染任务生成图像并保存。setDestinationCrs 使用第一个图层的坐标系,所以运行这段脚本前要先确认所有图层 CRS 一致;不一致的画布,导出后会出现错位。
4. 用标准地图做一张可交付的分级统计图:配色、排版与导出
4.1 先想清楚:要省界矢量,还是只做叠加色块
很多人拿到标准地图后的第一反应是:把省界描出来,做成矢量,这样就能给每个省填色做分级统计图。我不建议你直接对官方地图做数字化描边,原因有三个。第一,工作量巨大,34 个省级行政区逐条描边界,一天都描不完。第二,描出来的省界如果跟官方图面不完全一致,反而造成新的合规风险。第三,标准地图的原始图面已经包含了省界,你真正缺的不是界线,而是“给省区填颜色的能力”。
我常用的替代方案是双层结构:标准地图垫底,半透明的业务数据图层悬浮在上面。这样省界、国界、注记全部来自官方图面,你的图层只负责表达业务指标,两者互不干扰。如果确实需要省界矢量做区域选中或点击交互,那就另找一套经过核验的省界数据做内部使用,不要把数字化描边这个步骤做进对外交付物里。
4.2 给业务图层做分级配色
假设你已经有一份省级统计数据,字段名是 value。选中业务图层,右键打开属性面板,切换到符号化标签页,选择分级符号渲染。在值选择框里选 value,然后在分箱数量里填 3 到 7 类,模式推荐用自然断点或者等量分箱,点击分类后调整每个区间的颜色。
如果希望用代码批量完成这个操作,下面这段 PyQGIS 脚本可以按固定阈值生成三个级别。
# 在 QGIS Python 控制台运行:按 value 字段做三级渲染 from qgis.core import QgsProject from qgis.core import QgsGraduatedSymbolRenderer, QgsSymbol, QgsRendererRange layer = QgsProject.instance().mapLayersByName("province_data")[0] ranges = [] for label, lower, upper, color in [ ("低", 0, 20, "#eaf3fb"), ("中", 20, 50, "#8ec1e0"), ("高", 50, 999999, "#1f6fb2"), ]: symbol = QgsSymbol.createSimple({"color": color, "outline_color": "#ffffff"}) ranges.append(QgsRendererRange(lower, upper, symbol, label)) renderer = QgsGraduatedSymbolRenderer("value", ranges) layer.setRenderer(renderer) layer.triggerRepaint()这段代码的逻辑是:先根据图层名取到要素图层,然后逐个生成三个区间,每个区间使用不同的填充色,最后把渲染器应用到图层上。注意 QgsRendererRange 的构造参数顺序是下界、上界、符号、标签,不同小版本可能有差异,如果报错就检查这一行的参数顺序。配色上浅色到深色表达从小到大的数值,边框色用白色,分隔感更强。
分级渲染完成后,把业务图层的透明度调到 60% 左右,这样能同时看到自己的色块和底图上的官方省界。透明度不是越低越好,太低会看不清业务数据,太高会把省界盖死,这直接关系到合规性。
4.3 排版导出:布局、比例尺与审图号的处理
到这一步,地图已经可以在画布里看了,但对外交付还需要排版输出。在 QGIS 里新建打印布局,把地图项拖进去,然后锁定比例尺。锁定比例尺的目的是防止导出时地图范围轻微变化导致比例失真。
布局里需要放四个元素:图名、图例、比例尺、审图号信息。审图号的问题在这里最容易被忽略。如果你的布局只是裁取了底图的一部分,没有完整展示图面上原有的审图号注记,那就要在布局空白处手动加一个文本框,写明“地图审图号:GS(2022)1873号”。
导出设置里,PNG 建议 300dpi,色彩深度选择 24 位;如果要投稿或印刷,直接导出 PDF 矢量输出。导出后的第一件事不是看配色,而是放大看南海诸岛是否完整、审图号是否可读。
5. 避坑:用标准地图做交付最容易翻车的 5 个位置
5.1 配准后边界整体偏了几十米到几百米
现象:把业务点叠加到配准后的地图上,局部地区对得很准,但图面另一侧明显偏移,偏移方向一致,像是整张图被轻微拉伸或旋转。
原因:控制点分布太集中,全挤在图的某一侧;或者把图廓外的经纬网刻度也当成了主图控制点。多项式拟合理论上可以纠正,但控制点覆盖范围不足时,没有数据约束的区域就会偏。
解决:重新配准,控制点在整张主图范围内均匀铺开,至少取 10 到 12 个点。我习惯的做法是先把主图区域四角和中心点选上,再在每个象限各补两个经纬网交点。配准后看每个点的残差,残差超过 1 像素的点优先删除而不是强留。
另外,如果这张标准地图包含右下角的南海诸岛附图,不要试图用同一个多项式拟合整张图。主图和附图的分辨率比例不同,强行一起配准会在附图上产生形变。我一般会把主图和南海诸岛附图裁成两张图分别配准,输出时再拼回原位,这样两个区域的精度都可控。
5.2 南海诸岛附图在导出时丢失或被裁掉
现象:做局部放大的省区图时,图面只框住了主图范围,南海诸岛的小附图不在地图项视野内,导出的成品图上完全没有南海诸岛。
原因:打印布局的地图项范围裁剪时,只拖选了主图区域,没有包含右下角附图。这个问题在局部放大图里出现频率最高,因为设计者会下意识只关心自己业务相关的区域。
解决:对外发布的图,要么直接输出完整图面,保证附图与主图同时可见;要么在主图外的合适位置插入南海诸岛示意附图,并且保证附图与主图比例尺一致性说明。标准地图的图廓本身就是完整的,我建议外部交付一律不裁图,按官方图面整体输出,只在图上叠加数据层。如果非要放大局部,必须在图面合适位置保留等比例南海诸岛插图,并加注说明。
5.3 EPS 导入排版工具后中文字体变成方框
现象:把下载的 EPS 格式导入排版软件后,境内的中文注记全部变成方块,或者字体被替换成奇怪的默认字形。
原因:EPS 里的文字依赖系统字体库,本地缺少它引用的中文字体时,排版软件会用默认字体替换,于是出现乱码和方框。
解决:临时方案是在排版软件里选中文字全量替换成系统中文字体;彻底方案是在导入前先把 EPS 转成路径,也就是把文字转成曲线,这样不再依赖字体。但转曲线后文字变成图形,之后想改字就不可能了。如果你只是做简单标注叠加,我更推荐直接用配准好的 JPG 出图,不要在排版阶段引入 EPS。
5.4 WGS84 的业务数据叠到 CGCS2000 底图上对不齐
现象:GPS 采集的业务点叠加到标准地图后,整体偏东或偏南,偏差大约几十米到几百米,缩放级别越高越明显。
原因:底图配准到 EPSG:4490,也就是 CGCS2000 坐标系;业务数据却是 WGS84 坐标系。两者使用的椭球基准不同,虽然差异在同一个数量级内,但放大到高分辨率底图上依然能看出错位。
解决:把业务数据先从 WGS84 重投影到 CGCS2000。在 QGIS 里,先用“图层属性 - 源”确认图层原始 CRS,如果是 EPSG:4326,导出或用工具重投影到 EPSG:4490,再进行后续的编辑和叠加。注意不要手工改图层 CRS,那只改变标注不变换坐标,是新手最常踩的坑。
5.5 改了图面内容导致审图号失效
现象:为了让图面更干净,把底图上不需要的注记删掉,或者把省界加粗覆盖,发布后却被指出不合规。
原因:审图号只对官方发布时的原图有效。任何删除官方注记、掩盖国界线、改变图廓范围、叠加遮挡版图要素的行为,都让这个审图号不再适用于修改后的图面。
解决:底图保持原样,所有业务标记用独立图层添加。检查标准有三个:国界线在成品图上肉眼可辨、南海诸岛完整显示、原审图号注记未被遮挡。如果确实需要深度定制,比如去掉官方注记、重新配色,那就不要再用这张审图号,按主管部门要求走地图送审流程。
6. 最后:我留给自己的一条制图习惯
做了几年地图交付后,我最大的感受是:出图不是终点,能不能通过审核才是。这些年被打回的图,十有八九不是业务数据算错了,而是版图要素出了问题。所以我从某次被退回后就开始坚持一个习惯:每张要对外发布的图,导出后先不看整体效果,而是放大检查三个局部——右下角的南海诸岛、图廓角落的审图号、以及国界线是否被图层遮挡。
为了方便执行,我在工位屏幕边上贴了一张自检清单,每一张图导出前过一遍:
| 检查项 | 通过标准 |
|---|---|
| 国界线 | 与官方图面一致,未被数据图层视觉遮挡 |
| 南海诸岛 | 主图与附图保持比例并完整显示 |
| 审图号 | 原图审图号可见,或在图面外显式标注 |
| 改动程度 | 只叠加数据,不删除不遮盖官方要素 |
| 坐标系 | 交付说明中标注投影与坐标基准 |
这张表看起来简单,但每一条都对应一次真实翻车。比如“改图面”那条,我曾经为了让数据色块更醒目,把透明度调低,结果国界在成品上完全看不出来,审图直接退回。后来所有叠加图层的透明度都控制在 40% 以上,既能表达业务数据,又保留了官方版图特征。
如果你想在这个方向上长期做下去,建议把“合规”两个字刻进工作流的第一环,而不是最后一环。每次配准前先确认控制点均匀,每次导出前先跑一遍自检清单。这套方法帮你省下的不是一两次返工,而是整个交付流程的信任成本。希望帮到你。
本文还有配套的精品资源,点击获取