ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用ArcGIS绘制全国各省PM2.5浓度图:从监测点Excel到出图完整教程

用ArcGIS绘制全国各省PM2.5浓度图:从监测点Excel到出图完整教程 做环境数据分析这些年我经常被问到同一个问题“怎么用ArcGIS画一张全国各省的PM2.5浓度图”问的人里有做毕设的学生有在环境监测站写年度公报的同行也有刚转岗到规划院的同事。老实说这个需求听起来不大但真正操作起来要过的关卡一点不少Excel监测点怎么变成图层、坐标系为什么乱七八糟、插值出来的面为什么跑到国外去、按省统计的结果为什么老是连不上属性表……每一关都能卡住人小半天。这篇文章我就把一套完整可复现的操作流程写出来——从一份PM2.5监测点Excel到一张能放进论文或报告里的全国分省浓度图步骤、参数、原理和常见坑都会讲到。适合ArcGIS刚入门但急着出图的人也适合用来规范团队内部的制图流程。1. 动手前先盘清楚要从“点数据”到“省域浓度图”一共要迈四道坎1.1 完整技术路线先知道“数据怎么流动”再开软件先说结论用ArcGIS画全国各省PM2.5浓度图本质上做的是“站点离散观测→区域连续估算→行政单元汇总”三步转换。第一步让Excel里的监测点落到地图上第二步用空间插值把有点的位置扩展成连续的浓度面第三步再用省界把连续面切成一个个行政区块最后才能按省统计、配色、出图。对应到ArcGIS的工具链就是添加XY数据→反距离权重插值IDW→按掩膜提取→分区统计→连接属性→分级配色→布局出图。很多新手一上来就双击插值工具结果做出来的图既没有省界也没法按省看平均浓度根子就在于没把这条技术路线在脑子里过一遍。我建议你在动手之前先在纸上画出数据是怎么流动的原始表格有哪些字段、每一步会产生什么中间产物、最终图层要挂哪个字段全部写清楚再开软件。磨刀不误砍柴工数据流理顺之后操作只是按部就班的事。1.2 数据清单监测点数据与省界矢量一个都不能少这张图需要两类数据缺一不可。第一类是PM2.5监测点数据。最容易拿到的是环境监测总站公开发布的逐小时或日均浓度数据很多城市的空气质量发布平台也能下载。无论来源在哪最后都要整理成一张表至少包含四列站点名称、省份、经度、纬度、PM2.5浓度值。注意浓度单位必须统一国内习惯用μg/m³微克每立方米千万别混进mg/m³否则数值差一千倍整张图直接废掉。第二类是省界矢量数据。全国省级行政区划的shapefile可以从公开的基础地理数据渠道获取通常标注为1:400万或1:100万比例尺。拿到后先打开属性表确认里面有省份名称字段比如NAME、省或PAC之类。后面按省统计全靠这个字段如果没有就自己添加一个文本字段把每个省的名称填完整。内容列表里一定要把这份省界数据放在最顶层制图时它既是统计边界也是视觉骨架。1.3 检查扩展模块与软件环境Spatial Analyst是必需项插值IDW和分区统计Zonal Statistics都属于Spatial Analyst扩展模块如果你的ArcGIS没有启用这个模块相关工具会全部显示为灰色不可点很多人卡在这里半天还以为是软件坏了其实是许可没加载。ArcMap用户的操作路径是菜单栏“自定义”→“扩展模块”在弹出的窗口里勾选“Spatial Analyst”。ArcGIS Pro用户在右上角“设置”→“许可”里确认Spatial Analyst可用。另外提一句如果你手里有ArcGIS Pro我建议直接用Pro界面更现代、默认适配高分屏而且处理大范围栅格时性能更好。但考虑到不少教程和学校机房还在用ArcMap 10.x下面我就以ArcMap 10.8的路径为准来写遇到Pro里名字不一样的工具会顺带标注。2. 数据预处理把Excel里的监测点变成ArcGIS认识的“点要素”2.1 表格整理的标准姿势列名、小数点和缺失值一个都不能大意打开Excel后先检查三件事。第一经纬度必须是十进制度格式。比如某城市经度是116.4074纬度是39.9042而不是116°24′E这样的度分秒。如果是度分秒先换算十进制度度分/60秒/3600。这一步看似基础但每年都有大量数据因为格式问题在ArcGIS里显示在错误的位置。第二表头别加单位、别加中文括号、别用特殊符号推荐直接用英文或拼音命名比如JD经度、WD纬度、PM25浓度值后续操作会少很多乱码和字段名匹配的麻烦。ArcMap对中文表头兼容性一般尤其是老版本字段名里带中文在若干工具里会出现“字段不存在”的诡异报错。第三缺失值要单独处理。做某一天的浓度图个别站点没有数据直接剔除就行做年度均值图则需要保证站点有效天数达到一定比例比如一年里有效天数超过50%否则该站点算出的年均值代表性很差插值时会污染周边一片区域。我的习惯是在整理阶段就新建一列备注记录数据有效天数后面被质疑时也能快速查证。2.2 添加XY数据与导出要素类坐标系选错会让点位跑到非洲表格整理好后打开ArcMap依次点击“文件”→“添加数据”→“添加XY数据”。在弹出的窗口里选择刚才的工作表X字段选经度Y字段选纬度。最关键的一步在坐标系选择这里网页上下载的监测点数据绝大多数都是WGS_1984地理坐标系也就是通常说的经纬度坐标在坐标系选择窗口里路径是Geographic Coordinate Systems→World→WGS 1984。如果这里误选成某个投影坐标系比如Web Mercator点位会偏到完全无法理解的地方去。添加完成后内容列表里会临时生成一个“事件图层”名字类似“工作簿$事件”。注意它还只是个动态事件不是真正的空间数据文件如果不导出关掉工程再打开就没了。正确做法是右键该图层→“数据”→“导出数据”保存为shapefile到本地文件夹之后再对这个shp操作。我习惯把监测点shp和省界shp放在同一个gdb地理数据库里或者放在同一个英文路径的文件夹下避免中文路径和特殊符号引发读取错误。2.3 定义投影和投影转换两个概念别搞混这是新手最密集的翻车区省界shp拿回来后先右键图层打开“属性”切到“源”选项卡确认它当前的坐标系信息。这里有两个概念经常把新手绕晕定义投影Define Projection和投影转换Project。定义投影是“告诉ArcGIS这份数据原本是什么坐标系”只在数据已经包含坐标值、但坐标系显示为Unknown时使用。比如你从某些渠道拿到的shp打开后坐标数字看起来像经纬度但属性里坐标系是未知这时候要用“数据管理工具→投影和变换→定义投影”把正确的坐标系写进去。千万别用Project工具去做这件事Project做的是数值换算如果原来的坐标系都标错了换算结果一定是错的。投影转换才是“把数据从坐标系A换算到坐标系B”。中国全域制图我强烈建议统一到Albers等积圆锥投影下再做空间分析和制图一是因为它适合中纬度东西跨度大的区域二是因为等积投影保证面积不变形后续栅格统计和面积计算更可靠。ArcGIS里现成的有两种常用选法Krasovsky_1940_Albers对应北京54椭球体系和CGCS2000下的Albers。我一般优先用CGCS2000毕竟当前国内测绘基准就是2000国家大地坐标系资料口径更统一。操作路径是“数据管理工具→投影和变换→要素→投影”把省界shp和监测点shp都转过去两个图层务必保证在同一坐标系下否则后面叠加和统计全都会出现系统性偏移。3. 空间插值从零散的监测点到一张连续浓度面3.1 插值方法选型为什么我默认用IDW而不是克里金空间插值的本质是用已知点的数值去估算未知区域的数值。ArcGIS的Spatial Analyst工具箱里提供了反距离权重、克里金、样条函数、趋势面等多种方法。做省域尺度的PM2.5浓度图我的默认选择是反距离权重IDW理由很实在。第一是原理直观。IDW假设“距离越近影响越大”每个未知点的值是对周围已知点做加权平均权重与距离的幂次成反比这个逻辑两句话就能给非专业的人解释清楚。第二是参数少且稳定。克里金虽然是统计上更“择优”的方法但需要拟合半变异函数、选择模型、设置块金和基台值当监测点只有几十个甚至十几个时拟合结果很不稳定而且很容易在答辩或评审时被追问“为什么用这个模型”。IDW的核心参数就两个幂次和搜索半径好调好解释评审质疑的空间小。第三是计算快普通办公电脑跑全国尺度也毫无压力。IDW最常被诟病的毛刺是“牛眼效应”——站点稀疏区域会形成一圈一圈的同心圆。我的看法是做全国省域尺度的展示图站点密度远比方法细节重要只要监测点数量在几百个量级牛眼不会特别突出如果站点太少再“高级”的插值方法也救不回来。如果你在写学术论文需要做方法对比可以额外补一套克里金结果但在日常出图和业务报告里IDW足够用了。3.2 IDW关键参数逐一拆解每个参数都在回答“为什么”在ArcToolbox中展开“Spatial Analyst工具→插值分析→反距离权重法”输入要素选监测点shpZ值字段选PM25浓度字段然后设置下面几个参数。第一个是幂次Power默认值是2含义是权重按距离的平方衰减。Power越大局部站点的影响范围越小图上细节越突出但更容易出现牛眼Power越小结果越平滑、越趋于区域平均。日常出图用默认2就行如果只想看大尺度的分布格局可以调到1.5左右会得到更舒展的过渡色带。第二个是搜索半径。我建议选“变量”然后用“最少点数”来控制比如设置最少12个点参与计算。原因很简单全国的环境监测站分布极度不均东部密集、西部稀疏。如果选固定半径东部半径内能框进几十个点西部可能一个点都没有结果就会在西部出现大块空白。用可变半径可以保证每个待估位置附近都有足够的已知点插值结果完整得多。第三个是输出像元大小。这个参数默认值往往不好用因为它是按输入点的范围自动计算的可能过粗或过细。我建议手动设置想在最终图上实现大约5公里的分辨率在Albers投影下直接把像元大小设为5000单位是米。这个值兼顾了可视精度和计算量。有些新手会把像元设成10米结果跑了一个小时还没出结果其实对省域尺度来说毫无必要像元过小并不会提高观测数据的真实精度只是白白增加计算量。第四个容易被忽略的是环境设置里的处理范围。在工具窗口下方点击“环境”把“处理范围”设置为“与图层相同”然后选择省界图层。这样插值结果会以省界的外接矩形为输出范围后面裁剪时更省事也能减少算到海外的无效计算。3.3 用掩膜提取把浓度面裁进省界告别公海里的“彩色雪地”插值完成后生成的是一个覆盖整个处理范围的矩形栅格里面包含了大量海域和境外区域。毫不夸张地说我第一次跑完IDW看到结果时整个渤海和东海都“染上”了漂亮的浓度色乍一看还挺震撼仔细一想这图根本没法交。这个时候就需要“按掩膜提取”工具。操作路径是“Spatial Analyst工具→提取分析→按掩膜提取”输入栅格选IDW的插值结果掩膜数据选省界shp输出就得到一张边界紧贴国界线的浓度栅格海域和境外区域直接变成NoData。这个工具在你没设处理范围的情况下也能补救原来的错误输出不需要重新跑插值几秒钟就能完成。裁剪完成后有个非常常见的后续问题栅格边缘的NoData区域在默认符号化下显示成黑色或其他背景色出图时整个图面背景一团黑。解决办法是在栅格图层属性里的“符号系统”选项卡中把NoData的值显示设为“无颜色”或者勾选“用透明背景显示”。这个细节我后面在常见问题里还会专门提一次因为遇到的频率实在太高了。4. 按省统计与制图输出让成果可以直接交图4.1 先想清楚你要的是连续浓度面还是分省填色图“全国各省PM2.5浓度图”这句话实际工作中至少有两种理解。第一种是气象环保部门常见的连续浓度分布图整个图面是蓝到红的渐变连续面省界线条压在面上重点表达浓度的连续空间趋势看图的人能直观看出哪里高哪里低。第二种是分省统计填色图每个省一个色块颜色深浅代表该省平均浓度重点是比较省级行政单元之间的差异。这两种图做到第3章第3节时其实已经分叉了。如果领导或导师要的是第一种那3.3节裁剪完的连续栅格直接叠加省界再调一下配色和透明度就能出图不需要做任何分区统计。如果要求的是第二种就必须继续做按省汇总。我强烈建议在动手前先问清楚需求否则做好了连续面又被告知要按省填色等于白干一半。4.2 分区统计用省界去汇总栅格浓度分省填色图的核心操作是“区域分析→分区统计为表”。它的逻辑是把栅格和矢量面叠在一起对每一个省范围内的所有栅格像元做统计得到最小值、最大值、平均值、总和等指标。这里我们关心的是均值MEAN。工具路径是“Spatial Analyst工具→区域分析→分区统计为表”。参数设置很简单输入要素区域数据选省界shp区域字段选省名比如NAME输入值栅格选3.3节裁剪后的浓度栅格下方的统计类型选MEAN。输出的是一张dbf表格每一行对应一个省里面的MEAN字段就是该省所有栅格像元的平均PM2.5浓度。得到这张统计表后需要把它连接到省界图层上。右键省界图层选择“连接和关联→连接”以省名称为关联字段把dbf表接进来。这里有一个非常容易踩的坑连接进来后的字段名通常会带表名前缀例如“表名.MEAN”在后续做分级配色选字段时千万不要选成“AREA”或者原来的其他字段。另一个更稳妥的做法是连接成功后打开属性表添加一个新字段比如命名为PM25_省均然后用字段计算器把“表名.MEAN”的值拷进来最后再移除连接。这样一来省界的属性表就独立拥有了各省均值字段后续怎么折腾符号都不会因为连接丢失而慌张。4.3 分级配色让颜色符合人的直觉而不是让图“好看”就行分区统计完成后的省界面是单色块没法表达浓度差异。右键图层→“属性”→“符号系统”选择“分级色彩”值字段选4.2节生成的平均浓度字段。这里有两个重点。第一个是分类方法。我一般用“自然间断点Jenks”因为这个方法会自动寻找数据分布中差异最大的“断点”让类内差异最小、类间差异最大。PM2.5均值数据的分布往往偏态——少数高污染省份会把数值拉得很高用“相等间隔”分类容易把大多数省份挤到同一类里层次完全出不来自然间断点能更好地区分高值区。第二个是类别数量建议5到7类。太少看不出梯度太多图例冗长、颜色之间难以区分。颜色方案上如果是正式报告我强烈建议用“绿—黄—橙—红”或“浅蓝—青—黄—红”这类渐进暖色板低浓度浅色、高浓度深色符合人对污染的直觉联想。不要用系统默认那种蓝色到红色的花哨渐变也不要用深浅混搭的随机配色。图例名称建议写成“PM2.5年均浓度μg/m³”清晰完整不要只写“PM2.5”。色带调好之后整张图的信息量瞬间就出来了。4.4 布局排版与导出设置别让细节毁掉整张图数据配色都完成后点击ArcMap左下角的“布局视图”进入制图输出阶段。这一步的主要内容是插入图例、指北针、比例尺、标题和数据来源标注。插入图例时内容列表里可能有很多图层ArcMap默认会把所有可见图层都列进图例导致图面被无关图层撑满。更麻烦的是连续浓度面、省界、监测点三个图层如果都进图例图例会非常臃肿。我的做法是在内容列表里只把需要表达的那两三个图层拖到顶层并保持可见其他图层在插入图例时取消勾选。同时图例只保留必要的名称和色带示例不要显示太多默认的系统字段信息。比例尺的设置在投影坐标系下才有实际意义前面之所以苦口婆心劝你做投影转换就是为这一步铺路。如果数据还在经纬度坐标下比例尺会变成“度”在图纸上毫无参照价值。布局范围调整好后“文件→导出地图”论文插图建议导出TIFF或PDF分辨率选300dpi以上只是放在PPT或者汇报材料里JPG导出200dpi就够文件体积也小。国界表达完整是对地图的基本要求导出前记得检查底图自带的南海区域附图框是否保留完整这是所有涉图工作的基础规范。5. 常见问题与排查技巧实录这一节把我在实际教学和项目中反复遇到的坑集中整理一下按“现象—原因—解决办法”列成速查表遇到问题直接对号入座。问题现象常见原因解决办法监测点显示位置完全不对经纬度填反、坐标系选错检查列X选经度、Y选纬度坐标系选WGS84插值结果覆盖到公海和邻国没有设置处理范围或没有按掩膜提取对环境设置指定省界范围再用Extract by Mask裁剪插值结果出现大片空白NoData固定搜索半径导致稀疏区无样本或掩膜范围不完整改用可变半径、指定最少点数或插值前把输出范围略扩大分区统计连不上省界省名字段不一致、字段类型不一致统一省名写法确保连接字段同为文本或同为数字分区统计结果都是0栅格与省界投影不一致像元多数落在面外部统一投影到同一坐标系再统计出图背景发黑栅格NoData被默认显示为黑色符号系统中把NoData设为无颜色或透明图例文字乱码shp字段或字体编码问题字段用英文命名标注文字手动输入中文ArcMap界面高分屏模糊软件未适配DPI缩放快捷方式属性→兼容性→更改高DPI设置→选择“应用程序”插值工具全部灰色Spatial Analyst模块未启用自定义→扩展模块→勾选Spatial Analyst5.1 监测点显示位置完全不对这个问题出现频率最高而且每次的“错法”都很有规律。如果点位全部跑到非洲或者赤道附近基本就是经纬度填反了全国范围内经度在东经73度到135度之间纬度在北纬18度到54度之间出现几位数的点位时可以先肉眼判断一下。还有一种情况是添加XY数据时坐标系选错误选了投影坐标系导致点位置出现几公里甚至几十公里的偏移。排查时用“转到XY”功能输入几个已知城市的坐标看是不是落在正确位置事半功倍。5.2 插值结果覆盖到公海和周边地区插值前没有在环境设置里限定处理范围或者做完插值直接叠加省界而没有按掩膜提取。其实不用重跑插值对现有的矩形栅格再做一次按掩膜提取就行速度很快。我自己的习惯是两步都做插值前限定范围插值后必做掩膜双保险保证出图范围不出错。另外如果监测点本身有极个别离群的高值点插值图上会出现一个类似“肿瘤”的局部高值区审图时尤其刺眼遇到这种情况先回去核对原始数据是不是录入错误不要急着调参数。5.3 分区统计连不上或结果异常分区统计表连不上省界90%是因为省名在两个表中写法不一致一边写“内蒙古”另一边写“内蒙古自治区”或者编码规则不一致。连接前先统一名称的标准写法。如果连接字段类型不同比如一边是文本一边是数字也会连接失败或产生Null值。更隐蔽的问题是两个图层投影不一致导致栅格像元大量落在省界外统计均值大幅偏低甚至为0。我的排查顺序是先查投影再查字段类型最后查名称写法按这个顺序基本能定位问题。5.4 出图背景发黑、图例文字乱码背景发黑就一个原因栅格NoData被当成颜色显示了。打开图层属性→符号系统→找到NoData那一行→点击颜色块→在颜色选择器里勾选“无颜色”问题立刻解决。乱码则要从源头规避shp属性字段命名尽量用英文制图标注文字用“插入→文本”手动添加中文如果属性表里已有的中文值乱码把数据导入文件地理数据库gdb里通常能改善编码问题我在ArcMap 10.2上实测下来效果明显。5.5 高分屏界面模糊与工具灰色ArcMap 10.x在高分屏电脑上界面模糊是老生常谈。右键桌面上的ArcMap快捷方式选择“属性”→“兼容性”→“更改高DPI设置”勾选“替代高DPI缩放行为”把下拉值改成“应用程序”应用后重新启动软件界面就清晰了。工具灰色的问题在第1.3节已经提过再补充一个细节如果勾选了扩展模块但工具还是灰的检查一下当前打开的文档是不是处于“只读”或“保护”状态把文档另存一份再试有时能解决奇怪的界面状态。最后分享一点自己的实操体会。这套流程我第一次完整跑通用了整整两天大部分时间都耗在坐标系和NoData这种小问题上后来整理成标准操作流程从拿到数据到导出300dpi的正式图控制在半小时以内。新手第一次做建议不要急着追求完美先用一周的日均值数据把整条链路走通再换年度数据做正式版本。另外这个方法论其实非常通用——不只是PM2.5空气质量站点、雨量站、土壤重金属采样、房价点数据凡是“站点观测→区域展示→行政区统计”的场景都可以套用同一套流程。把数据整理和坐标统一这两件基础功夫练扎实后面就是复制粘贴改字段名的事。
返回列表