简介这份通过审图号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:3857Web 墨卡托因为在线底图几乎都是 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% 以上既能表达业务数据又保留了官方版图特征。如果你想在这个方向上长期做下去建议把“合规”两个字刻进工作流的第一环而不是最后一环。每次配准前先确认控制点均匀每次导出前先跑一遍自检清单。这套方法帮你省下的不是一两次返工而是整个交付流程的信任成本。希望帮到你。本文还有配套的精品资源点击获取