使用PVLIB的许多坐标的太阳天顶角

时间:2019-07-25 12:02:09

标签: python python-3.x python-2.7 numpy-ndarray pvlib

我需要计算大约106.000.000不同坐标的太阳天顶角。该坐标是指相机将图像拍摄到飞机后,从在地球表面投影的图像得到的像素的引用。

我正在使用 pvlib.solarposition.get_position()计算太阳天顶角。返回的值正在正确计算(我将一些结果与NOOA网站进行了比较),但是,我需要如何计算许多坐标的太阳天顶角,python花费了很多天(大约5天)来完成函数的执行

我是编程新手,我想知道有什么方法可以加快太阳天顶角的计算。

下面找到了实现的计算太阳天顶角的代码部分:

sol_apar_zen = [] 
    for i in range(size3):
        solar_position = np.array(pvl.solarposition.get_solarposition(Data_time_index, lat_long[i][0], lat_long[i][1]))
        sol_apar_zen.append(solar_position[0][0])
 print(len(sol_apar_zen))

2 个答案:

答案 0 :(得分:0)

如果您想加快计算速度,可以使用numba内核(如果已安装)

location.get_solarposition(
        datetimes,
        method='nrel_numba'
    )

否则,您必须基于矢量化numpy数组实现自己的计算。我知道有可能,但不允许分享。如果搜索spencer 1971 solar position

,则可以找到公式

答案 1 :(得分:0)

由于您的坐标表示一个网格,所以另一个选择是为坐标的一个子集计算天顶角,然后进行2-d插值以获取余数。双向的十分之一会减少您的计算时间10000。