使用 Pyephem 计算 ISS 通行证
Using Pyephem to calculate ISS passes
我正在尝试计算来自 CelesTrak TLE Elements starting with the ISS because I can test it against the values from Spot The Station 的多个 space 个对象的通过次数。所以我开始设置观察者:
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
我注意到高度为负,如果可见,我希望它为正,但下一次报告的上升时间是二月?
您打印的高度不是下一次通过时的高度,因为您调用 spob.compute(self.home)
的日期和时间恰好是 self.home.date
的当前值。如果您希望打印的高度是下一次通过的高度,而不是任意 likely-negative 数字,请尝试使用 6 个 return 值中的高度值 returned next_pass
,否则在调用卫星的 compute()
方法之前,请注意将 self.home.date
设置为卫星位于 horizon 上方的时间和日期。
我正在尝试计算来自 CelesTrak TLE Elements starting with the ISS because I can test it against the values from Spot The Station 的多个 space 个对象的通过次数。所以我开始设置观察者:
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
我注意到高度为负,如果可见,我希望它为正,但下一次报告的上升时间是二月?
您打印的高度不是下一次通过时的高度,因为您调用 spob.compute(self.home)
的日期和时间恰好是 self.home.date
的当前值。如果您希望打印的高度是下一次通过的高度,而不是任意 likely-negative 数字,请尝试使用 6 个 return 值中的高度值 returned next_pass
,否则在调用卫星的 compute()
方法之前,请注意将 self.home.date
设置为卫星位于 horizon 上方的时间和日期。