资讯动态

1980-2024年县级逐日相对湿度数据:处理分析与应用指南

发布时间:2026/10/16 1:46:28 来源:尧图企业网站定制
1. 一套长序列湿度数据能撬动的分析场景做气候数据处理这行时间长了你会发现一个很现实的问题温度、降水数据容易拿到但相对湿度数据——尤其是长序列、逐日、还能落到县区一级的——在国内公开渠道里一直是稀缺资源。我自己早年在做区域人居环境评估时为了凑齐县级逐日湿度数据前前后后折腾过卫星反演产品、再分析资料、站点观测汇总每种渠道都有各自让人头疼的地方。所以当看到有一套1980到2024年、覆盖省市县三级、按逐日颗粒度整理的相对湿度数据并且同时提供Shp和Excel两种格式时我的第一反应是这套东西能撬动的分析场景比标题看起来要宽得多。先说说相对湿度这个要素本身的特殊性。它不像温度那样有很强的空间连续性也不像降水那样有明确的离散事件特征它是一个受气温、水汽压、下垫面性质共同影响的复合型变量。也正因如此它在很多研究里不是主角却是不可或缺的环境背景变量。比如农业领域研究作物病害爆发条件湿度就是关键阈值指标建筑气候分区里头湿热地区与干热地区的设计策略完全不同靠的就是湿度数据来划界限还有人体舒适度评估、文物保存环境分析、电力负荷预测、森林火险等级计算这些场景全都要用湿度做输入或做约束。这套数据最有价值的地方我认为是三点叠加时间跨度长、空间颗粒度细、时间分辨率高。时间跨度45年意味着可以做气候变化背景下的长期趋势分析比如干燥度演变、季节更替规律变化这些必须靠长序列才能压得住年际波动。空间落到县一级意味着可以匹配社会经济数据、人口数据、土地利用数据做交叉分析不用再忍受省级平均带来的信息损失。逐日数据则给了研究者极大的自由度——你可以自由聚合到旬、月、季、年也可以专门挑极端事件去分析比如连续干燥日数、高湿闷热天气过程。这三者叠加在一起基本上把从宏观气候诊断到中微观应用评估的绝大多数需求都覆盖住了。后面的章节我按照自己实际处理这套数据的顺序来展开先讲格式和数据结构层面的判断再讲质量控制和预处理接着是典型分析的实现路径最后是那些不琢磨根本发现不了的坑。2. 拿到数据先别急着分析Shp和Excel两种格式的使用逻辑2.1 Excel格式适合做什么不适合做什么Excel格式的优势每个人都懂打开就能看、透视表能拉、公式能算对不熟悉GIS软件的人来说完全没有上手门槛。但我要说的是另一面——Excel格式在这套数据里最合理的用法是做“查值”和“预处理”而不是直接做空间分析。实际操作中你会发现Excel表的核心字段一般也就是行政区代码、行政区名称、日期、相对湿度值这样几列。真正用起来建议按照下面这个流程走先用行政区代码做去重校验确认县级单元数量是否完整然后把宽表一个日期一列转成长表日期作为独立行方便后续用pandas或其它工具批量处理再做缺失值标记和初步的可视化探查画出几个典型站点的时间序列曲线看看有没有明显异常最终分析阶段用Excel做筛选、排序、分组汇总这类轻量级操作重活交给代码或GIS工具。这么说吧Excel非常适合作为数据“观察窗口”但一旦进入批量计算、空间匹配、长时间序列统计这些环节它的效率和能力就顶不住了。所以这套数据同时给Shp格式本质上就是让你在探索阶段用Excel、在正式分析阶段用Shp分工配合。2.2 Shp格式真正打开方式属性表挂接与空间化表达Shp格式Shapefile是GIS领域最通用的矢量数据格式之一。这套数据里的Shp文件我推测是这样组织的每个行政单元对应一个面要素属性表里挂接的是这个单元在不同时间点上的湿度值序列。打开方式推荐用QGIS或者ArcGIS如果你是写代码的那就用geopandas直接读一条gdf gpd.read_file(路径)就能把面和属性一起读进来。这里有一个特别重要的判断要提醒你Shp格式本身对长时序数据并不友好。一个经典的做法是把逐日数据组织成“一行一个县、一列一个日期”的宽表结构但这样的属性表会有上万列任何GIS软件打开都会卡到怀疑人生。所以我拿到Shp之后第一件事永远是确认它的属性表结构——如果它挂的是年度或月度汇总值那就直接用来做空间分布制图如果它挂的是逐日值你需要先在GIS里做字段筛选或者直接用代码抽子集别一股脑全加载。这个“格式即结构”的判断直接影响后面的工作流程千万别省略。2.3 字段结构、坐标系和编码问题的预先排查拿到Shp后有三个细节必须在处理任何数据之前排查掉坐标系国内行政区划数据通常有两种坐标表达——经纬度WGS84或CGCS2000和投影坐标各种高斯-克吕格投影。如果是经纬度做全国尺度分析没问题如果要做面积计算或局部高精度空间分析一定要先确认坐标系并统一到目标投影否则面积、距离全是错的。属性字段编码Shp的dbf属性表对中文字段名和中文值的兼容性向来不好。我在实践中经常遇到的情况是用ArcGIS打开正常但用Python的geopandas读出来中文变成乱码。解决办法很简单——读取时指定编码比如gpd.read_file(..., encodingutf-8)遇到乱码再试gbk或gb2312。行政区代码一致性Excel表和Shp属性表里的行政区代码必须完全统一否则后面做关联匹配时会出现一对多或多对一的问题这是空间数据与表格数据整合时最常见的数据事故源头。这一节可以总结成一句话拿到双格式数据先花半小时做“格式结构审查”再开始你的分析这个时间花得一定值。3. 45年逐日序列的质量把控预处理是决定分析上限的环节3.1 时间序列完整性检查先查日历缺口再谈插补逐日数据最怕什么最怕某年缺了几个月、某县某年整年空白而这种问题在长序列数据集里几乎必然存在。我的建议是任何统计和建模之前先写一段脚本做完整性体检。以Python为例思路是这样的import pandas as pd # df要求包含三列code(行政区代码)、date(日期)、rh(相对湿度) df[date] pd.to_datetime(df[date]) # 为每个行政单元生成完整日期索引并做对比 full_index pd.date_range(1980-01-01, 2024-12-31, freqD) for code, group in df.groupby(code): missing_dates full_index.difference(group[date]) if len(missing_dates) 0: print(f{code} 缺失 {len(missing_dates)} 天)判断标准上我个人会分三档缺失率低于1%正常范围按日前后均值或气候态均值插补即可缺失率在1%到5%之间需要谨慎优先用同站前后时间的线性插值再看相邻站点回归估算缺失率超过5%或存在连续30天以上缺口建议直接放弃该县该年份的逐日分析把它标记为不可用时段不要强行插补。很多人一上来就做插补把缺失值全部填成平均值最后算出的趋势和极端事件指数全被污染了。正确的顺序永远是先诊断、再判断、最后才处理。3.2 极端值识别相对湿度数据里的异常往往不是“超标”而是“跳变”相对湿度本身的物理范围是0到100%所以超界值检查很简单——小于0或大于100的数值直接定性为异常。但真正难识别的是那些在物理范围内、却明显不符合天气过程逻辑的“跳变值”。我举个实际例子某个县7月15日的湿度值是88%7月16日突然变成12%7月17日又回到75%。这种波动在单日尺度上几乎不可能发生——除非有沙尘暴或特殊天气过程但连续出现这种尖峰震荡基本可以判断是数据记录或转录错误。检测思路是用“前后滑动窗口的差分阈值”# 计算每个站点逐日变化量 df[diff] df.groupby(code)[rh].diff() # 定义异常单日变化超过50个百分点依据气候学常识可调整 outliers df[abs(df[diff]) 50] print(outliers[[code, date, rh, diff]].head(20))这里的50个百分点是我在实践中的经验阈值你可以根据区域气候特征调整——干旱区的变化幅度天然比湿润区大但即便如此单日超过50个百分点的跳变仍然还是可疑的。识别出来后不要直接删先做人工核查结合该时段天气背景判断是真实事件还是数据错误。3.3 站点代表性与空间连续性的交叉验证这套数据在县级尺度上大概率来源于站点观测的插值或栅格统计所以存在一个隐含的空间平滑效应。验证方法很简单以县为单位计算每个县与周边相邻县的同期湿度相关系数。如果某个县和它所有邻居的相关系数都低于0.6这个县的数据大概率有问题——要么是站点代表性差要么是局部数据源误差大。空间一致性验证还有一个实用场景制作湿度分布图时那些“孤岛式”的极端高值或低值像素往往不是真实气候特征而是数据拼接产生的缝隙。遇到这种问题我的处理方式是构建一个基于邻域均值的修正项把孤立异常值向空间趋势拉回而不是简单删除。4. 从数据到结论三类典型分析的实现路径4.1 区域干燥度演变趋势分析这是最基础也最出成果的分析类型。做法上先把逐日数据聚合成月和年尺度以县为单位计算年均相对湿度然后做趋势检验。操作路径按年和县分组求平均相对湿度用Mann-Kendall趋势检验或简单线性回归斜率计算每个县45年趋势方向和幅度把趋势值通过行政区代码挂回Shp属性表制图输出并用分级色彩展示“变干区”和“变湿区”。这一步的产出非常直观你会得到一张全国县级湿度趋势分布图能清楚看到哪些区域的干燥化趋势显著哪些区域在增湿。如果再叠加行政区划边界和主要农业产区数据就能进一步看出趋势对农业的影响范围这也是很多研究报告里最常用到的基础图件。4.2 极端干燥事件识别逐日数据最大的优势之一就是能识别极端事件。相对湿度领域的典型极端事件指标包括指标类型定义典型用途最长连续干燥日数相对湿度低于某阈值如30%的最长连续天数农业干旱、森林火险评估年干燥日频率全年湿度低于阈值的天数占比区域干燥化诊断高湿闷热事件频次温度高于28℃且湿度高于80%的天数人体舒适度、公共卫生研究季节性突变点湿度时间序列中趋势转折的年份气候突变检测以“连续干燥日数”为例逐日数据拿来做这件事非常简单也不需要引入复杂模型一句循环就能算清楚# 生成连续干燥序列标记 df[dry] (df[rh] 30).astype(int) df[group] df.groupby(code)[dry].diff().ne(0).cumsum() # 统计每个县每年的最长连续干燥日数 spells (df[df[dry]1] .groupby([code, group])[date] .agg([count, min, max]) .reset_index())有了逐日的底子你还可以把阈值改成动态的——比如根据每个县的背景气候态设定百分位阈值识别“相对于本地气候而言的极端干燥过程”这比固定阈值更有气候学意义在研究论文里也更经得起推敲。4.3 空间分布与时间剖面联合可视化数据分析和论文写作常常需要“空间时间”的联合表达。用Shp数据你可以做年际空间分布对比——比如选取1985年、2005年、2024年三个典型年份做湿度分布图对比然后用并排图或小倍数图展示演化过程。更进阶的做法是提取一个指定县的完整时间序列用热力图矩阵来表达“横轴为月份、纵轴为年份、颜色深浅代表湿度值”这种图表一年四季的变化规律一目了然。做这类图可以用matplotlib或者专门的海洋气象绘图库数据处理本身不复杂但对数据质量要求很高——如果某个年份出现大段缺失热力图上就会显出一条难看的空带直接影响成图效果。所以这里必须反复强调可视化的成败早在预处理阶段就决定了拿一份没做过质量控制的逐日数据出图等于在一堆错漏上面盖了一层更漂亮的伪装。5. 实战经验这套数据使用中反复出现的几类问题5.1 相对湿度与绝对湿度别在讨论里混淆概念相对湿度是“实际水汽压与饱和水汽压之比”它高度依赖于温度。同样的水汽含量温度高时相对湿度低温度低时相对湿度高。这就带来一个常见误解某个地区相对湿度下降不一定代表空气变干也可能纯粹是因为温度升高导致饱和水汽压上升。我在看数据分析报告时经常遇到这类结论误读。要规避它最稳妥的办法是同时分析温度和湿度两个要素或者直接计算水汽压、比湿等绝对湿度指标做交叉验证。如果条件允许用这套逐日湿度数据配合同期的逐日温度数据反推实际水汽压序列能获得比单一相对湿度指标稳健得多的气候变化信号。5.2 行政区划代码变动长序列数据分析最大的隐藏地雷1980到2024年中国县级行政区划发生过大量调整——撤县设区、县市合并、新设县级单位每一个变动都意味着行政区代码的变化。如果直接用2024年的行政区代码去关联1980年的数据或者反过来用1980年代代码匹配现在的空间边界会导致严重的时间和空间错位。我在实践中总结了一套应对流程先查资料整理研究时段内发生过代码变更的县级单位清单对发生变更的区域建立新旧代码对照表分析时段尽量采用“现势行政区划”为空间基准把历史数据统一归并到当前代码框架下如果某个县的辖境发生过较大变动尝试把变动前后数据分开处理宁可损失部分年份也不要混用。这一步做得是否细致直接决定了长序列分析结论的可靠性。很多研究把这个环节轻描淡写带过但恰恰是它最容易让文章在评审阶段被质疑。5.3 栅格插值到行政区统计的尺度陷阱这套数据如果来源于栅格产品向行政区划的统计降尺度那么你还需要警惕一个尺度陷阱栅格到面域的聚合方式不同结果差异会很大。举个具体例子对某个县内的栅格像元求算术平均得到的是“县内空间平均湿度”如果按人口或耕地面积加权平均得到的是“人口/农业暴露加权湿度”如果只提取县内某个站点位置的像元值得到的是“单点代表值”。三种做法数值差别可能达到5到10个百分点。在研究农业干旱、人体舒适度时加权方式对了结论才站得住。所以拿到这套数据后建议先找几个县做抽样对照确认这套数据的聚合口径是哪种再决定后续分析要不要做权重修正。5.4 制图输出中的“伪精度”与视觉误导最后聊一个偏展示层面的问题。县级尺度制作湿度分布图填色边界本身就有“行政边界内的均一化”假设——同一个县内部真实湿度空间差异可能很大但图上只能填一种颜色。所以无论趋势图还是分布图都不建议在报告中用“XX县平均湿度是XX%”这种表述把县内差异当成零来处理。更好的做法是面向研究时用县级统计做分析同时明确标注这是“县域平均”而非“县域真实空间分布”面向展示时搭配湿度栅格产品的连续分布图做对比让读者知道县级填色图做了多大的空间抽象。这种严谨的表达方式虽然不是硬性技术要求但在学术交流和业务报告里非常加分。写在最后的一点体会回头来看这套1980到2024年的省市县三级逐日相对湿度数据真正的价值不在于“数据量大”而在于它把时间深度、空间广度和逐日精度这三样东西放在了一起。很多研究课题卡住的不是方法而是数据——没有长序列就没法谈趋势没有县级尺度就没法做精细化评估没有逐日值就没法识别极端过程。这三样缺一样分析链条就会断掉。我自己在这套数据的处理过程中最大的心得其实是“慢下来做质检”。逐日长序列数据天然自带各种坑缺失、跳变、编码混乱、口径不清、代码变动每个坑都可能在某个不起眼的环节让你的结论悄悄偏掉。把前面讲的那些检查和预处理步骤老老实实走一遍虽然会多花一到两天时间但后面出结果、出图、写报告的时候你会省下十倍百倍的返工时间。如果你准备用这套数据做研究或项目我的建议是先想清楚自己要回答什么问题再决定用哪种格式、做哪些预处理、需要挂接哪些辅助数据。数据是工具问题才是起点。愿这篇文章能帮你少走几个弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑