Получить вектор положения спутника в декартовой системе координат из файла TLE (двухстрочные элементы) - PullRequest
0 голосов
/ 26 мая 2020

У меня есть файл TLE, связанный со спутником (содержит его кеплеровские координаты: TLE_description , такие как эксцентриситет (градусы), аргумент перигея (градусы), эпоха (год_месяц_день час: мин: се c) и т. д. Это выглядит так:

'' 'ISS (ЗАРЯ)
1 25544U 98067A 14273.50403866 .00012237 00000-0 21631-3 0 1790 2 25544 51.6467 297.5710 0002045 126.1182 27.2142 15.50748592907666 Я прикрепил фотографию, на которой показаны имена каждого значения в TLE. '' '

Из этого файла TLE я хочу иметь декартов вектор положения (X, Y, Z) спутника в исправлении спутника .

Для этого я попытался использовать библиотеку за пределами (fromyond.io.tle import Tle; fromyond.frames import create_station), чтобы получить некоторые кеплеровские данные (азимут, высота, distance_from_the_station), но все это данные вычисляются относительно станции, поэтому это не вектор положения спутника, а вектор (azimut_station_to_satelli, elevation_station_to_satelli te, distance_station_to_s satellite), и я не могу получить от него вектор положения. Но поскольку у меня может быть вектор, я уверен, что есть способ напрямую получить положение спутника из его TLE-файла.

Если нужно, я могу добавить код! Спасибо за чтение.

1 Ответ

0 голосов
/ 15 июня 2020

Я, наконец, разобрался, вот ответ: у меня есть такой TLE:

'1 28446U 04041A 19002.21559949 -.00000090 00000-0 00000 + 0 0 9998 2 28446 0.0198 37.5572 0002596 225.6438 170.9111 1.00271812 52071 '

Чтобы получить вектор положения и / или скорости моего спутника в декартовых координатах, я должен сделать:

from sgp4.api import Satrec
from sgp4.api import jday

s = '1 28446U 04041A   19002.21559949 -.00000090  00000-0  00000+0 0  9998'
t = '2 28446   0.0198  37.5572 0002596 225.6438 170.9111  1.00271812 52071'
satellite = Satrec.twoline2rv(s, t)

jd, fr = jday(2019, 1, 1, 11, 59, 33) # I pick an epoch (close to the TLE's)
e, r, v = satellite.sgp4(jd, fr) # e = error, r = position vector, v = speed vector

Если e = 0, нет проблем, иначе вы получить индекс ошибки. Кредиты go Брэндону Роудсу!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...