)
做气候数据分析的人应该都有这种体会想研究某个区域一百多年的温度变化找数据常常是最耗时的一步。站点观测数据零零散散要自己整理成逐年的区域均值得花不少功夫栅格气温数据虽然精细但动辄几十GB还得做裁剪、投影、区域统计光是预处理就可能耗上一个星期。这篇文章要分享的这份数据把流程简化了一大截覆盖1901年到2024年我国省市县三级行政区划的逐年平均气温数据同时提供Shp和Excel两种格式。Shp文件可以直接拖进ArcGIS、QGIS做空间可视化Excel文件则方便做统计分析和趋势计算两份文件的字段内容一致做哪个方向都有合适的入口。这份数据适合四类人搞气候变化趋势分析的做农业区划、作物适宜性评价的在生态模型、流行病学模型里需要温度做协变量的写毕业论文需要长序列趋势图的本科生、研究生。下面我从数据本身的解读、两种格式的使用逻辑、完整预处理流程、典型应用思路到常见坑逐一展开争取帮你省下一些摸索的时间。1. 数据资源概览124年温度序列背后的门道1.1 长时间序列为什么有价值做气候分析时时间尺度直接决定结论的可靠性。两三年的温度数据只能反映短期波动二三十年的序列可以看出冷暖周期而一百年以上的序列才有资格谈趋势和突变。1901到2024年这段跨度覆盖了20世纪初的偏冷期、中后期的波动以及近几十年的显著增温几乎能完整看到现代气候变化的主要过程。有了这个长度的序列算线性趋势、看年代际转折、做突变检测结果才站得住脚。从统计意义上看样本量大也让分析更稳。124个年值做回归自由度充足显著性检验不会因为样本太少而失真。审稿人和评审专家经常盯着样本量问问题这个体量基本能给出让人信服的回答。1.2 省市县三级粒度的适用场景数据的空间粒度决定了它能服务什么问题。国家级数据适合做全球或全国层面的宏观描述省级数据适合区域政策研究县级数据则可以支撑更落地的应用——比如某个县的设施农业规划、地方性气象灾害风险评估。这份数据把三级放到同一套体系里需要哪个层级就筛选哪个层级不用再在省级和县级数据之间做匹配对齐。尤其值得说的是县级数据。县域是很多政策执行的基本单元农业生产、乡村振兴、生态补偿等场景都以县为单位做统计和考核。过去县级气温数据很难搞到连贯长序列要么靠站点距离加权要么干脆缺数据。这份数据如果覆盖到县级且时间完整对基层研究者来说能省下大量自己动手插值的精力。1.3 数据来源与性质要提前弄清楚拿到数据后第一步不是急着画图而是搞清楚它的数据性质。据我了解市面上这类百年尺度的全国县级气温数据很少是纯站点观测直接汇总的因为在1901年全国能有连续观测记录的站点屈指可数。更常见的做法是在现代观测和再分析资料基础上采用空间插值或统计降尺度的方法重建出历史序列。这不代表数据不能用而是要提醒你注意两点第一历史早期特别是1901年到1950年左右重建数据的不确定性比近几十年大讨论具体数值时要留有余地第二论文若要发表建议在方法部分写明数据来源和不确定性出处这是学术规范要求也是对自己结论的保护。2. 两种格式的选择逻辑Shp管空间Excel管数值2.1 Shp格式在GIS里的正确打开方式ShpShapefile是GIS领域最通用的矢量格式一个完整的Shp数据包括.shp、.shx、.dbf、.prj等至少四五个文件缺一个都可能导致打开失败。拿到数据时先把所有同名辅助文件放在同一个文件夹里再拖进ArcMap或QGIS正常就能显示。打开之后最关键的是检查属性表。我遇到过不少用户Shp文件加进来后地图上有图形但属性表是空的或者只有OBJECTID一个字段原因通常是传输或解压过程中遗漏了.dbf文件或者属性表编码有问题。还要检查坐标系带.prj文件的话一般会写着地理坐标系WGS84或CGCS2000经纬度才准。做面积计算或叠加分析时要先投影到适合目标区域的投影坐标系不然距离和面积都会出错。2.2 Excel格式的统计优势和数据结构Excel格式的价值在于统计。气温趋势计算、多年平均、距平分析、相关分析这些直接用Excel函数或透视表就能完成不需要打开GIS软件。对非GIS专业的用户来说Excel门槛最低。以名为县级年均温的Excel表为例常见结构大致是省份、地市、区县、年份、年均气温°C一行一条记录。这种长表结构方便做透视表和数据筛选。想分析某个省的多年变化用筛选或SUMIFS就能提取用Python分析读取后按年份分组聚合也非常直接。有人会问我只想画图是不是只用Excel就够了分情况画折线趋势图Excel足够画空间分布图比如给各省上色Excel做不到必须靠Shp在GIS软件里完成。两种格式不是替代关系而是互补关系。2.3 宽表与长表各自的适用场景同样一份气温数据组织方式常见有两种。一种是宽表年份作为列名一行是一个区县另一种是长表年份作为一列同一个区县出现124行。两种结构各有优劣选哪个取决于你要干什么活。对比项长表结构宽表结构记录方式每行一个区县、年份、气温每行一个区县年份作为列行数区县数×年份数区县数GIS制图需先按年份筛选再制图直接选年份字段做分级渲染Excel分析透视表、分组统计方便人眼查看直观趋势需转置计算数据入库适合关系型数据库适合快速出表如果数据同时给了两种结构那是最好不过的制图用宽表、分析用长表省去自己转换的麻烦。如果只有一种建议自己转出另一种备用转换方法在第三章里详细说。2.4 格式转换的几个常用场景实际使用中经常要在两种格式间切换。比如在GIS里做完分析想把结果拿回Excel制表直接在ArcGIS中右键图层打开属性表全选导出为dbf或Excel即可。反过来想把Excel数据转成Shp参与空间分析前提是Excel里必须有行政代码或经纬度字段才能通过连接或坐标导入实现。还有一个常见操作是Shp转CSV或TXT。要用Python或其他统计软件处理空间属性数据直接在ArcGIS或QGIS里导出成CSV最省事导出时记得选UTF-8编码否则中文列名在Python里容易乱码。这种细节看起来小但能卡住人一下午。3. 数据获取后的完整预处理流程3.1 领域涉及的工具准备处理这份数据不需要太复杂的工具链条。基础配置是ArcGIS 10.8及以上或者QGIS 3.xExcel 2016及以上如果想用脚本处理Python 3.8以上配pandas、openpyxl、geopandas这三个库就够用。提到ArcGIS顺带说一句被问得很多的问题Excel表格怎么导入ArcGIS。操作很简单在ArcMap目录窗口里找到Excel文件直接右键选添加至当前地图或者用Excel To Table工具把工作表转成地理数据库表。但要注意Excel里的第一行必须是干净的表头不能有合并单元格否则导入后字段名会变成F1、F2这种序号后面的活全都没法干。还有人在ArcGIS里批量出图时想插入Excel统计表。这个需求很常见做法是先把Excel表格截图或者复制为图片再用布局视图里的插入图片功能放到底图上。不要直接在布局里嵌入Excel对象后期打印时容易出现格式错乱。3.2 属性表检查与字段梳理拿到数据后我习惯先做三件事检查文件完整性、检查坐标系、检查字段口径。文件完整性看一眼文件夹里的后缀就行坐标系在ArcGIS的图层属性Source标签里能看在QGIS里看图层属性信息栏字段口径重点看行政代码长度——县级代码在现行标准下一般是12位市级略短如果发现代码位数不对劲后续连接多半会出问题。顺带说个经验拿到数据不要急着改原始文件。先复制一份作为备份所有清洗操作都在副本上进行。我踩过一次坑把原始属性表直接改坏又没留备份最后只能重新找渠道获取非常耽误事。3.3 Excel表格的清洗和多表连接Excel侧的核心技能是清洗和关联。长表透视成宽表用透视表拖几下就行宽表拆成长表可以用Power Query的逆透视功能也可以写个简单Python脚本循环读取。两种结构互转之后再合并其实都是在做同一件事让数据形态匹配你的分析目标。清洗时重点处理三类问题文本型数字行政代码列经常是文本格式但有时会混入几行数字格式统一再清洗一次。隐藏字符从网站或PDF复制来的代码里常有不可见空格用TRIM和CLEAN函数批量清理。空值个别年份可能有缺测先统计空值数量再决定是插补还是剔除不要放任不管。3.4 把Excel数据关联到Shp这是使用频率最高的一步也是翻车率最高的一步。典型需求是Shp里只有区划边界Excel里才有气温数值要把Excel挂到Shp上做专题图。核心前提是两个表必须有一个共同字段通常是行政代码。Excel里的行政代码必须是文本格式且长度、位数与Shp完全一致。不少人遇到过明明两个表都有代码连接之后一大半是Null十有八九是一个表存文本、另一个表存数字或者代码里有隐藏空格。解决办法是先在两侧清洗字段统一格式、去空格、位数补零再执行连接。在ArcGIS中右键目标图层选Joins and Relates下的Join指定共同字段在QGIS中也可以用属性连接工具注意按分析目的选择保留所有记录还是仅保留匹配行。连接完成不等于万事大吉建议对几个关键县做抽查对比Excel原值和连接后的值是否一致。3.5 截面提取从长表Shp里抽某个年份如果Shp采用长表结构做某一年比如2020年的省级分布图时要先把该年份的要素提取出来。在ArcGIS里用Select By Attributes写年份 2020然后导出所选要素为新图层再制图在QGIS里用按表达式选择要素导出或保存为单独图层方法类似。如果是宽表结构直接用年份字段做分级渲染。分级方案上温度数据建议用渐变色调把低温区和高温区明显区分图例数值保留一位小数就够两位小数显得杂乱输出图片前在布局视图里检查比例尺和图例位置避免要素压盖。4. 基于这份数据的典型应用思路4.1 省级温度趋势的快速计算拿到数据后最简单直观的应用就是算省级趋势。步骤是把Excel数据按省份、年份做聚合求均值得到每个省124年的省级年均温序列再逐省计算线性趋势。以省级数据为例如果某省的趋势是0.2°C/10年意味着过去一百多年温度上升了2°C多与全球陆地平均增温幅度量级接近。这种结论用数据支撑起来比笼统说气候变暖要扎实得多。省级尺度上把各个省级单位的趋势都算出来画成柱状图或者地图能清晰看出东西差异和南北差异也能和已有文献做对比验证。4.2 县级尺度上的冷暖空间格局县级数据的颗粒度能看出更细的东西。比如把最近10年的县级年均温做分级渲染你会看到温度的空间格局与地形高度耦合——高原、山区等海拔较高的县明显偏冷同处南方但海拔较高的县也会比周边低好几度。这类图上能发现不少有意思的现象。有些过去被归为暖区的地方在更细的县级数据下内部其实嵌套着相对低温的小区域这对做农业精细化种植区划非常有价值。把时间维度加进来比如计算近30年各县级单位的升温幅度还能识别出哪些县域对气候变化更敏感这类结果很受地方决策者欢迎。4.3 结合其他数据的扩展分析124年的温度数据不只是拿来画图它更大的价值在于叠加到其他科学问题上。举几个实际例子农业方面结合作物物候期数据分析积温变化趋势评估一个地区还能不能种某种作物生态方面结合植被指数数据看温度升高与植被生长季长度的关联公共健康方面结合流行病学数据分析平均气温在疾病传播中的背景作用水利能源方面结合降水数据分析暖干化或暖湿化趋势对水资源调度的影响。这类跨学科应用对数据的格式要求很宽松只要按年份和行政代码做筛选关联124年的时间跨度就能直接覆盖整段现代变暖过程。唯一要提醒的是跨数据源时注意行政区划版本的一致不同数据集的县界可能不同要提前统一口径。4.4 从制图到成果输出分析做到最后总要输出成果。GIS软件里做专题图建议输出之前先把坐标系统一好比例尺和图例放在布局里检查一遍Excel图表则注意坐标轴的单位说明气温单位一定要标为°C。输出图片时个人经验是导出矢量格式如PDF或SVG用于论文投稿导出高分辨率PNG用于汇报PPT。这样图片在任何场合放大都不会糊也方便后期在排版软件里继续编辑。5. 容易踩的坑与排查方法5.1 行政区划变动导致的口径问题这是长时序行政区划数据最难处理的问题。从1901年到2024年我国县级以上行政区划经历了持续调整有些县撤并了有些县改成了区有些地区改了名还有很多县是新设立的。一份以现行行政区划为基准的数据早期年份的气温值实际上是从旧区划范围重构或插值过来的口径不可能完全一致。处理方法分析前先确认数据文档中写明的基准版本比如基于2020年或2024年行政区划。做时间序列分析时中途出现某县名称中断或数值跳变先不要急着当异常值剔除先查是不是区划调整造成的。实在影响分析可以考虑把结论放到省级尺度省级区划相对稳定得多。5.2 Shp属性连接失败的排查清单属性连接失败是高频问题现象一般有两种连接后大量字段为Null或提示找不到字段。我把排查思路整理成一张表现象最常见原因解决方法连接后Null值两侧行政代码类型不一致将Excel侧代码转为文本与Shp侧位数对齐连接后Null值代码包含隐藏空格或全角字符用TRIM和CLEAN函数清洗Excel数据提示找不到字段字段名含特殊字符或重名连接前重命名字段为简单名称如ADCODE连接后要素数量变化目标表的关联记录不完整在QGIS中按需选择保留所有记录或仅保留匹配行中文乱码编码不一致统一用UTF-8编码导出和读取这张表里的每一项我都踩过不止一次尤其隐藏空格肉眼完全看不出来用LEN函数数一下字符数才发现比预期多。提前做完这些检查能省下大量时间。5.3 Excel打开Shp属性表乱码的问题一个很实际的场景想在Excel里直接打开.dbf文件查看属性表结果中文全部乱码。原因主要是ArcGIS导出属性表时用了系统默认编码与Excel默认打开的编码不一致老版本软件之间尤其常见。解决方案有三个第一在GIS软件里直接右键图层导出为Excel格式而不是导出.dbf再打开第二用文本工具转码后再在Excel里打开第三在QGIS中导出时选择UTF-8编码。我个人的习惯是凡是跨软件使用的表格统一走导出Excel或CSVUTF-8这条路基本不出乱码。5.4 Excel加载项和函数使用中的小问题用Excel做趋势统计时常有人问回归分析和显著性检验怎么做。Excel默认没有数据分析工具库需要手动加载文件-选项-加载项-转到勾选分析工具库再确定。如果遇到加载项被禁用的提示重新勾选启用并重启Excel即可。函数方面SUMIFS是筛选统计的利器。比如要统计某省某年份段内的平均气温语法是SUMIFS求和区域省份列条件省年份列条件起始年 SUMIFS同样条件条件结束年的组合或者直接用AVERAGEIFS会更简洁。另一个常见问题是公式下拉失效多半是计算选项被设为了手动改成自动重算就行。5.5 结果解释方面的两条提醒用124年数据算趋势样本量大是优势但依然要避免两个典型错误。一个是用平均值代表全部年份而忽略数据本身的阶段性另一个是把趋势简单外推到未来尤其是线性外推这在气候研究里是被批评的做法。再提醒一点看到某一年的气温值特别高或特别低先查数据有没有异常。有些数据集会把个别年份标记为估计值通常有注释字段精简版本可能看不到注释极端值的合理性需要自己判断。稳妥做法是选几个参考年份和公开气候公报做交叉验证确认数量级一致再继续分析。6. 数据管理习惯与后续扩展建议6.1 一套实用的工作流分享一套我自己常用的工作流。原始文件严格保持只读工作文件放在项目文件夹下Shp负责空间展示Excel负责数值分析所有清洗后的版本都带日期后缀保存方便回溯。这个习惯让我很少遇到数据被改坏要重来的情况。具体执行上我会建三个文件夹原始数据、中间数据、成果输出。中间数据放清洗和连接后的版本成果输出放图表和地图。有科研合作时这套结构也方便交接对方一看文件夹就明白每一步处理在哪里发生沟通成本低很多。6.2 结合开发工具的扩展玩法如果自身有一定开发基础这份数据还可以走得更远。比如用geopandas读取Shp配合pandas做批量统计再结合folium输出交互式地图或者把Shp转成GeoJSON放到Web前端做可视化展示做气候数据面板之类的东西。最近圈子里把矢量数据转3DTiles做三维场景展示的人不少县级边界配合温度数据做三维柱状图展示效果相当直观不过那一步需要一些GIS二次开发功底量力而行。6.3 建议收集配套数据温度数据单独使用价值已经不错但搭配其他气象要素才会更好用。建议顺手收集同源的降水、日照、湿度等长序列数据保持行政区划口径一致后面做综合气候区划、干燥度指数、积温分析都会方便很多。如果条件允许再收集一份数字高程模型DEM数据就能进一步分析海拔对气温分布的影响把县级气温的空间格局解释得更透。最后再分享一点个人体会。数据预处理在整个项目周期里往往占掉一半以上的时间而好的数据源能把这段时间压缩一大半。这份1901-2024年的省市县三级逐年平均气温数据对我来说最大的价值不是省去了找数据的功夫而是让时间序列分析有了一个口径统一、层级完整的基础底稿。如果你刚开始接触这类数据不要只盯着最新一年的数值先把124年完整序列画出来感受一下数据的内在结构和波动再进入具体分析。数据有自己的历史和脾气摸清楚了再下手后面会顺很多。