求WeatherSpark基于经纬度海拔的气象站气温加权平均公式
气象站气温加权平均权重计算解决思路
已知数据梳理
- 目标城市:蓬塔尔杜巴拉那市(纬度-25.674°、经度-48.511°、海拔7米)
- 参与加权的气象站:
- Joinville:纬度-26.304°、经度-48.846°、海拔4米,贡献占比68%
- 库里蒂巴:纬度-25.428°、经度-49.273°、海拔910米,贡献占比32%
核心解决步骤
1. 排除单一海拔权重的可能性
目标城市海拔7米,Joinville海拔4米(高度接近),库里蒂巴海拔910米(差距极大),但后者仍有32%的权重占比,说明WeatherSpark的权重公式绝非仅由海拔决定,而是距离、海拔、数据可靠性等多因素的组合模型。
2. 先计算地理距离作为核心权重基础
用Haversine公式计算站点到目标城市的球面直线距离(地球平均半径取6371km):
- 公式实现(Excel可用):
ACOS(COS(RADIANS(90-目标纬度))*COS(RADIANS(90-站点纬度))+SIN(RADIANS(90-目标纬度))*SIN(RADIANS(90-站点纬度))*COS(RADIANS(目标经度-站点经度)))*6371 - 计算结果:
- Joinville到目标城市:约72km
- 库里蒂巴到目标城市:约85km
距离上Joinville更近,但差距有限,这和68%/32%的权重比例匹配度较高,说明距离是权重的核心影响因素。
3. 加入海拔修正系数调整权重
气温随海拔升高递减,海拔差距越大的站点,对目标城市气温的代表性越弱,需引入修正系数降低其权重:
- 基础距离权重计算:按距离反比分配,Joinville权重为
1/72≈0.0139,库里蒂巴为1/85≈0.0118,此时占比约为54%/46%,和实际68%/32%有差距,需加入海拔修正。 - 尝试指数型修正系数:
exp(-k×|目标海拔-站点海拔|/1000),其中k为调整参数(比如取0.5):- Joinville修正系数:
exp(-0.5×|7-4|/1000)≈0.9985(几乎无修正) - 库里蒂巴修正系数:
exp(-0.5×|7-910|/1000)≈0.636(大幅降低权重)
- Joinville修正系数:
- 修正后权重占比:Joinville≈65%,库里蒂巴≈35%,已接近WeatherSpark给出的比例,差异可能来自站点数据质量(如是否为官方基准站、更新频率)的额外微调。
4. Excel验证流程
- 新建列计算各站点到目标城市的球面距离;
- 计算基础距离权重:
1/距离; - 计算海拔修正系数:
EXP(-0.5*ABS(目标海拔-站点海拔)/1000); - 计算修正后权重:
基础距离权重 × 海拔修正系数; - 计算最终占比:
修正后权重 / SUM(所有修正后权重); - 调整修正系数中的k值(或加入数据质量系数),直到占比匹配68%/32%的结果。
内容的提问来源于stack exchange,提问作者Frederico Montzel
相关产品推荐
相关产品推荐

