经常有做环境监测、公共健康、大气污染研究的同学拿着一份Excel表格来问我:老师,我这个PM2.5数据已经在手里了,怎么才能把它变成一张像论文里那样的全国各省浓度图?在ArcGIS里把一张省级行政区划图和一个浓度统计表“连”起来,再按照浓度高低上色,这件事本身不复杂,难点往往藏在数据整理、字段匹配、投影坐标系和分级配色这些不起眼的小环节里。我这次就把整套操作拆成一步步讲清楚,同时把我自己反反复复踩过的坑也一并交代出来。全程基于ArcGIS Desktop操作,ArcGIS Pro的思路基本一致,有差异的地方我会单独提一句。
1. 数据准备链路:拿到省界、浓度表和属性字段这三样再开工
磨刀不误砍柴工。很多新手直接把Excel拖进ArcMap就开始连,最后要么连不上,要么连上了乱码,要么地图上有大片空值,根源都在准备工作没做干净。这个环节我会讲清楚三件事:省级边界数据去哪儿找、PM2.5浓度表长什么样最合适、字段如何起名才能避免后患。
1.1 全国省级行政区划边界数据的获取与预处理
省级边界数据是画图的“底图”,一般用shapefile格式,要素类型是面(Polygon)。获取渠道通常是国家或省级测绘部门发布的标准地图数据、高校地理数据共享平台、以及各类公开的GIS数据资源库。你拿到的数据里至少应该有一个表示省名称的属性字段,比如“NAME”“省”“省名称”,还需要一个唯一的编码字段,比如行政区划代码,这是后面做属性连接的关键。
打开ArcMap后,第一步不是急着加图层,而是先在ArcCatalog里把数据看一眼。右键点击shapefile打开属性表,确认边界数量是不是34个左右(包括省、自治区、直辖市和特别行政区),几何有没有破裂或重叠。如果是从网上下载的数据,经常会出现拓扑错误导致面积计算不对或者出图时边界有缝。一种快速检查办法是打开属性表,新建双精度字段,用计算几何(Calculate Geometry)算一下每个面的面积,数值明显异常的小面块说明几何有问题。
1.2 PM2.5浓度表的整理规范
PM2.5浓度数据最常见的来源有三个:一是国控站点逐小时或逐日的监测值,汇总后按省取年平均;二是环保统计年鉴里的省级年均浓度值;三是卫星遥感反演数据按行政区域统计的结果。无论哪种来源,你要拿到手上的最终表格必须是一行一个省、一列一个浓度的“长表或宽表整理好后的样子”。
我见过最多的翻车现场是Excel里既有年份、月份,又有站点名称和详细的经纬度,真正的省级年均浓度反而要临时用透视表去算。所以拿到原始数据后,先分三步整理:
- 按省份分组,用平均值把日/月数据聚合成年浓度;
- 只保留需要的列:省级名称、行政区划代码、年份、年均浓度、浓度等级;
- 另存一份字段名全部为英文字母的.xlsx文件,比如
Province、Code、PM25,不要用“省”“浓度”这类中文字段名。
有人不理解为什么不能用中文名,其实ArcGIS对中文字段名的兼容性这些年好了很多,但后续一旦要做Join、做图表、做脚本,中文字段名在部分版本的ArcMap里还是会出现莫名其妙的编码问题。用英文短字段名,一劳永逸。
1.3 数据编码与唯一标识字段的设计
连接操作最讲究“一一对应”。你的省界属性表里叫“省名称”的字段,可能值是“北京市”“天津市”这样带“市”字的全称;浓度表里对应的值可能是“北京”,这就对不上。所以要提前统一:要么两边都用行政区划代码,要么全用统一简称。代码最保险,因为它是唯一的,不会出现“内蒙古”和“广西壮族自治区”这种长短名差异。
如果你手头浓度表里没有代码,只有行政区名称,建议先补一列代码字段再进ArcMap。这是一个很机械但极度重要的准备工作,我在第2部分会演示连接时如果两侧名称不统一会报出什么错。
2. 属性连接与坐标投影:让Excel里的数字真正落到地图上
数据都齐了以后,接下来的核心动作叫做“属性连接”(Join),也就是把Excel浓度表的内容,像查字典一样按某个关键字段挂接到省界属性表中。连接之后,省的每一个面都带有PM2.5浓度数值,随后才能按数值上色。这个环节里面,坐标系统设置同样不可忽视。
2.1 给数据框设置一个合适的投影坐标系
国内的全国地图,默认的WGS84地理坐标系虽然能显示,但计算面积、距离都不是平面单位,做插值和制图排版也容易出现图面变形。我在做全国PM2.5图时习惯先把数据框坐标系设成Albers等积圆锥投影,参数一般是中央经线105°E,两条标准纬线25°N和47°N,这也是国内制图里最常用的之一。如果你手头数据被要求用其他坐标,比如Lambert或UTM分带,也没问题,核心原则是:一个工程里所有图层的数据框投影要统一,别再叠加一个经纬度和一个投影坐标系的图层还不做动态投影。
在ArcMap里设置方式很简单:右键图层框(Layers)→ 属性 → 坐标系 → 选“投影坐标系”里的Albers或导入某个已有图层的坐标系。如果你的省界本身是WGS84经纬度,但数据框设成了Albers,ArcMap会自动做动态投影显示,不影响连接和制图,但涉及计算面积、距离以及导出栅格时,最好对图层本身执行一次“投影”(Project)工具,把shapefile真正转成目标投影。
2.2 把Excel表导入工程并执行属性连接
在ArcMap中可以直接用“添加数据”把.xlsx表格加进来,但更稳妥的办法是先导入到地理数据库或转为dBASE表。右键点击表格图层 → 数据 → 导出,将其转为独立表,避免Excel某一行格式异常导致ArcMap崩溃。
接下来执行连接:
- 右键点击省界图层,选择“连接和关联 → 连接”(Joins and Relates → Join);
- 第一项“要将哪些内容连接到该图层”选“连接某表的属性”;
- “选择此图层中将作为连接基础的字段”选省界里的代码或名称字段;
- “选择要连接到此图层的表”选你导入的PM2.5浓度表;
- “选择此表中作为连接基础的字段”选浓度表里的对应代码或名称字段;
- 保留所有记录或仅保留匹配记录,视需要选择。
连接后,打开省界的属性表,滚动到最后几列,你会看到PM25等字段被追加进来了。如果很多行是空值,别慌,90%的原因是关键词不一致,例如一边是“110000”文本型,一边是“110000”数值型,或者一边代码带前导零一边不带。
2.3 连接不上的常见现场和排查办法
我遇到过的连接失败案例主要有三类。
第一类是字段类型不匹配。Excel里“110000”如果被识别成数值型,导入ArcGIS后会去掉前导零,而后台的行政区划代码是文本型,两边一比较,只有那些不含零的代码能连上。解决方法是:在Excel里把代码列格式化为文本,或者在ArcGIS中给表格增加一个文本字段再转一下。
第二类是字段名和值带隐藏空格。特别是从网页复制数据时,名称后可能带了换行符或全角空格。可以在Excel里用TRIM和CLEAN函数清洗,也可以在ArcGIS属性表里对文本字段使用字段计算器,替换掉空格后再连接。
第三类是表格数据被Excel自动判断成日期格式。比如年份列被转成日期,会导致代码值错乱。洗数据时一定要把这类列先设成文本格式。
3. 浓度分级配色:不同分类方法和色带组合的取舍
连接成功只是完成了“数据从表格到地图”的搬运,真正决定这张图好不好看、信息传达是否准确的是分级配色。PM2.5浓度是连续数值,如果不用分级,ArcMap会默认用连续渐变色渲染,结果往往是颜色过渡很顺但图例难以解释,读者看不出“哪些省超标、哪些省达标”。所以这里采用“数量分级”的渲染方式。
3.1 设置分级色彩的完整步骤
双击省界图层打开图层属性,切换到“符号系统”(Symbology)选项卡,左侧选择“数量 → 分级色彩”(Quantities → Graduated colors)。右侧“值”下拉框选PM25字段,选择色带,点击“分类”按钮设置分级方法和分类数。
出图前记得把“标准化”保持为“无”。有的同学不小心选了“按总面积标准化”,结果渲染的是每平方公里的浓度密度,而不是浓度本身。
3.2 分级方法怎么选:自然间断点、等距还是手动
ArcGIS自带的分级方法有自然间断点(Jenks)、等间距、分位数、几何间隔等。对PM2.5这种和环境空气质量标准强相关的数据,我强烈建议不要沿用默认的自然间断点,而是手动设置与国家标准对应的断点。
根据环境空气质量标准,PM2.5的24小时平均浓度限值可以划分为:优(0-35)、良(35-75)、轻度污染(75-115)、中度污染(115-150)、重度污染(150-250)、严重污染(250以上)。用这套断点画国家级浓度图,读者一看图例就能直接对应空气质量类别,比自己拍脑袋定的分级更有说服力。
实操方法是:在分类对话框里把方法改成“手动”,然后依次输入断点值——35、75、115、150、250。分类数量设为6,颜色带从浅到深。这样每一个省的颜色代表它所在的浓度区间,而不是相对高低的模糊渐变。
3.3 色带的选色逻辑与透明度处理
色带可以先选“黄-橙-红”或“浅绿-黄-红”,再对每一类微调颜色。注意两类常见翻车:一是选了“按分类自动分配”的随机色,导致相邻等级颜色差异不明显;二是色带趾部过于刺眼,图面像警报器。类似PM2.5这种环境污染主题,建议用暖色系从浅黄到棕红,污染越高颜色越深。
如果省界图层上还叠了其他要素,比如河流、城市点位,可以给PM2.5图层设置40%左右的透明度,让底层要素若隐若现。但要注意,透明度过高会导致图上颜色偏淡,打印后更浅,建议最终导出前先出一张预览图看看效果。
4. 制图排版与导出:从图层到论文级图件的关键细节
很多人费了半天劲把颜色调好了,最后却在导出环节把成果毁掉。ArcMap默认的数据视图只是工作窗口,不是成品图。要做一张能放进报告或论文里的图,必须进入“布局视图”进行排版。
4.1 布局视图与页面设置
切换到底部“布局视图”标签,先右键页面打开“页面和打印设置”,把纸张设为A4或者你需要的尺寸,方向根据地图形状选择。中国地图轮廓呈东西宽、南北略窄的形态,一般选横向更合适。
把数据框拖到页面左侧占主体位置,右侧预留空间给图例和文字。数据框的实际范围需要微调,右键数据框 → 属性 → 数据框选项卡,可以固定比例尺和图幅范围,避免缩放时把南海诸岛位置弄乱。为了确保地图完整,我习惯把比例尺取消勾选“自动调整”,手动填一个合适的数值,比如1:18000000,再根据页面大小微调。
4.2 插入图例、比例尺、指北针和标题
插入图例时只勾选PM2.5浓度图层,不要把省界底图也放进图例里。图例标题可以直接写“PM2.5年均浓度(μg/m³)”。图例默认是一列排开,如果省分级有6项,会占很大空间,可以在图例属性里把“列数”设为2或3,让图例更紧凑。
比例尺在县级以下的小范围图里很有用,但在全国范围图上,因为投影变形复杂,我更多使用比例尺和指北针配合。注意图名要写清楚统计年份和指标,例如“2024年全国各省PM2.5年均浓度空间分布图”,别只写个“PM2.5浓度图”,否则读者分不清是哪一年、哪个指标。
4.3 导出参数:分辨率、格式和背景
文件 → 导出地图,格式建议选TIFF或JPEG,分辨率设置为300dpi以上,这样放到Word或论文里放大也不会糊。如果生成的图片在PPT里显示颜色变淡,可以导出PNG格式或勾选“将背景色设为白色”。
还有一个常见的细节:如果你的页面背景是默认的灰色,导出时会连灰色背景一起导出。记得在页面空白处右键 → 页面属性 → 把背景色设为白色或调整为无颜色。
5. 当“按省”不够用:站点数据转空间插值的技术路线
省级浓度图适合表达“省际差异”,但如果你手里的数据是具体监测站点的经纬度坐标,而你关心的范围实际是一个省内部的空间分布,那就需要走另一条技术路线:插值生成连续浓度表面。这里我推荐的方法和操作顺序如下。
5.1 从监测站点坐标生成点要素
把你的站点数据整理成包含经度、纬度、浓度三个字段的表格。在ArcMap中点击“文件 → 添加数据 → 添加XY数据”,选择经度字段为X,纬度字段为Y,坐标系选WGS84地理坐标系。生成的临时事件图层先导出为shapefile,这样就能继续做空间分析。
注意点位图层的坐标最好是WGS84经纬度,插值之前再用“投影”工具转成与之前一致的Albers等积投影。否则你和省界叠加时,点位会跑偏。
5.2 用IDW或克里金插值生成浓度表面
插值工具在ArcToolbox → 空间分析工具 → 插值分析里,常用的有反距离权重法(IDW)和克里金法(Kriging)。IDW参数简单、速度快,适合快速出图;克里金考虑空间自相关性,结果更平滑,但参数调整比较耗时。如果只是省级图后处理,IDW足够。
双击IDW工具,输入点要素,浓度字段选PM25,输出栅格分辨率设置0.1度或5000米(根据你要的精细程度),输出范围设置为全国省界范围。完成后用“提取分析 → 按掩膜提取”(Extract by Mask),把插值结果裁剪到省界内部,避免海洋和境外区域带着色块。
5.3 用分区统计计算省级平均浓度
插值得到的是一个连续的栅格浓度面,而不是省级别的统计值。如果还想要每个省的平均浓度,可以用“区域分析 → 分区统计为表”(Zonal Statistics as Table)工具,以省界作为分区,统计每个面域内栅格像元的平均值。这个表导出后,就是一份基于插值面的省级浓度统计结果,之后又能转回按省配色的路线。
这个方法比直接从监测点算省均值更符合空间连续变化的实际,尤其适合站点分布不均、东部密西部稀的数据条件。不过要注意,西部大范围无站点区域插值结果的可信度较低,出图时建议在图例下面加一行小字注明“插值结果仅供参考”。
6. 我实做过程中的典型问题和排查建议
最后把几个我这几年来被反复问到的问题集中列一下,有些问题当时也折腾了我半天,写出来希望能帮你直接绕开。
6.1 连接后属性表有值但符号系统不显示
这个问题经常出现在执行Join之后直接切换渲染。解决办法是先把连接结果“永久化”——右键图层 → 数据 → 导出数据,导出一份新的shapefile。之后再对新图层做符号渲染。为什么必须这样?因为连接本质上是一个临时关系,图层一刷新,连接可能失效,渲染自然也跟着出问题。
6.2 输出图片颜色偏淡或偏亮
同一台显示器上看着合适的颜色,放到别人电脑上可能完全变样。建议在导出前把图例色块的颜色数值记下来,比如RGB,导出后抽查一次是否和设定一致。如果图件要打印,尽量选择CMYK色系或打印机支持的色彩模式。
6.3 无法读取Excel某些字段
有几次我把Excel表格直接拖到ArcMap里,发现某些列显示不出来或者变成Object类型。这个和Excel版本、数据库连接驱动有关。最省心的做法是:在ArcCatalog里用“表 → 导出”把Excel转成地理数据库表,或者另存为CSV格式,再用“添加数据”加载。CSV虽然不支持多工作表,但胜在兼容性最好。
6.4 关于中文路径和文件名
ArcMap对中文路径的支持在不同版本间有差异,为了稳定,我建议整个工程文件、shp、Excel、导出图片都不要放在中文命名的文件夹里。这不是玄学,而是国外软件对Unicode路径的处理确实容易出幺蛾子。你全部用英文路径,能少踩一半的坑。
6.5 制图之前先看数据分布
最后务必做一次描述统计,打开属性表,右键PM25字段 → 统计,看看最大值、最小值、平均值。如果某省数据异常高或异常低,先检查是否录入错误,再决定是否保留。很多人拿到数据就上色,结果图出来有一两个省颜色深得突兀,查了才发现是单位没统一,有的用微克每立方米,有的用了毫克每立方米,相差1000倍。
我自己做全国PM2.5图通常会在正式出图前先导出三个不同配色方案的预览版本,放到同一屏幕上对比,再用一个简单原则定稿:颜色不要误导读者,图例要能把话说清楚,信息不要重叠遮挡。ArcGIS是工具,但图是给人看的,多站在读者的角度检查一遍,你的图就会比大多数匆忙生成的图件要专业得多。