You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Meteostat API获取日照时长数据出现NaN的问题咨询

问题分析与解决方案

为什么日照数据显示NaN?

meteostat返回NaN通常有以下几个原因:

1. 目标气象站未监测/记录日照数据

不是所有气象站都会采集日照时长数据,尤其是部分老站点或小型站点。你用的WMO编码06660对应的站点可能本身就没有日照监测项,或者历史数据中该字段缺失。

可以先查询该站点的详细信息,确认是否支持日照数据采集:

from meteostat import Stations

stations = Stations().id('06660')
station_info = stations.fetch()
print(station_info)

查看输出中的inventory字段,确认是否包含sun(日照)相关的监测数据。

2. 数据时间范围超出站点覆盖

部分站点可能在你指定的2016-2022区间内,仅部分时段有数据,或者早期数据未归档到meteostat的数据源中。可以缩小时间范围测试,比如先查询2020-2022年的数据:

from datetime import datetime
from meteostat import Daily

start = datetime(2020, 1, 1)
end = datetime(2022, 12, 31)
data = Daily('06660', start, end).fetch()
print(data['sun'].dropna())

如果这段时间有数据,说明早期数据确实缺失;如果还是全NaN,那大概率站点本身不提供日照数据。

3. 误找数据字段

meteostat的Daily数据集里,日照时长对应的字段是sun,单位为小时。确认你查看的是正确的字段,而非其他类似字段(比如prcp是降水量)。

解决步骤

  1. 更换支持日照数据的站点:如果当前站点不提供日照数据,搜索瑞士境内有日照监测的站点:
from meteostat import Stations

stations = Stations()
# 筛选瑞士境内、有每日日照数据的站点
stations = stations.region('CH').inventory('daily', ['sun'])
available_stations = stations.fetch()
# 输出站点列表
print(available_stations[['name', 'wmo', 'latitude', 'longitude']])

从列表中选一个地理位置合适的站点,用它的WMO编码重新查询数据。

  1. 验证数据完整性:对选定的新站点,先查询最近1年的数据,确认sun字段有有效数值后,再扩展到3年的时间范围。

是否需要更换付费API?

先优先尝试上述免费方案:meteostat整合了多个免费数据源(如NOAA、DWD),只要找到合适的站点,就能获取可靠的日照数据。

如果经过筛选后,免费站点仍无法满足你对时间范围和区域的需求,再考虑付费API。常见的付费气象API提供更全面的历史日照数据,覆盖范围更广,数据完整性更高。

内容的提问来源于stack exchange,提问作者sdave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:12:55