简介:全国1:5万接图表是面向GIS从业者、规划人员及地理信息学习者的常用基础数据,配合ArcGIS可完成地图显示、要素编辑、空间查询与专题制图等任务。资源压缩包共7个文件,包含SHP矢量主文件、DBF属性表、PRJ投影信息以及SBN/SBX空间索引等,能够直接在ArcMap或ArcGIS Pro中加载,适用于区域研究、土地利用分析、交通网络叠置等场景。压缩包整体仅1.14MB,轻量高效,便于快速获取与日常调用。目前已有782人学习,是入门和实战中节省造图时间的实用素材。基于这份数据,使用者可以进一步结合ArcToolbox进行缓冲区分析、叠加分析,或利用ArcGIS Pro开展三维可视化与Web发布,有效支撑从基础查询到复杂空间建模的完整流程。 做 GIS 项目最怕什么?不是数据量大,而是手里一堆标准分幅图,却说不清每一幅到底在哪、边界怎么接。前几天帮朋友整理土地调查资料,对方甩过来一批扫描版的 1:5 万地形图,想拼成一张全国接图表,我直接在 ArcGIS 里花了半小时就把网格、图幅号、索引关系全理清了。全国 1:5 万接图表,本质上就是一张把标准分幅图幅位置画清楚的索引图,有了它,找图、裁剪、规划路线、成果归档都方便得多。这篇就把我用 ArcGIS 做接图表的完整思路、操作步骤和踩过的坑写出来,适合刚从学校出来还没碰过分幅的 GIS 新手,也适合被图幅编号搞到头大的项目执行人员。
1. 一张接图纸背后的分幅逻辑:为什么1:5万按这个规矩切
1.1 接图表到底解决了什么问题
想象一下,你手里有省里下发的几十个 1:5 万标准分幅影像文件,文件名是 J50E001024、J50E002024 这种编号。如果你不懂分幅规则,根本不知道这些图覆盖了哪个县、哪些乡镇,更别提按行政区批量裁剪或统计覆盖情况了。
接图表解决的就是这个空间索引问题。它把整个区域的图幅按标准分幅线切好,每个格网都带编号、经纬度范围、图名,一眼就能看出数据覆盖了哪里、缺口在哪。尤其在做外业踏勘时,纸质接图表配合 GPS 定位,能快速锁定你要找的那一幅;在数据库建设时,接图表配合属性查询,能自动找出缺失图幅、重复图幅,避免数据冗余。
我刚入行那年,为了找某县的 1:5 万影像,把十几个文件挨个加载进 ArcMap 看范围,折腾了一下午。后来用接图表管理成果,按图幅号一点一个准,效率完全不是一个级别。
1.2 新版图号与旧版图号的区别
要做接图表,首先要搞清楚 1:5 万标准分幅的数学基础。国家标准里,1:5 万图幅的经差是 15 分(0.25 度),纬差是 10 分(约 0.1666667 度)。在每个 1:100 万图幅内,横向分 24 格,纵向也分 24 格,所以一个 1:100 万图幅包含 576 个 1:5 万图幅。
新版图号(GB/T 13989-2012)由四段组成:1:100 万行号字母加列号数字、比例尺代码 E、图幅列号 3 位、图幅行号 3 位。比如 J50E001024,J50 是 1:100 万图幅编号,E 代表 1:5 万,001 是列号(从西到东递增),024 是行号(从北到南递增)。
旧版图号就乱多了,像 J-50-24-B,中间是 1:10 万图幅序号,最后是 1:5 万在 1:10 万里的四角位代码。很多老数据还用旧图号,如果直接按新规则拼接,必然出错。所以开工前先确认资料来源,统一图号标准,这一步能省掉后面很多坑。
2. ArcGIS里生成1:5万图廓网格的完整操作
2.1 选定范围与坐标基准:CGCS2000还是WGS84
坐标系选择决定接图表能不能和你现有数据精确套合。国内标准图幅在法规层面已经全面使用 CGCS2000,但很多第三方数据和在线底图还是 WGS84。两者差异在地图尺度上只有几十厘米到一两米,做接图表这种索引图基本看不出来,但做高精度分幅成果时不能混用,否则图廓与影像边界会有一道肉眼可见的错缝。
我的习惯是:如果项目数据是 CGCS2000,接图表就用 GCS_CGCS2000 生成;如果是外业手机采集或 Google Earth 参考,就用 GCS_WGS_1984。生成渔网时直接在经纬度坐标系下建,不要先投影到平面再建,因为标准分幅线是经纬线,在投影坐标系里画出来会变成曲线,和真实图廓对不上。
范围方面,全国陆地 1:5 万接图表的经纬范围大致从东经 73 度到 135 度、北纬 18 度到 54 度。如果只做局部省份,可以用目标区域的最小外接矩形,稍微外扩一个图幅的余量,避免边缘图幅被切半。
2.2 用Create Fishnet生成15分乘10分的经纬网
ArcGIS 里生成规则网格最方便的工具是 Create Fishnet(数据管理工具箱)。打开工具后,关键参数这样填:
- 输出要素类:放到文件地理数据库里,比如
C:/gis/figchart.gdb/fig50k - 模板范围:手动输入最小经度 73,最小纬度 18,最大经度 135,最大纬度 54
- 像元宽度:0.25(也就是 15 分)
- 像元高度:0.1666666667(也就是 10 分)
- 几何类型:POLYGON
行数和列数不需要手工填,ArcGIS 会根据范围自动计算。这里有个容易被忽略的细节:Create Fishnet 生成的要素类默认没有坐标系,所以生成后要立刻用 Define Projection 给它定义成 GCS_CGCS2000 或 GCS_WGS_1984,否则后续加载到数据框里,因为坐标系未知,图层可能显示不出来或跑到错误位置。
另外,如果只需要陆地范围内的图幅,可以先用全国省级行政区面数据对网格做裁剪。用 Clip 工具,把落入国界内的图幅保留下来,再针对边界上被切成畸形的图幅做识别清理,留下真正有用的完整图幅。
2.3 把渔网整理成图廓要素
渔网生成后,它还只是一堆普通面要素,需要整理出图廓线和角点,方便后续标注和空间分析。我通常做三步:
第一步,用 Polygon To Line 把面转成线,得到每个图幅的四条边,重点用于生成图廓线。注意记得保留面的 FID 字段,方便后续挂接图幅号。
第二步,用 Feature Vertices To Points 把面的角点提取出来,并勾选 ALL 选项,能拿到四个角点。这些角点坐标就是每个图幅的经纬度范围端点,可以配合 Add XY Coordinates 工具把经纬度写进属性表。
第三步,给面要素添加几个常规字段,比如 MapNo(图幅号)、MapName(图名)、LonMin、LatMin、LonMax、LatMax。这些字段会在下一步批量计算图幅号时用到。
整理完之后的图层,符号系统按分类设成 Categorized,用 MapNo 做唯一值分类,每个图幅一个颜色,视觉效果和真正的接图表就很接近了。
3. 图幅号、图名与相邻图幅关系的自动批量写入
3.1 图幅号编码规则拆解
批量生成图幅号,核心是理解 1:5 万图幅号每一位是怎么算出来的。
先说 1:100 万图幅编号。行号从赤道开始往北每 4 度一行,依次是 A、B、C……一直到 V;列号从西经 180 度起算,每 6 度一列,从 1 到 60。比如东经 116 度、北纬 39 度,算出来 1:100 万行号是 J(39/4 取整 9,对应 J),列号是 50((116+180)/6 取整 49,再加 1),合起来就是 J50。
再说 1:5 万图幅在 1:100 万图幅内的行列号。列号从 1:100 万图幅西边经线起,往东每 15 分一列,001 到 024;行号从 1:100 万图幅北边纬线起,往南每 10 分一行,001 到 024。最后拼上比例尺代码 E,就得到 J50E001024。
这个规则用熟了以后,看到任何一个图幅号,心里就能大概估计出它在中国的大致经纬度位置,反向也能根据经纬度推出图幅号。对做测绘和 GIS 的人来说,这是基本功。
3.2 字段计算器批量生成图幅号的Python写法
拿到网格面后,如果逐个手填图幅号,几千个图幅能填到崩溃。正确的做法是用字段计算器批量算。前提是先有每个网格的中心点坐标,可以用 Add Geometry Attributes 工具直接添加 POINT_X 和 POINT_Y 字段,代表网格中心点的经纬度。
然后在字段计算器里选择 Python 解析程序,代码块写:
import math def fig_no(lon, lat): # 1:100万图幅列号和行号 col_m = int((lon + 180) / 6) + 1 row_m = int(lat / 4) row_char = chr(ord('A') + row_m) # 1:100万图幅的西南角经纬度 lon_m_min = (col_m - 1) * 6 - 180 lat_m_max = (row_m + 1) * 4 # 1:5万图幅在1:100万图幅内的列号、行号 # 经差15分=0.25度,纬差10分=0.1666667度 eps = 1e-7 col_s = int((lon - lon_m_min) / 0.25 + eps) + 1 row_s = int((lat_m_max - lat) / (10.0 / 60.0) + eps) + 1 # 越界保护 if col_s < 1 or col_s > 24 or row_s < 1 or row_s > 24: return "INVALID" return "{}{}E{:03d}{:03d}".format(row_char, col_m, col_s, row_s)表达式框里写:
fig_no( !POINT_X!, !POINT_Y! )这里有几个关键点。第一,1:5 万图幅北边界用lat_m_max,因为行号从北往南递增,这是最容易搞反的地方。第二,eps这个微小偏移量很关键,浮点数精度导致网格中心点落在边界上时,可能被分到错误的一行或一列,加一个 1e-7 级别的偏移能规避多数边界误判。第三,如果算出来出现 INVALID,说明网格起点或范围与标准分幅线没对齐,回去检查渔网起点。
字段计算完成后,建议抽取几个已知图幅做校验。比如某个网格的中心点经纬度位于北京附近,算出编号应该是 J50E 开头,而且经纬度范围与标准分幅线吻合,才说明算对了。
3.3 图名维护与相邻图幅自动关联
图幅号能自动算,图名就没那么简单了。国家标准图名是按图幅内重要居民地或地理名称命名的,比如“北京市”“泰山”这种,必须人工维护。在建接图表时,我通常先建一个 Excel 表,包含图幅号、图名两列,再用 ArcGIS 的 Join Field 工具按 MapNo 字段连接到接图表属性表,这样既保留自动编号,又补上图名信息。
相邻图幅引用更是外业刚需。一张图在哪,它的东、西、南、北、东北、东南、西北、西南各接哪张图,在纸质图廓外标注里都有。要在 ArcGIS 里自动生成,可以用 Spatial Join 或者 Select By Location 逐图幅查找,遍历每个图幅周围 100 米以内的邻近图幅,然后把它们的图幅号拼接成一个字符串,存成 Neighbor 字段。虽然计算量稍大,但只跑一次,后续查图方便很多。
4. 接图表的三种落地用法:裁剪影像、打印挂图、叠加底图
4.1 用接图表批量裁剪影像
接图表最实用的场景是按图幅范围裁影像。过去裁图是手动输入每个图幅的四角坐标,再一个个执行裁剪工具,几十个图幅能折腾半天。有了接图表,直接按图幅号选择目标网格,然后批量裁剪就行。
操作上分两种路径。如果只是裁几个图幅,用 Select By Attributes 选中对应图幅,再执行 Clip 工具,输入栅格选影像,裁剪范围选“所选要素”,环境设置里把捕捉栅格打开,避免输出范围差半格。如果图幅数量多,比如一个县二十多个图幅,建议把选择集导出为单独的矢量图层,再用 ArcGIS Pro 里的 Batch Clip 工具或者 ArcPy 脚本循环裁剪。
顺手提一个高频报错“按掩膜提取 error010568”。这个错误通常有两个原因:一是掩膜要素与影像坐标系不一致,导致交集为空;二是掩膜范围超过了影像范围,或者掩膜要素本身为空。解决办法是先在属性表里确认掩膜要素有选中、坐标系和影像一致,然后用“复制要素并导出”生成一份干净掩膜,避开原数据的拓扑问题。
4.2 打印版接图表的出图设置
给领导和外业人员用的接图表,通常要打印成纸质或 PDF。ArcMap 和 ArcGIS Pro 的 Layout 模式都支持。出图前要把符号系统设成便于阅读的状态:每个图幅用浅色边框,图幅号标注加粗、黑色、字号合适,必要时用 Maplex 标注引擎避免图幅号互相压盖;图名、比例尺、指北针、图例放四周。
色彩上不要用太花哨的配色。我一般用单一浅底色加黑色边框,选中的重点区域用高亮色单独标注,一眼就能抓重点。索引图和普通专题图不同,信息密度高,颜色越克制越清楚。
导出 PDF 时,如果接图表范围覆盖全国,要注意数据框的参考比例尺,避免输出文字过大或过小。一般在 1:5 万接图表全图的打印比例尺设置为 1:250 万到 1:400 万比较合适,具体按纸张尺寸调整。
4.3 叠加在线底图做“活”的挂图
静态接图表只能看图幅位置,叠加在线影像和地形底图之后,接图表就能和实际地表对上了,能直观看出每个图幅覆盖的是山地、耕地还是城市建成区。
在 ArcGIS Pro 里,添加底图可以直接用“添加底图”菜单,选择 OpenStreetMap 或 ArcGIS Online 影像。如果要加国内服务,可以添加天地图 WMTS 服务。天地图的服务地址在官网申请 token 后填进“添加数据”的 URL 对话框,选好坐标系,就能作为底图加载。
叠加后把接图表设置成“透明填充、深色边框、编号在上”的模式,缩放时既能看清地形,又能快速判断某幅数据在哪个山谷或哪条河流域。这样一张会“动”的接图表,比纸质图实用太多,在项目汇报时也更有说服力。如果数据切到 ArcGIS Pro 的三维场景里,接图表还能贴到底面高程上,二三维切换看区域覆盖,外业踏勘前的路线规划也更直观。
5. 制作与使用接图表时最容易栽的五个坑
5.1 坐标系混用,图廓悄悄偏移
接图表生成时用 GCS_WGS_1984,但影像数据是 CGCS2000,两者只差一个椭球参数,在图面上很难直接发现。实际叠加后,图廓线和影像边界之间会有一条几条像素宽的错缝,在 1:5 万这种精度的数据上,错缝可能到几十米甚至上百米,直接导致后续裁剪的影像范围偏出去。
排查方法是把接图表和影像都加载进数据框,查看“属性-源-空间参考”,确认坐标系一致。如果不一致,用 Project 工具把接图表转换到影像坐标系。需要注意的是,投影转换不要用 ArcMap 里仅“动态投影”的方式骗自己,动态投影只是显示层面套合,几何数据并没有真正转换,做空间分析时还是会出错。
5.2 范围没对齐分幅线,边缘少半幅
网格起点设置错误是接图表尺寸不对的元凶。1:5 万图幅的经度边界必须是 0.25 度的整数倍,纬度边界必须是 10 分的整数倍。如果你从 73.1 度、18.2 度这种非标准值开始生成,边缘就会出现半幅甚至残幅,最后的图幅号也会因为越界算出 INVALID。
做的时候先把范围最小经纬度向下取整到标准分幅线,最大经纬度向上取整到标准分幅线,然后再创建渔网。比如全国图用 73、18、135、54 四个整数就行。如果是局部区域,也要先检查起始值能不能被 0.25 或 0.1666667 整除,心里没底就在 Excel 里先算一遍。
5.3 行号顺序搞反,属性全错位
字段计算时最容易犯的错就是行号方向。1:5 万图幅行号从北到南递增,计算式子是(lat_m_max - lat) / (10/60) + 1。有人想当然用(lat - lat_m_min) / (10/60) + 1,结果整个接图表的行号上下颠倒,南边的图幅全变成北边的编号。
发现这种错位,不用急着删数据重来,看一下 INVALID 比例和已算出的图幅号范围就能判断。一般正确结果里,接图表左上角图幅号行号小,右下角行号大。如果算出来是左上角行号大,那就是方向反了,把公式里的分子反过来重算一次即可。
5.4 数万个要素卡顿、无响应、乱码的处理思路
全国级 1:5 万接图表网格面大约几万个,加上标注、邻接字段,ArcMap 很容易出现保存很久无响应、复制粘贴失败、打开属性表卡顿等现象。这些多数是要素类太大或索引缺失导致。
建议所有中间产物直接写到文件地理数据库里,不要用 shapefile,因为 shapefile 没有空间索引,几万个面查询起来很吃力。操作大字段时,可以先建一个只有关键字段的临时图层,算完再连接回原表;不要直接在完整大表上反复执行字段计算和连接。另外,属性表中文乱码问题,多见于 shapefile 的 dBase 编码不统一,写字段名和属性值时尽量用英文或拼音,展示用中文字段别名,能避开大部分乱码。
如果 ArcGIS 安装或汉化过程本身报过错误,比如安装时出现 assembly component 0x80070005、错误 1935,那大概率是系统组件环境问题,和接图表制作无关,建议先把环境修复好再处理数据,否则容易遇到打开工具弹窗、无响应等连锁问题。
5.5 新旧图号混用,查找失败
项目里如果既有新版图号(J50E001024)的文件,又有旧版图号(J-50-24-B)的资料,数据库检索时很容易查不到对应图幅。我一般会在接图表里建一个 OldMapNo 字段,把每个图幅对应的旧版图号也维护进去。整理新老图号对应关系没有捷径,只能对照标准分幅表逐幅录入,或者用已公开的图号转换表做一次连接。
做好对照表后,不管是按旧图号查询还是按新图号裁剪,都能一张图定位。这个准备工作做完,后续接资料、对台账、做移交,效率会明显提升。
我在实际做接图表的过程中,最深的体会是:别把这件事当“画格子”的小事,图幅号对不对、范围严不严、坐标系统不统一,直接影响后面每一次裁剪和查询。最后再分享一个实用技巧:做完的接图表除了保存在 ArcGIS 工程里,再导出一份 KML 文件,放到手机地图软件里,外业跑点时打开定位,想找哪一幅直接点图幅就能看到编号和范围,比在电脑前翻图层方便得多。
本文还有配套的精品资源,点击获取