我正在使用this来源计算一天中每小时的UVI值(从早上7点到晚上7点)。并使用pysolar模块获取Solar Zenith Angle
。等式如下:
from pysolar.solar import *
from math import cos
import datetime
dobj = datetime.datetime(2017,7,1,8,0)
sza = float(90)-get_altitude(42.57952, 1.65362, dobj)
ozone = 300
raw_uvi = 12.50*pow(cos(sza),2.42)*pow(float(ozone)/300,-1.23)
print (raw_uvi)
输出是: 0.4850283419701262 + 1.8890606693266203j
我的问题是,当cos(sza)变为负数时,它会给出一个复数作为输出,我该如何处理?此外,在上午7点,uvi导致9.232276464148745
这是错误的。我错过了什么吗?或者我对算法的解释是错误的?
答案 0 :(得分:0)
math.cos
期望弧度,但你似乎通过了度数。
使用sza * math.pi / 180
从度数转换为弧度。然后你不应该得到-90和+90度之间的角度的负值(我猜这是有意义的,假设0度意味着太阳在天顶,90度是地平线)。