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

代码中传入经纬度调用NSRDB API报错问题求助

pvlib get_psm3 接口调用报错排查

问题现象

调用pvlib.iotools.get_psm3()从NSRDB数据库获取TMY太阳资源数据时,通过Streamlit的st.number_input组件传入经纬度参数触发报错,把经纬度硬编码为固定数值时代码可正常运行。

问题代码

NREL_API_KEY = '{{API_KEY'
lat1=st.number_input('Insert the Latitude:',value=52.4830986)
lon1=st.number_input('Insert the Longitude:',value=13.4920913)
metadata = pvlib.iotools.get_psm3(
    latitude=lat1, longitude=lon1,
    api_key=NREL_API_KEY,
    email='abc.xyz@gmail.com',
    names='tmy')
st.write(metadata)

报错信息

HTTPError: ['No data available at the provided location', 'Data processing failure.']
Traceback:
File "C:\Users\amrit\anaconda3\lib\site-packages\streamlit\script_runner.py", line 430, in _run_script
exec(code, module.dict)
File "C:\Users\amrit\Desktop\python\tracker\tilt_compare.py", line 148, in
metadata = pvlib.iotools.get_psm3(
File "C:\Users\amrit\anaconda3\lib\site-packages\pvlib\iotools\psm3.py", line 166, in get_psm3
raise requests.HTTPError(errors, response=response)

故障原因

  • 核心问题是参数类型不匹配:st.number_input在部分版本下返回的是numpy.float64类型,而非Python原生float类型。requests库构造HTTP请求参数时,对numpy浮点类型的序列化存在兼容问题,会出现精度异常、格式错误,最终传给NSRDB服务端的经纬度坐标和实际输入值存在偏差,落在数据库无覆盖的区域,触发无数据报错。
  • 代码里的NREL_API_KEY = '{{API_KEY'存在书写错误,多了一个左大括号且缺少右闭合,正式运行时必须替换为自己申请的真实NREL API Key,否则也会触发鉴权类报错。
  • 额外注意:get_psm3方法默认返回元数据、逐小时气象数据两个对象,原代码只接收一个返回值,后续取资源数据时也会触发异常。

修复方法

传入经纬度前显式转换为Python原生float类型,同时修正API Key书写、补全返回值接收即可,修改后代码如下:

# 替换为自己申请的真实NREL API Key,移除多余的大括号
NREL_API_KEY = '填写你的真实NREL API密钥'
lat1 = st.number_input('Insert the Latitude:', value=52.4830986)
lon1 = st.number_input('Insert the Longitude:', value=13.4920913)

# 显式将经纬度转为原生float类型,同时接收两个返回值
metadata, tmy_data = pvlib.iotools.get_psm3(
    latitude=float(lat1),
    longitude=float(lon1),
    api_key=NREL_API_KEY,
    email='abc.xyz@gmail.com',
    names='tmy',
    map_variables=True
)
st.write('站点元数据:', metadata)
st.write('TMY数据:', tmy_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:18:40