1
Skyfield中的JulianDate
對象是在Julian天快速生成和保存一組時間值的方便方法,並將它們傳遞給Skyfield的at()
方法來計算各種座標中的天文位置。 (參照example script)如何在Skyfield中添加JulianDate對象或偏移量
然而,我似乎無法找到一個add
或offset
方法使得我可以添加一個時間偏移量或偏移到JulianDate
對象可迭代。我似乎總是用日期和時間struggle。
這是一個非常簡單的抽象示例。我生成了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
非常好!在'.timescale()'方法存在之前,這個問題在2月份被寫回來。好的趕上! – uhoh