用ArcGIS制作1:5万接图表:分幅网格、图幅号与批量应用

发布时间:2026/9/3 18:49:03
用ArcGIS制作1:5万接图表:分幅网格、图幅号与批量应用 简介全国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 位。比如 J50E001024J50 是 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 万行号是 J39/4 取整 9对应 J列号是 50(116180)/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 文件放到手机地图软件里外业跑点时打开定位想找哪一幅直接点图幅就能看到编号和范围比在电脑前翻图层方便得多。本文还有配套的精品资源点击获取