Мне нужно рассчитать зенитный угол Солнца примерно для 106 000 000 различных координат. Эти координаты относятся к пикселям изображения, проецируемого на поверхность Земли после того, как изображение было снято камерой в самолете.
Я использую pvlib.solarposition.get_position() для вычисления зенитного угла Солнца. Возвращаемые значения рассчитываются правильно (я сравнил некоторые результаты с веб-сайтом NOOA), но, как мне нужно рассчитать угол солнечного зенита для многих пар координат, питон тратит много дней (около 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))
Data_time_index
?solarposition.get_solarposition
— это оболочка для нескольких различных алгоритмов определения положения солнца. Большинство реализаций предназначены для эффективного многократного вычисления положения солнца по одной координате. Похоже, вы хотите сделать обратное: эффективно вычислить положение Солнца за один (или относительно небольшой) раз по многим координатам. 10 000 раз для одной координаты на большинстве машин должно занять меньше секунды. - person Will Holmgren   schedule 26.07.2019pvlib.solarposition.*_analytical
— большинство из них принимают массивы ndim, но мне не сразу очевидно, как заставить вычисление часового угла работать для вашего варианта использования. Пожалуйста, напишите ответ ниже, если вы найдете решение. - person Will Holmgren   schedule 29.07.2019