我怎样才能让Skyfield同意太阳下降的航海历书?

时间:2016-07-23 08:09:47

标签: python pyephem skyfield

这是一个示例脚本,使用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"

航海年历给予20度01.4'那个时候。我不确定我做错了什么导致这种差异。谢谢!

P.S。我使用的是Python 2.7和Skyfield 0.8。

1 个答案:

答案 0 :(得分: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"