使用Pyephem计算ISS通过

时间:2016-01-27 22:02:16

标签: pyephem

我试图从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月?

1 个答案:

答案 0 :(得分:0)

您正在打印的海拔高度不是下一次传递的高度,因为您正在调用spob.compute(self.home),因为任何日期和时间都恰好是self.home.date的当前值。如果您希望打印的海拔高度是下一次通过的高度,而不是任意且可能为负的数字,请尝试使用next_pass的6个返回值中返回的海拔高度值,否则要小心在调用卫星的self.home.date方法之前,将compute()设置为卫星高于地平线的时间和日期。