以下示例脚本使用PyEphem和Skyfield计算了格林尼治标准时间2016年7月23日00:00:00太阳的偏角:

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"


当时的航海年历为20deg 01.4'。我不确定自己做错了什么导致这种差异。谢谢!

附言我正在使用Python 2.7和Skyfield 0.8。

最佳答案

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"

关于python - 我怎样才能让Skyfield同意关于“太阳赤纬”的“航海年鉴”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38539625/

10-11 07:38