Astropy - Алгоритм положения Солнца - Увеличение времени приводит к неверным вычислениям - PullRequest
3 голосов
/ 23 октября 2019

Я работаю над алгоритмом, который определяет текущий азимут и высоту Солнца, в данном месте, дате и времени. Мне это нужно для моего проекта автоматической двухосной калибровки солнечной энергии.

Я использую библиотеку Astropy.

Вот мой код:

from astropy.coordinates import get_sun, AltAz, EarthLocation
import astropy.coordinates as coord
from astropy.time import Time
import astropy.units as u
import time

#location set to a city of Kielce, Poland
loc = coord.EarthLocation(lon=20.628569 * u.deg, lat=50.866077 * u.deg)
my_time = Time.now()
sun = coord.get_sun(my_time)

print(sun)
print("Location:", loc)
print("Time/date: ", my_time)
print("--------DEGREES--------")
while True:
    #line below causes wrong results
    my_time = my_time + 15 * u.min

    #line below works fine and displays correct results
    #my_time = Time.now()

    sun = coord.get_sun(my_time)
    altaz = coord.AltAz(location=loc, obstime=my_time)
    current_altitude = get_sun(my_time).transform_to(altaz).alt
    current_azimuth = get_sun(my_time).transform_to(altaz).az
    geo = loc.geodetic
    print("Time:        ", my_time)
    print("Loc. lat.:   ", geo.lat)
    print("Loc. lon.:   ", geo.lon)
    print("Sun alt.:   ", current_altitude.degree)
    print("Sun az.:    ", current_azimuth.degree)
    print("---------------------------------------------------")
    input()

Когда яиспользуя ...

my_time = Time.now()

Алгоритм работает нормально. Я тестировал результаты в течение последних 48 часов, и это всегда давало правильные ответы. Я использовал веб-сайт SunCalc.org , чтобы проверить, работает ли он правильно.

Что мне нужно сделать, это определить положение солнца на каждые 15 минут, начиная с текущей даты и часа, чтобыхранить его в каком-то массиве. Но я не могу этого сделать, поскольку увеличение времени приводит к неверным вычислениям. Вот пример неправильных результатов (вывод оболочки Python):

---------------------------------------------------

Time:         2019-10-23 15:08:33.073504
Loc. lat.:    50d51m57.8772s
Loc. lon.:    20d37m42.8484s
Sun alt.:    2.3219705846241796
Sun az.:     248.6310211206791
---------------------------------------------------

Time:         2019-10-23 15:23:33.073504
Loc. lat.:    50d51m57.8772s
Loc. lon.:    20d37m42.8484s
Sun alt.:    0.09371196329584214
Sun az.:     251.5553099977351
---------------------------------------------------

Time:         2019-10-23 15:38:33.073504
Loc. lat.:    50d51m57.8772s
Loc. lon.:    20d37m42.8484s
Sun alt.:    -2.172539131558753
Sun az.:     254.45000928004316
---------------------------------------------------

Я на 100% уверен, что это неправильно, так как закат должен произойти в 17:30. Я начал использовать Python вчера с небольшим опытом программирования (немного на C и C ++), поэтому, пожалуйста, поймите.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...