Как преобразовать UTC и долготу в среднее солнечное местное время python

Я пытаюсь преобразовать свое время и долготу UTC в среднее солнечное местное время в питоне.

Входы:

utc = ['2000-08-20 07:15:12.000']  #utc time

lon = [-89.91054415]               #longitude

Я использовал astropy.time, чтобы получить свое время utc, которое является строкой.


person Rose    schedule 19.10.2017    source источник


Ответы (2)


Пояснительное приложение к астрономическому альманаху 3-е изд. На стр. 239 указано, что местное среднее солнечное время, LMSoT, связано с UT и восточной долготой наблюдателя соотношением

LMSoT = UT + ƛ

Обычно под UT понимают UT1. Чтобы преобразовать UTC в UT1, обратитесь к бюллетеню A по адресу https://www.iers.org/IERS/EN/DataProducts/EarthOrientationData/eop.html

Для 27.08.2016 UT1 - UTC = -0,243031. Оригинальный постер работает только с миллисекундами, поэтому округляем до -0,243. 27.08.2016 19:19:00.000 UTC = 19:18:59.757 UT1.

Широта Бостона, -71,03 °, преобразованная во время, = -4 часа 44 м 7,200 с.

Бостон LMSoT = 19:18:59,757 - 4:44:7,2000 = 14:34:52,557

Оригинальный плакат может упростить процедуру, в зависимости от необходимой точности. В частности, UTC всегда находится в пределах 0,9 с от UT1, поэтому, если точность до секунды не требуется, шаг поиска UT1 — UTC можно пропустить.

person Gerard Ashton    schedule 23.10.2017
comment
Как вы переводите долготу во время? и что представляет собой символ ƛ? - person Rose; 23.10.2017
comment
ƛ представляет долготу. Поскольку один полный оборот можно считать либо 360°, либо 24 ч, а 360/24 = 15, число градусов делится на 15, чтобы получить количество часов. - person Gerard Ashton; 23.10.2017
comment
Невозможно отредактировать свой пост из-за того, что правильная долгота по широте не достаточна. Итак, долгота Бостона на самом деле составляет -71°03', а его широта 42°36'. Вы можете сделать это, пожалуйста? - person AvyWam; 05.10.2019

Я нашел решение здесь с использованием pyephem. Он учитывает летнее время, если это имеет значение.

from ephem import Sun, Observer, pi, hours

dt = '2016/08/27 19:19'

sun = Sun()
sun.compute(dt)

boston = Observer()
boston.lat = '42.37'
boston.lon = '-71.03'
boston.date = dt
ra, dec = boston.radec_of('0', '-90')

print 'Sun right ascension:', sun.ra
print 'Boston nadir right ascension:', ra
print 'Solar time:', hours((ra - sun.ra) % (2 * pi)), 'hours'
person Rose    schedule 22.10.2017