如何在计算晴空紫外线指数时处理太阳天顶角的负余弦?

时间:2017-07-20 13:40:39

标签: python python-3.x ozone

我正在使用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这是错误的。我错过了什么吗?或者我对算法的解释是错误的?

1 个答案:

答案 0 :(得分:0)

math.cos期望弧度,但你似乎通过了度数。

使用sza * math.pi / 180从度数转换为弧度。然后你不应该得到-90和+90度之间的角度的负值(我猜这是有意义的,假设0度意味着太阳在天顶,90度是地平线)。