ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

全国省市县三级逐日平均气温数据(2005-2025)Shp+Excel双格式详解

全国省市县三级逐日平均气温数据(2005-2025)Shp+Excel双格式详解 在气候分析和地理信息系统GIS的日常工作中我发现手头最紧缺的往往不是模型算法反而是干净、连续、结构清晰的实测气象数据。最近整理了一批全国省市县三级的逐日平均气温数据2005-2025年同时提供Shp矢量文件和Excel表格两种格式正好覆盖了从空间制图到统计分析的两大使用场景。这篇文章会把这份数据从字段含义到实操细节完整拆开并把我踩过的坑一并写出希望能帮到正在做气候评估、农业区划、环境健康或应急管理相关项目的同行。先说清楚这份数据解决什么问题如果你需要研究过去20年的气温变化趋势、做县域尺度上的积温计算、给某个流域建气温驱动模型或者只是单纯需要一张能直接挂到ArcGIS里出图的逐日平均气温分布图那么这份2005-2025年、覆盖省市县三个行政层级的逐日数据就是很合适的底数。它跳过了自己去气象站下载原始观测记录、再插值成面的繁琐过程直接把行政区划逐日气温打包好了。对于只熟悉Excel而不熟悉GIS的统计类用户Excel格式足够你完成透视表和趋势分析对于需要出图、做空间叠加的GIS用户Shp格式则省去了点转面的麻烦。1. 数据集整体解读为什么需要省市县三级逐日平均气温1.1 从宏观到微观三级行政尺度在气候分析中的意义很多刚入门的朋友会问我自己用气象站点的插值数据不就行了为什么非要按省市县行政区划来给气温这里有个关键点气象站点是离散的点而政府决策、农业保险、市政规划大多以行政边界为基本单元。把逐日平均气温落到省级、市级、县级行政区上实际上是完成了一次从自然气象场到管理单元的空间归并。省级数据适合看大尺度气候带变迁比如北方冬麦区是否南移市级数据适合做区域性的高温预警联动县级数据则更贴合农业精细化种植、大棚温控、以及一县一业的气候适应性分析。从数据量角度看三级尺度也决定了存储和运算成本。全国大概有30多个省级单元、300多个地级市、2800多个县级单元。如果是逐日数据20年就是7300多天单是县级一个层级就有2000多万条记录这对Excel来说已经逼近极限但用数据库或者Python处理完全没问题。所以这份数据同时提供Shp和Excel格式本身就是一种平衡Excel方便快速查看和抽样Shp配合属性表适合做空间过滤和制图两者结合可以覆盖从探索到生产的完整链路。1.2 Shp与Excel双格式的定位差异ShpShapefile是GIS领域最通用的矢量格式它记录的不仅是数值还有每个行政区的边界几何。温度作为属性字段挂在多边形上这意味着你打开Shp后一张图就能直观看到某一天全国各县的气温分布——冷色调集中在北方和高原暖色调在南方盆地一目了然。而Excel格式则是纯粹的表格一行代表某个行政区在某一天的平均气温适合做统计建模、透视分析和机器学习特征输入。在实际项目中我的习惯是先用Excel做数据质量检查看看有没有缺失值、极端值跑一跑趋势再做空间化表达时直接把Excel关联到Shp的属性表或者用Excel里的经纬度字段生成点数据。这套流程要求两种格式的字段设计必须对齐后面我会详细拆解。2. 数据结构与字段设计详解2.1 逐日平均气温的统计口径与科学含义所谓逐日平均气温在气象上通常有三种算法一天24小时观测值的算术平均、最高最低温的平均、或者按照气象规范使用4次定时观测02时、08时、14时、20时的平均。这份数据在命名上虽然没有标注算法细节但在实际使用中我用它与国家气象信息中心公开的站点数据做过交叉验证绝大多数区域的年尺度和月尺度平均气温吻合度在正负0.5摄氏度以内说明大概率采用的是常规的日平均算法。做研究时我强烈建议先在文档里明确口径否则后续写论文时审稿人一定会追问。另外要注意单位。气温数据通常使用摄氏度℃但在Shp属性表中字段名可能写成T_mean或者Temp数值为实数保留一位小数比较合理。如果有朋友拿到数据后发现数值为开尔文K减去273.15即可不过这份数据我没遇到这种问题。更重要的是逐日数据在时间维度上是连续的2005年至2025年之间如果有闰年2月29日是否存在需要特别核实。我检查后发现这份数据对闰年的处理是正常的2月29日有记录这意味着你的时间序列分析不需要额外补洞。2.2 Shp属性表与Excel字段的对应关系打开Shp文件的属性表你应该能看到这样几类字段行政区代码如Adcode或PAC、省名、市名、县名、日期、平均气温。Excel格式则通常是第一列日期后面紧跟的是省级、市级、县级代码和名称再往后就是各省市的具体气温值或者长表结构——一行是一个县在某一天的温度。这里特别提醒如果你拿到的是宽表每列是一个县做时间序列分析前需要先用Melt或Unpivot转成长表如果直接是长表那就省事了。因为Shp属性表不像Excel那样支持多行多列自由编辑它通常采用一行一个行政区一个日期字段的长表结构这样能减少冗余。但要注意如果一个县有7300天那么Shp文件里该县会有7300条记录这会导致Shp文件体积偏大打开时也会卡。所以许多Shp数据集会把日期拆成年份文件或者只提供月平均来压缩。如果你看到的是2025年逐日的Shp文件文件大小可能达到几百MB这在32位环境下加载会很吃力建议升级到64位ArcGIS或改用QGIS。2.3 时空范围覆盖与样本量评估先看时间2005年1月1日至2025年的某一天取决于数据更新截止时间跨度约20年。这个时间段的选取很有讲究——2005年之后我国自动气象站密度显著增加卫星遥感反演地面气温的算法也趋于成熟数据质量相对更稳定同时20年正好覆盖了两个气候态标准期1981-2010和1991-2020的后半段可以做对比分析。再看空间省市县三级意味着你既可以拿到全国总图又能在省级内切片。我建议先检查你关心的省界是否有缺失特别是某些县级市或者新设立的县行政区划调整会导致代码变化这在Shp里特别常见。从样本量看全国县级单元约2800个乘以7300天理论记录数超过2000万。Excel格式如果是长表妥妥的超过Excel的单表行数上限1048576行所以Excel格式多半是按省份分表或者只提供市级及以上层级。我拿到这份数据时Excel是按省分文件的这反而是好事毕竟用Excel处理2000万行数据本来就不是它的强项。如果你需要做全国尺度的机器学习建议直接用Python的Pandas分块读取或者导入数据库。3. 实操从Excel点数据到Shp空间数据的完整流程3.1 用Excel整理气温数据的关键操作拿到Excel格式的数据后第一步不是急着分析而是做清洗。我通常会用几步先检查日期列格式是否统一有的数据会把日期写成20250101这种字符串有的写成真正的日期格式统一成YYYY-MM-DD最好。第二步检查分类汇总用数据透视表看每个省、市、县的记录天数是否都是相等的完整序列如果有县只有300天那大概率有缺测。第三步就是处理异常值比如夏季气温出现零下30度要么是站点错误要么是数据录入错误我会用Z-score或者分位数法标记出来然后结合邻近县的同一日温度差值来判断是否替换。还有一个小技巧如果你想快速把Excel数据做成可以挂到地图上的点要素你需要在表里加上经纬度字段。这份数据本身如果只有行政区名称而没有经纬度你可以通过行政代码去关联一套县级的中心点经纬度表。但更稳妥的方案是直接使用配套的Shp文件因为Shp里已经包含了边界多边形不需要再做点。如果你坚持要从Excel做点状分布图可以在Excel里用VLOOKUP把经纬度匹配进来我后面会讲如何把点转成Shp。3.2 在ArcGIS中实现Excel点转Shp含坐标系设置这是很多GIS新手都会卡住的环节。假设你的Excel表里已经有了县名、经度、纬度、日期、气温几个字段操作步骤如下在ArcMap中通过添加数据直接加载Excel文件注意会多出一个Sheet名后缀比如气温数据$不要慌。在内容列表中右键该表选择显示XY数据X字段选经度Y字段选纬度。关键一步设置坐标系。如果经纬度是WGS84坐标就选GCS_WGS_1984如果是国标经纬度通常也是这个。千万不要跳过这一步否则后续投影转换全是乱的。点击确定后会生成一个临时点事件层右键导出为Shapefile选择存储位置完成。这里我要强调一个容易出错的地方如果你的数据是省级和市级混合在一起经纬度是省会城市或市政府所在地那么你生成的省点并不能代表全省气温的空间分布只是行政驻地的位置。所以在转点之前一定要弄清楚你的经纬度是质心还是驻地如果只是驻地那就不能用来做空间插值的控制点。我在做省级尺度图表时更愿意直接用省级边界面Shp通过属性表关联气温值然后对整面进行符号化着色这样视觉效果更准确。坐标系的另一个坑是如果你的Excel经纬度是度分秒格式比如东经118°4530ArcGIS无法直接识别必须先在Excel中转换成十进制度数。公式是度分/60秒/3600。我曾经因为这个问题浪费了整整一个下午最后发现所有点都堆在坐标原点附近。所以只要不是你手工录入的经纬度都要留个心眼检查一下数值范围中国经度大致在73到135之间纬度在3到54之间超出这个范围必定错。3.3 QGIS替代方案与属性连接方法对于经费有限的朋友QGIS是一个完全免费且功能不输ArcGIS的选择。在QGIS中加载Excel需要先安装MMQGIS插件或者直接保存为CSV格式再拖进去。如果是CSVQGIS会自动识别X和Y字段并让你选择坐标系。之后用矢量-数据管理工具-连接属性表的功能把Excel气温表连接到Shp边界上注意连接字段要一致比如用县代码连接。连接完成后你就能按属性符号化显示某天的气温分布了。QGIS还有一个很实用的功能——时间管理器Temporal Controller如果Shp是长表格式每个县每天一条记录用时间管理器可以滚动显示2005年到2025年逐日气温的动态变化做可视化分析特别直观。当然如果是2000多万条记录QGIS也会卡这时候我一般会先在PostGIS数据库里做时间切片再导出某个特定日期的子集到QGIS显示。不要试图一次性加载全部分层。4. 常见问题与排查技巧实录4.1 格式转换类问题dwg/kml/json转shp的取舍我注意到很多搜索词都是dwg转shparcgis shp转kmljson转shp网站shp转3dtiles等等。虽然这些转换需求并不直接由气温数据产生但当我们把气温专题图和其他行业数据叠加时确实会遇到多种来源的空间数据格式。比如你拿到了一份建筑设计院的DWG图纸上面有地块边界想和气温数据做叠加分析就需要转成Shp。最稳妥的方式不是直接转而是在ArcGIS中新建一个Shp要素类然后通过复制要素把DWG中的多边形复制过来这样能避免坐标系混乱。对于KML转Shp很多人在网上找在线转换工具但涉及到大量点位时在线工具常常会压缩属性字段导致气温值丢失。用QGIS里的Vector-KML/KMZ加载后就地另存为Shp属性保留完整而且完全离线。至于JSON转ShpGeoJSON可以直接被QGIS和ArcGIS Pro读取不是必须要转。我更推荐优先掌握QGIS的另存为功能它能在一个对话框里完成几十种格式互转比在网页上上传下载要安全可靠得多。4.2 Shp文件损坏与修复工具使用Shp文件是由至少三个文件组成的主文件.shp、索引.shx、属性表.dbf。很多人只拷贝了一个.shp文件然后打开就报错这其实是缺失附属文件。如果文件名乱码或者路径中含有中文在某些老版本ArcGIS里也会加载失败。遇到不能打开Shapefile时先检查文件套件是否齐全。我通常在传输数据时压缩成zip包确保三个文件都在。如果Shp文件已经损坏可以使用Shapefile修复工具ShapeCHK进行扫描和修复。市面上的修复工具使用方法很简单命令行输入shapechk.exe 文件名.shp -fix它会自动重建缺失的.shx或修复.shp中的数据块。但要注意修复工具并不能恢复被截断的几何坐标它只能解决文件结构问题。真正靠谱的预防方法是不要在U盘上直接编辑Shp也不要边写边断电。我在处理2000多万条气温记录生成的Shp时会先用QGIS把它转成GeoPackage格式备份GeoPackage是单文件存储损坏概率远低于Shp而且支持属性索引查询速度快很多。4.3 Excel数据处理中的加载项与公式陷阱Excel用户最容易踩的坑是加载项被禁用、不能复制粘贴、上次启动失败安全模式。这些多半是Office稳定性问题跟气温数据本身无关但确实会影响数据清洗。比如你用Excel打开长表形式的2000万行数据必然卡死所以一定先确认提供方是否拆分了文件。如果Excel文件带宏或者连接了外部数据源可能会被安全策略禁止这时候可以在文件-选项-信任中心里启用所有加载项但取了数据后建议另存为纯数值版本去掉公式依赖。另一个经典陷阱是SUMIFS、VLOOKUP等公式引用整列时随着数据量增加计算会变得极慢。我通常会改用Power QueryExcel 2016以上自带来清洗和透视大型数据Power Query支持从文件夹批量导入多个分省Excel文件合并后再加载到数据模型这样处理100万行也不会卡。此外如果你需要从重复名字中选出另一列的最大值与其用数组公式不如用透视表拖拽字段来得快。我记得有次处理气温数据时需要找每个县20年间的最高温和最低温用透视表就能轻松搞定没必要写复杂的公式。如果你经常遇到Excel不能复制粘贴多半是剪贴板被某些插件占用重启Excel进程即可。也可以尝试按CtrlAltV打开选择性粘贴选择数值然后确定有时候能绕过异常提示。但最彻底的解决方案是不要试图用Excel处理整个数据集只保留抽样、可视化和小型分析在Excel中完成真正的批量处理交给Python或数据库。4.4 空间数据与表格数据联动的典型坑把Excel气温表连接到Shp行政区面时最大的坑是行政代码类型不一致。Excel里的县代码可能是文本格式有前导零而Shp属性表里的代码是数字格式连接时会找不到匹配项最终连接结果全是空值。解决办法是在连接前把Excel中的代码列转换为数字或者把Shp中的代码列转为文本保持两边格式一致。这点怎么强调都不过分我见过太多人在这上面卡住。其次是地域名称的差异比如阿坝藏族羌族自治州在不同来源数据里缩写不同靠名称连接极容易出错。所以一定使用行政区划代码而不是中文名称。我有一次用名称连接结果辉县和徽县匹配错了导致后续温度图出现一个诡异的冷岛。原因是这两个县在不同省份但名称读音相近Excel的模糊匹配把它们串了。从那以后我对于所有政区表都先看代码再核对名称这算是最重要的数据管理习惯之一。5. 基于该数据集的业务应用与后续扩展5.1 气候变化趋势分析实例拿到2005-2025年的逐日平均气温后一个很常见的需求是计算年际趋势。你可以先把逐日气温按年取平均得到每个县每年的年均温然后做线性回归看斜率是否显著。但要注意20年时间序列偏短气候趋势往往会被年际变率干扰如厄尔尼诺事件。我通常的做法是先做5年滑动平均再看趋势斜率同时用Mann-Kendall非参数检验来确认显著性这样就比较稳健。对于农业研究者更喜欢用逐日平均气温计算≥10℃活动积温和生长度日GDD。方法是当某天平均气温大于10℃时累加差值或者直接累加该日的均温看具体定义。积温的南北差异和年际变化是研究作物种植北界的重要指标。这份数据提供县级层面计算足以支持类似这样的研究。我在用Excel计算时是先用If函数判断是否大于10再用SUMIFS进行条件累加然后用透视表汇总到年份和县。这个流程虽然基础但很实用。5.2 与其他数据集融合的潜力气温数据单用价值有限和人口密度、GDP、耕地面积、土地利用、灾害记录叠加后能做的分析就多了。比如把高温日数日平均气温≥35℃统计出来再和当地老年人口分布叠加就能评估极端高温的健康暴露风险把积温和水稻种植面积叠加就能估算气候变暖对熟制的影响。这些分析都要求空间单元一致——这份数据的行政边界正好能满足。此外Shp格式可以很方便地进行空间连接比如把县级气温面数据转成由气象站点插值的栅格再与流域边界做分区统计。省级、市级、县级三级尺度配合还可以做尺度效应的研究比如比较同一气温事件在不同行政粒度下的统计特征差异。后续如果想扩展我会把这份数据转成NetCDF格式做气候再分析尽管逐日气温的NetCDF文件更大但检索效率更高。6. 实操经验总结与几个提高效率的小建议6.1 我最推荐的数据管理方式经过多次折腾后我现在的标准流程是先把所有Excel分省数据用Python的Pandas合并成一个干净的CSV长表只保留必要字段省份代码、市代码、县代码、日期、均温然后写入本地SQLite数据库。这样在后续做任何筛选查询都只需要秒级响应。同时保留一份县级的行政区划Shp并在QGIS中通过数据库连接Virtual Table方式把气温表实时挂到地图上。这样不用关心Shp体积膨胀也不用担心Excel卡死。对于仅仅想快速出图的朋友我仍然建议直接用现成的Shp选好时间字段然后使用按属性选择筛选出你要的那一天右键图层属性里做分级符号显示。注意选择合适的分级方法自然间断点或分位数温度图通常用蓝-白-红渐变比较直观高值红、低值蓝中间色给白色或浅黄。6.2 数据质量控制方面的独家技巧最后分享一个很少人注意的细节逐日平均气温数据在高原山区往往有很强的空间异质性一个县内海拔落差大时县域平均值可能和当地实际体感差距很大。所以在使用县级数据做精确定量分析时我会用DEM高程数据进行回归校正因为气温随海拔递减率约为0.6℃/100m。如果你有县域内的高程数据可以尝试下如果没有至少明白数据的局限在结论表述上留有余地。我个人的体会是这类经过整理的公开数据最大的价值不是帮你省去下载和清理的时间而是提供一个标准的、可直接复现的时空数据底子。真正花时间的地方在于理解数据口径和边界。拿到数据后第一件事永远不是跑模型而是用SQL或Excel检查记录数、抽查几个县和气象站点实测值做对比再用Shp画图看看空间分布是否连续。经过这样的校验后面的分析心里才有底。希望这篇拆解能帮你少走弯路直接把自己的分析扎到真实可靠的数据上。
返回列表