2016-01-27 3 views
1

Я пытаюсь вычислить проходы нескольких космических объектов от CelesTrak TLE Elements, начиная с ISS, потому что я могу проверить его на значения от Spot The Station. Так что я начать с настройки наблюдателя:Использование Pyephem для расчета пропусков ISS

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) 

ОДВТ извлекаться сегодня (28 января) из http://www.celestrak.com/NORAD/elements/ является

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 

Отмечу, что высота отрицательная, и я ожидал бы ее положительной, если бы она была видимой, но следующее сообщение о времени нарастания в феврале?

+0

Нам нужно еще два бита информации, чтобы иметь возможность запускать вашу программу и экспериментировать с результатами для себя: (1) Нам нужно знать, в какое время мы можем дать PyEphem получить именно эти результаты, и (2) Мы нужно знать, какие значения указывают на то, что станция давала вам, чтобы мы могли сравнить их с PyEphem. Благодаря! –

+0

@BrandonRhodes, я добавил запрошенную информацию, но, очевидно, ее значение действительно так долго. Следующая дата, указанная STS, - 2 февраля, поэтому любые тесты между ними должны будут дать эту дату. Я смотрю на http://space.stackexchange.com/questions/4339/calculating-which-satellite-passes-are-visible, но все равно получаю такую ​​же «неправильную» дату! –

ответ

0

Высота, которую вы печатаете, не является высотой момента следующего прохода, потому что вы вызываете spob.compute(self.home) для любой даты и времени, которая является текущим значением self.home.date. Если вы хотите, чтобы высота, которую вы печатаете, была высотой следующего прохода, вместо произвольного и вероятного отрицательного числа, попробуйте использовать либо значение высоты, возвращаемое из 6 возвращаемых значений next_pass, либо будьте осторожны, чтобы установить self.home.date к времени и дате, когда спутник находится над горизонтом до вызова метода compute() для спутника.

Смежные вопросы