from datetime import timezone, timedelta, datetime
from skyfield.api import load
ts = load.timescale() # create skyfield timescale object
tz = timezone(timedelta(hours=-4)) # whatever your timezone offset from UTC is
start = datetime(2018, 06, 21, 0, 0, 0, tzinfo=tz) # timezone-aware start time
end = start + timedelta(hours=24) # one day's worth of times
delta = timedelta(minutes=1) # your interval over which you evaluate
times = [start]
now = start
while now <= end:
now += delta
times.append(now)
幸运的是,Skyfield是为NumPy数组的时间对象而设计的,它将生成与数组中的对象一样多的位置。以下是描述该功能的文档部分:
http://rhodesmill.org/skyfield/time.html#date-arrays
下面是一个完成您描述的任务的示例:
这段代码目前不是特别快,因为地球卫星的计算还有待优化,但应该比在一个循环中手动构建多个时间对象更快。在
您可以通过创建一个^{} 对象作为TLE,然后在一个时间列表中为每次生成^{} 对象。您需要将时间列表指定为支持时区的datetime对象。你可以用这样的方法创建你的时间列表(可能有很大的空间来提高效率):
并用以下方法进行评估:
^{pr2}$这将在你指定的每一次给你一个天体测量的列表。你可以用这些物体来得到物体的位置(我想是速度),在你喜欢的任何单位或参考系里。例如,可以通过以下方式获取列表中每个元素的高度和方位角(以弧度为单位):
相关问题 更多 >
编程相关推荐