Skyfield中的JulianDate
对象是一种方便的方法,可以快速生成并保存一组儒略日时间值,并将它们传递给 Skyfield 的方法,以计算各种坐标中的天文位置。(参见示例脚本)at()
但是,我似乎找不到add
oroffset
方法,以便可以向JulianDate
对象添加时间偏移或可迭代的偏移。我似乎总是与日期和时间作斗争。
这是一个非常简单的抽象示例。我生成jd60
的偏移量是任意jd0
60 天。作为一个简单的检查,我计算了两次地球的位置,并确保它移动了大约 60 度。
from skyfield.api import load, JulianDate
import numpy as np
data = load('de421.bsp')
earth = data['earth']
从任意 t_zero 开始:
jd0 = JulianDate(utc=(2016, 1, 17.4329, 22.8, 4, 39.3)) # (y, m, d, h, m, s)
现在,使第二个 JulianDate 对象偏移 60 天
这有效:
tim = list(jd0.tt_tuple())
tim[2] += 60 # add 60 days (~1/6 of a year)
jd60 = JulianDate(utc=tuple(tim))
但是,我想要的是这样的:
jd60 = jd0.add(delta_utc=(0, 0, 60, 0, 0, 0)) # ficticious method
现在计算位置并找到近似角度,看看它是否有效。
p0 = earth.at(jd0).position.km
p60 = earth.at(jd60).position.km
dot = (p0*p60).sum()
cos_theta = dot / np.sqrt( (p0**2).sum() * (p61**2).sum() )
print (180./np.pi) * np.arccos(cos_theta)
print "should be roughly 60 degrees"
给
60.6215331601
should be roughly 60 degrees