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

调用pvlib的get_total_irradiance时出现surface_tilt参数传参错误

问题分析与解决方案

错误根源

你触发TypeError是因为两个核心错误:

  1. 参数顺序完全颠倒:pvlib.irradiance.get_total_irradiance的第一个参数要求是surface_tilt(表面倾角),但你把窗户表面积当成第一个参数传入,函数预期接收倾角数值,却拿到了表面积,类型匹配逻辑直接报错。
  2. 缺少必要辐照度分量:该函数需要至少直射辐照度(dni)、全局水平辐照度(ghi)、散射辐照度(dhi) 三个输入项,你只传了一个irradiance366(推测是ghi),参数不完整也会引发类型/参数错误。

修正后的代码

假设new_df['irradiance366']是全局水平辐照度(ghi),如果没有dni和dhi数据,先用pvlib估算;如果已有实测值,直接替换对应列名即可:

import pvlib
import pandas as pd

location = pvlib.location.Location(45.384714, -71.911770, altitude=300, name=None)
times = pd.date_range(start='2020-01-01', end='2020-12-31', freq='1h')
angles = location.get_solarposition(times)
new_df = new_df.truncate(before=angles.index[0], after=angles.index[-1])

# 窗户面积(单位:平方米)
surface_sud = 10
surface_est = 5
surface_ouest = 5

# 从ghi估算dni和dhi(若有实测数据可直接替换)
dni = pvlib.irradiance.dni_from_ghi(new_df['irradiance366'], angles['zenith'])
dhi = new_df['irradiance366'] - dni * pd.cos(pvlib.tools.cosd(angles['zenith']))

# 计算南向垂直窗户的功率:先算POA辐照度(W/㎡),再乘以面积得功率(W)
poa_sud = pvlib.irradiance.get_total_irradiance(
    surface_tilt=90,  # 垂直窗户与水平面夹角为90度
    surface_azimuth=180,
    solar_zenith=angles['zenith'],
    solar_azimuth=angles['azimuth'],
    dni=dni,
    ghi=new_df['irradiance366'],
    dhi=dhi
)['poa_global']
puissance_sud = poa_sud * surface_sud

# 东向垂直窗户
poa_est = pvlib.irradiance.get_total_irradiance(
    surface_tilt=90,
    surface_azimuth=90,
    solar_zenith=angles['zenith'],
    solar_azimuth=angles['azimuth'],
    dni=dni,
    ghi=new_df['irradiance366'],
    dhi=dhi
)['poa_global']
puissance_est = poa_est * surface_est

# 西向垂直窗户
poa_ouest = pvlib.irradiance.get_total_irradiance(
    surface_tilt=90,
    surface_azimuth=270,
    solar_zenith=angles['zenith'],
    solar_azimuth=angles['azimuth'],
    dni=dni,
    ghi=new_df['irradiance366'],
    dhi=dhi
)['poa_global']
puissance_ouest = poa_ouest * surface_ouest

puissance_totale = puissance_sud + puissance_est + puissance_ouest

补充说明

  • 若你的irradiance366不是ghi,需根据实际数据类型调整参数对应关系;
  • 若为斜窗,可修改surface_tilt为对应角度(0=水平,90=垂直);
  • 使用实测dni、dhi数据的精度会高于估算值,优先用实测数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:23:08