Как я могу заставить Скайфилд согласиться с Морским Альманахом для Склонения Солнца?
Вот пример сценария, который вычисляет склонение Солнца в 2016/7/23 в 00:00:00 по Гринвичу с использованием PyEphem и Skyfield:
import ephem
sun1 = ephem.Sun('2016/7/23 00:00:00')
dec1 = sun1.dec
print 'PyEphem Declination:', dec1
#-------------------------------------
from skyfield.api import load
planets = load('de421.bsp')
earth = planets['earth']
sun2 = planets['sun']
ts = load.timescale()
time2 = ts.utc(2016, 7, 23)
dec2 = earth.at(time2).observe(sun2).apparent().radec()[1]
print 'Skyfield Declination:', dec2
Когда я запускаю это, я получаю:
PyEphem Declination: 20:01:24.0
Skyfield Declination: +20deg 04' 30.0"
Морской Альманах дает 20 градусов 01,4'за это время. Я не уверен, что я делаю неправильно, чтобы вызвать это несоответствие. Спасибо!
PS Я использую Python 2.7 и Skyfield 0.8.
1 ответ
Ответ, который дает вам PyEphem, полностью соответствует альманаху, но выражается в традиционных часах-минутах-секундах дуги, а не в часах и десятичных минутах. Фракция .4
это часть количества минут дуги 1.4
становится, если выражено в угловых секундах, 60 × 0,4 = 24 угловых секунды. Так:
20 ° 1,4′ = 20°1′24″
По умолчанию Skyfield предоставляет вам координаты в постоянной системе координат GCRS, которая является обновленной заменой J2000. Но Альманах использует не систему координат экватора и равноденствия 2000 года, а текущего года - и фактически точного момента - каждого элемента данных, который он сообщает. Чтобы попросить Skyfield выразить отклонение в координатах 2016 года, укажите epoch
значение "date"
:
from skyfield.api import load
ts = load.timescale()
planets = load('de421.bsp')
earth = planets['earth']
sun = planets['sun']
t = ts.utc(2016, 7, 23)
ra, dec, distance = earth.at(t).observe(sun).apparent().radec(epoch='date')
print(dec)
Результат:
+20deg 01' 24.0"