简介:“ArcGIS全国地图”是一套面向GIS应用与规划研究人员的全国地理空间数据包,整合地级区划、省界、河流湖泊及九段线等核心要素,可支撑地图制图、区域统计、空间查询与专题分析等多类应用场景。包体共103个文件,以Shapefile矢量数据(shp、shx、dbf)为主,同时包含ArcMap工程文档(mxd)、投影信息(prj)与栅格底图(tif)等,压缩包大小38.53MB,结构清晰,便于直接加载到ArcGIS中开展编辑与分析。目前已有8066人学习下载。借助该数据包,用户能快速构建全国尺度地理框架,结合人口、经济等属性数据开展密度分析、洪水风险评估或行政区划比较,也可用于教学演示与科研底图制作,是理解中国地理环境与开展空间分析的实用基础资料。
1. 一份 ArcGIS 全国地图资源的使用起点
在甲方地图需求里,最能暴露经验差距的往往不是省级图,而是全国地图。某次业务布局图需要把几百个城市的分级数据铺到一张图上,我直接从网上下了一份全国边界,结果投影一换就全跑位,图例和注记挤成一片。那份看似普通的 ArcGIS 全国地图资源,其实解决的就是这类问题:省界、市界、县界等基础数据有了,还需要正确投影、符号化方案和出图模板配合,才能稳定输出全国尺度的专题图。适合谁用?GIS 实习生、处理国土或规划业务的数据员,以及经常出全国大图的制图人员。先把坐标系和数据处理思路理顺,后面符号化和出图才不翻车。
2. 全国地图的坐标系处理:投影转换与数据清洗
2.1 先选投影:Albers 等积投影与中央经线设置
任何一份全国底图,打开 ArcMap 后先在图层属性里看坐标系,有些会显示 Geographic Coordinate System: GCS_WGS_1984。用这种地理坐标系直接制图,在高纬度地区省会位置可能看起来“整体拉高”,图斑面积也被夸大,地图比例尺计算不准确。处理全国范围的数据,我一般固定选择 Albers Conic Equal Area。这个投影在两个标准纬线上没有形变,面积保持正确,适合统计制图,而 Web Mercator 虽然网上浏览常用,但面积变形大,拿来做统计专题图会出笑话。
常见参数是中央经线105°E、双标准纬线25°N和47°N、基准面用 CGCS2000。如果资源和手机 GPS 数据混用,统一数据源后再转,不要边挂接边转。投影转换在工具箱里的路径:Data Management Tools -> Projections and Transformations -> Feature -> Project。弹出窗口里第一个参数是待转换要素类,第二个是输出路径,第三个是输出坐标系,点右侧图标新建。如果只改了数据框的坐标系,底层数据还是原坐标系,这是很多人出问题的地方。改数据框坐标只能临时显示,不会真正改造数据。
批量转换用 Python 窗口更快:
import arcpy input_fc = r"D:\working\全国省界.shp" output_fc = r"D:\working\全国省界_cgcs2000.shp" out_cs = arcpy.SpatialReference("CGCS2000_3_Degree_GK_CM_105E") arcpy.Project_management(input_fc, output_fc, out_cs)代码说明:Project_management 的参数分别是输入要素类、输出要素类和坐标系对象;SpatialReference 里直接用“CGCS2000_3_Degree_GK_CM_105E”字符串更保险,避免手选错投影。注意不要把 Define Projection 和 Project 混在一起,前者是“告诉软件这个数据当前是什么坐标系”,后者是“把坐标值换算成另一个坐标系”。拿了别人数据不知道原坐标系时,先查 .prj 文件,再定义,否则结果全偏。
2.2 数据裁剪与合并:Clip、Dissolve 的批量用法
全国数据不仅仅是省界,还可能带县级面。做省级专题图时,需要用目标省行政边界裁剪出该省范围内的数据。裁剪操作在 ArcToolbox 里对应 Analysis Tools -> Extract -> Clip。对被裁剪要素有要求:两个图层最好处于同一坐标系,而且 Clip Features 的面必须能覆盖目标范围。裁剪结果有时出现狭长碎屑,是因为两个边界套合精度不一致,裁剪前最好先做几何修复。
批量提取六个省份的数据,我一般用循环脚本:
import arcpy arcpy.env.workspace = r"D:\工作空间\待裁剪.gdb" names = ["A省", "B省", "C省", "D省", "E省", "F省"] province_fc = r"D:\工作空间\省界.shp" for name in names: where_clause = "NAME = '{}'".format(name) layer = arcpy.SelectLayerByAttribute_management(province_fc, "NEW_SELECTION", where_clause) arcpy.Clip_analysis(r"D:\工作空间\县级.shp", layer, r"D:\output\{}_县级.shp".format(name))逻辑说明:逐省份建立选择集,然后作为裁剪范围。Clip_analysis 的第二个参数是裁剪要素,它接受 FeatureLayer,所以先在内存里做选择。注意字段名 NAME 要和属性表里一致,否则 where_clause 返回空集;遇到字段名是英文但中文别名的情况,要把 where 写成NAME in ('A省','B省')。
如果要把零碎的市级面合并成一个省级面,用 Dissolve 工具,按“省份简称”字段融合。融合后属性表只剩合并字段和计数,其他字段会丢,所以需要保留的指标字段在融合前先汇总到统计字段里。Dissolve 界面下有“统计字段”按钮,选择 SUM 或 FIRST 即可。
2.3 拓扑检查:边界缝隙与重叠的处理
全国制图最怕的还不是坐标错,而是边界“看起来没缝,放大全是缝”。几份不同来源数据拼在一起,邻接边界不贴合,建拓扑就能发现。在 ArcCatalog 里新建拓扑:右键目标要素集 -> New -> Topology。规则上,同层多边形之间用 Must Not Have Gaps(面之间不能有间隙)和 Must Not Overlap(面之间不能重叠)。省级边界用这两条够了;若还有飞点在海外,用 Must Be Inside 检查孤立要素。
验证拓扑后打开错误记录,每一条错误都会显示类型和位置。修复小缝隙用手工编辑最直接,在 Editor 中对齐端点,或用“Reshape”工具。法定数据涉及严格勘界时,不要自动简化,必须回到原始测绘边界处理。自动消除缝隙类错误,我采用的方法是先对目标面要素执行 Integrate,它按给定的容差把相邻端点吸附到一起。Integrate 的容差不能设太大,一般不超过 0.001 米,否则把相邻不同等级行政区的界线也吸掉,后果是边界形状失真,导出比例尺后尤其明显。拓扑检查这件事,很多做专题图的同事跳过了,等到出图才发现边界之间透出了底色,像地图被腐蚀了一块。
3. 符号化配置:多层要素的分级设色与注记避让
3.1 分级设色:自然间断点与手动阈值
拿到一份全国地图资源,里面往往有一个或多个图层文件(.lyr),但套到自己数据上时,分级方式和阈值未必匹配。分级设色是体现全国地图信息密度的关键。要素图层右键属性,Symbology 面板里选 Quantities -> Graduated colors。分类数量推荐 5 到 7 级,再多图例冗长,少则信息不够。Mode 下拉里有 Natural Breaks (Jenks)、Equal Interval、Quantile。处理业务指标如人口密度、GDP,我会先看统计直方图,有明显偏态分布时用 Natural Breaks 更合理;如果是为了对比不同年份数值,必须固定同一种分级阈值,否则图例变了图就不可比。
固定阈值是自己设置在 Classify 按钮里,断点值填 500、1000、2000、5000。注意阈值不要出现小数,尤其值是整数属性时不然图例很怪。对于少数极端极大值(比如某个直辖市指标是其他几十倍),把最大那一级单独设置为“超出范围”,在 Classes 设置面板里勾选“Show class ranges using feature values”,然后手动将 unusually high 值所在的记录在图层“定义查询”中排除,另行标注。这里有一个经验:每年做同一主题的全国图时,我会导出一份分类断点参数存为 .csv,下一年直接按此阈值出图,保证年度对比时颜色不跳变。这类细节决定图能不能直接用,而不是只能截图给人看。
3.2 边界线层次:国界、省界、市界的线型配置
全国图总是省界、市界、县界一起显示,如果线宽和颜色不分层,最后就是一团黑。国界在制图规范里通常一笔双线,比省界粗;省界作为一级界线要明显,市界和县界则尽量弱化。在 Symbol Selector 里,线型设置可以按下面这张表来:
| 边界类型 | 建议线宽 | 建议颜色 | 线型 |
|---|---|---|---|
| 国界 | 0.6 mm | 黑色 | 双线笔,外部粗内部细 |
| 省界 | 0.4 mm | 60% 灰 | 实线 |
| 市界 | 0.2 mm | 30% 灰 | 虚线 |
| 县界 | 0.1 mm | 20% 灰 | 点线或不显示 |
这套配置是给全要素全国图用的,如果只出省级专题图,就把市界降一个档,县界直接关掉。数据集中如果带了界线属性字段,例如“TYPE”区分国、省、市、县级,优先用 Categorized 方式按字段符号化,这样以后数据更新不用手动选线型;若字段没有,可以先在属性表里添加字段并根据行政级别代码赋值,再连到符号化面板。
注意国界双线不要用制图表达工具里的“双线”笔画的夸张粗细,实际打印会糊成一坨。我习惯用两个线符号叠在一起:下层为 1.0mm 黑线,上层为 0.4mm 白色半透明线,形成“粗边细缝”的国界效果。这个方法在 1:400 万全国图上稳定,打印出来也很干净。
3.3 注记避让:标注引擎与权重参数
全国尺度要素密集,省会和地级市名容易叠在一起。ArcGIS 里常规做法是开 Labeling,但默认引擎对点要素的碰撞处理不好。要提升避让效果,在图层属性里选 Labeling -> Placement,将“Place conflicting labels”选项关闭,或直接在“Label Engine”切换为 Maplex。Maplex 的主要参数有三个:
- Feature weight:设置要素(如某些注记点)不可被压盖的权重值,权重高的要素标注会绕开它。
- Label weight:设置已有标注的权重,让新标注不覆盖已放置标注。
- Buffer:标注周围留空,一般设 0.5 到 1 毫米,太大会导致大量标注放不下被省略。
位置调整上,用“Label Expression”控制字段内容,比如在城市名旁边加人口等级:
def FindLabel( [城市名] ): return [城市名] + "\n等级" + [等级]代码说明:FindLabel 参数是要素字段,返回值是显示的字符串;\n 表示换行,适合全国图上城市名和等级分两行显示。注意这里字段类型是文本,如果是数字字段要先用 str() 包装,否则会报错。对于实在挤不下的省会和直辖市,再单独做 Annotation 图层,手工把标签拖到海岛、海洋或图幅边缘,再拉一条引线到实际位置。这个工作看起来繁琐,却决定了整张图的专业度。全国图里注记一乱,数据再好也会被当“新手作品”。
4. 出图与批量导出:布局参数和数据驱动页面
4.1 布局参数:比例尺、指北针与经纬网
数据本身没问题之后,出图阶段的重点是布局和页面参数。我先说几个容易失衡的地方。地图比例尺选择跟制图范围强相关。全国图常用 1:400 万到 1:800 万,A0 图纸用 1:400 万,A4 汇报图用 1:1200 万。比例尺一旦敲定,在 Data Frame Properties -> General -> Extent 里将 Extent 设置为 Fixed Scale,并填入具体比例。否则后续拖动地图窗口时范围变化,比例尺数字和实际出图内容对不上。这是资深制图员都踩过的一个点:图很漂亮,比例尺却是假的。
页面设置:菜单 File -> Page and Print Setup,优先选择自定义页面大小,例如横向 A0 841mm x 1189mm,打印机默认为 PDF 打印设备,这样布局尺寸和输出 PDF 尺寸一致。图例放右下角,指北针放右上角,图名放在顶部中央。图例在图面上的数量控制:右键图例属性,在 Legend Items 里可以删除某些不显示的图层条目。
经纬网是判断全国图是否专业的暗号。在 Data Frame Properties 的 Grids 标签页里,新建 Graticule,间隔按 5 度或 10 度布置,标注只显示南北纬与东西经的数字。经纬网线型和字体都比较细,可以用 0.1mm 灰色线,避免盖过省界。
4.2 数据驱动页面:批量导出一个省一个 PDF
如果项目要求每个省出一张图,或者每个地级市一张,手排图简直是灾难。ArcGIS 的 Data Driven Pages 功能用起来,但要说清楚它的逻辑。先添加一个索引图层,这个图层里每一个要素代表一页,文件名可以用字段如“省份”。Layout 视图下,菜单 Data Driven Pages Setup,勾选 Enable Data Driven Pages,指定 Page Layer 为索引图层,并选择名称字段。坐标范围由索引要素的几何或当前数据框范围决定。
然后是脚本批量导出。ArcGIS 10.8 建议用 arcpy.mp。更基本的做法是把 mxd 数据驱动页面对象逐个读取页码导出:
mxd = arcpy.mapping.MapDocument("CURRENT") for page in range(1, mxd.dataDrivenPages.pageCount + 1): mxd.dataDrivenPages.currentPage = page pageName = mxd.dataDrivenPages.pageRow.CITY_NAME arcpy.mapping.ExportToPDF(mxd, r"D:\out\" + pageName + ".pdf", resolution=300)参数说明:mxd.dataDrivenPages.currentPage 设置当前页;pageRow 是当前页对应的索引要素属性行,取 CITY_NAME 作为文件名。这样所有省一次性输出,命名规范,后面做报告目录都不用改。注意要保证索引图层有唯一且合法的命名字段,带特殊符号的字段要先清洗,防止导出时报文件名非法。
4.3 导出清晰度与背景:300 DPI 设置
导出图片模糊是高频问题。File -> Export Map,在 Options 面板把 Resolution 调成 300 dpi,但问题是,有些图在布局视图下看是清晰的,导出后线条发虚。原因有两个,第一是导出时图片大小超过实际画布像素限制了;第二是地图窗口在动态刷新下一半内容未缓存。解决办法:导出前先在 Layout 视图双击地图框,在 Data Frame Properties 里把 Extent 设置为 Fixed Scale,然后点击“刷新”按钮;如果预览缓存一直花屏,再勾选“Clip Options”里“Clip to shape”并强制重新生成。另外输出 TIFF 时要选择 LZW 压缩,否则 300 DPI 文件体积可能到几百兆。
背景透明的问题常在叠加 PPT 时出现:导出的 PNG 有白底。解决方法是 Export Map 里 Image Format 选 PNG,并将背景色在 Data Frame Properties 中设置为无颜色。设了透明背景后,注记之间有白色 halo(光晕)同样会被保留,这反而正常。
5. 避坑排查:坐标系偏移与符号丢失的五种现场
5.1 要素跑海的坐标系偏移
现象:加载一份县界数据,整个县的位置跑到海里,或者和旁边的省界线错开几百米。
原因:shapefile 的投影文件(.prj)缺失,或者原数据用的是其他坐标系,但被软件默认当作 WGS84 显示。一旦数据框自动匹配成 WGS84,坐标数值又是其他投影的,自然飞出去。
解决:先右键图层属性,看到坐标系是 Unknown 时,用 Define Projection 明确正确坐标系。别先急着用 Project 转换,必须先定义原始坐标系,再转换到目标坐标系;两次都弄错方向会直接把数据叠加到错误位置。定义完再用 Project 转到 CGCS2000 或 Albers,位置就回正了。
5.2 共享图层文件后符号变灰色
现象:把 .lyr 图层文件发给同学,对方打开只看到灰色实心,没有分级颜色。
原因:.lyr 里引用的样式来源是 .style 文件,样式文件没有同步发送,或者图层保存时用的是绝对路径,对方电脑找不到。
解决:右键图层 Save As Layer File,在弹出的 Layer Properties 中勾选“Store relative paths”并确认 Style Reference 保存为嵌入样式。直接说逻辑:图层文件是“使用说明”,样式库里是“颜料盒”,两个得配套给。以后我向外发任何地图资源都会压缩包内同时塞一份 .style,但在 10.8 版本里 .lyr 也支持相对风格目录,放在同目录下即可。这个问题在旧版本 ArcMap 里最常见。
5.3 注记堆成一团的标注冲突
现象:华东地区城市密集,几十个地名叠在一起,无法识别。
原因:默认标注引擎没有配置避让权重,等级低的点也强行参与标注。全国图上地级市标注之间互相盖,压制顺序没设置。
解决:逐图层设置 Label Weight:人口高于 300 万的地市 Label Weight 设为 High,一般地市设为 Low,同时开启 Maplex 并设置 Feature Weight 把省会点要素设为 High,这样在地图比例尺缩小时,系统自动保留权重较高的省会标注,舍弃低级别的。如果还要保留大量低级别地名,就把标注转成注记(Convert Labels to Annotation),手动偏移,最费时间却也最有效。
5.4 导出比例尺与实际范围对不上
现象:图面上比例尺写 1:400 万,用测量工具一量实际是 1:450 万。
原因:布局视图里地图框被拖拽缩放,但未锁定数据框 Extent。数据框的缩放和页面缩放是两回事,比例尺只是纯文本装饰。
解决:在 Data Frame Properties -> General -> Extent 中选 Fixed Scale,填入 1:4000000,并勾选“Fixed Extent”还原为初始范围。出图前最后一步用测量工具在布局视图量取一段已知距离验证,若不一致返回检查固定比例尺状态。
5.5 属性挂接时中文乱码
现象:Excel 中正常的中文表,通过 Join 挂到 shp 后所有中文变“?”。
原因:ArcMap 通过 dbf 驱动读取 Excel 时,字符编码没有走 UTF-8,尤其是老版本 mdb 转 shapefile 后 DBF 编码流程丢失。
解决:不用属性表的 Join 直接连 Excel,改走工具箱 Conversion Tools -> Excel to Table,把 Excel 先转成要素类临时表,再基于字段 Join;如果已经挂了中文表,用 Table to DBF 并指定代码页为 UTF-8,或者在导出的 DBF 上用“字段计算器”赋值。这个坑遇到一次就长记性:所有外部 Excel 都先转一次 gdb 表,再与空间数据交互。
6. 进阶技巧:用定义查询做多期专题图切换
如果需要做 2015、2020 和 2025 三个年份的全国对比,每次重做符号化很笨。更高效的是把历年指标放到同一个属性表的多字段中,比如 POP_2015、POP_2020、POP_2025,然后在图层属性里用“定义查询”控制显示年份,配合数据驱动页面批量出图。
具体做法:图层定义查询里写"Year" = 2020。如果数据是长表(一行代表一个年份一个地区),就把查询条件改成"年份" = 2020。在数据驱动页面中,把页码与年份字段关联,每一页自动切换年份,同一套符号化阈值和配色全部复用。这样生成的系列图,图例和比例尺一模一样,识别度极高。
出图脚本同样用数据驱动页面,只是索引图层字段换成年份。配置好之后,同时选中多页导出一个多页 PDF,汇报时直接按年份翻页。这个方法比逐张改属性快十倍,而且不会出现“上一年图例写 2020,颜色配的其实是 2025 数据”的低级错误。从那以后,我每次做全国地图都强制走一遍固定流程:先查坐标系,再转投影,再检查拓扑,然后才进入符号化和出图。这个顺序救了很多次急,希望帮到你。
本文还有配套的精品资源,点击获取