我试图从ISS开始计算来自CelesTrak TLE Elements的多个空间物体的通过,因为我可以根据Spot The Station的值来测试它。所以我开始设置观察者:
self.home = ephem.Observer()
self.home.lat = '51.45'
self.home.lon = '-2.58'
self.elevation = 134.69
我正在使用此功能计算通行证等
def nextPass(self,tle):
spob = ephem.readtle(tle[0],tle[1],tle[2])
spob.compute(self.home)
print('\n\n%s: altitude %4.1f deg, azimuth %5.1f deg' % (spob.name, self.deg2rad(spob.alt), self.deg2rad(spob.az) ) )
self.home.date = datetime.utcnow()
info = self.home.next_pass(spob)
print("%s = Rise time: %s azimuth: %s" % (self.home.date,info[0], info[1]))
和deg2rad做了它在锡上的说法!
def deg2rad(self,radians):
return radians * (180.0 / math.pi)
今天(1月28日)从http://www.celestrak.com/NORAD/elements/检索的TLE是
isstle = ['ISS (ZARYA) ',
'1 25544U 98067A 16028.60081312 .00014289 00000-0 21385-3 0 9994',
'2 25544 51.6413 39.1283 0006529 51.2720 308.9374 15.54305299983116',
]
目前我的输出是
ISS (ZARYA): altitude -68.0 deg, azimuth 241.6 deg
2016/1/28 20:14:11 = Rise time: 2016/1/28 20:46:11 azimuth: 203:45:42.0
我的问题是,如果我在2016/1/28 20:14:11进行此操作,为什么我没有得到与现在提供下一个可能的目标的Spot The Station相同的信息:
Tue Feb 2, 7:38 PM < 1 min 12° 10° above SSW 12° above SSW
我注意到海拔高度为负值,如果可见,我会预期它会为正,但下次报告的上升时间是2月?
答案 0 :(得分:0)
您正在打印的海拔高度不是下一次传递的高度,因为您正在调用spob.compute(self.home)
,因为任何日期和时间都恰好是self.home.date
的当前值。如果您希望打印的海拔高度是下一次通过的高度,而不是任意且可能为负的数字,请尝试使用next_pass
的6个返回值中返回的海拔高度值,否则要小心在调用卫星的self.home.date
方法之前,将compute()
设置为卫星高于地平线的时间和日期。