Вычислите спутниковые координаты из данных TLE

Я знаю, что это не так сложно для тех, кто знаком с уравнениями для этого, но у меня проблемы с математикой. Чтобы полностью понять элементы орбиты TLE, я прочитал это , что я нашел очень полезным, но я изо всех сил пытаюсь превратить это в координаты широты и долготы. Я вхожу в это, не зная необходимых алгоритмов, и я надеюсь, что кто-то может указать мне. Этот пост содержит некоторую соответствующую информацию, но, если я правильно понимаю, он только объясняет, как получить долготу в определенное время, в то время как мне нужны полные координаты.

Пожалуйста, поместите полную информацию со связанных сайтов в свое сообщение, чтобы предотвратить устаревание ссылок («гниение»). Какая часть алгоритмов SGP/SDP вызывает у вас затруднения?
Информацию по первой ссылке было бы трудно обобщить здесь, но я немного добавил ко второй. Я также подробно остановился на том, что я прошу. Я не понимаю, какие уравнения/алгоритмы используются для определения положения спутников в определенное время на основе их данных TLE, и это то, что я хотел бы знать.
celestrak.com/publications/AIAA/2006-6753 Найдите алгоритмы SGP4 /SDP4 в Интернете. Примечание: приведенная выше ссылка ведет к аннотированному исходному коду ( celestrak.com/publications/AIAA/2006-6753/AIAA-2006-6753.zip ).
Может ли кто-нибудь рассказать немного больше о том, как это сделать? @harry1795671: Как вы использовали эту библиотеку Pyephem?
@Qorzyking Обратите внимание, что мы не дискуссионный форум, а сайт вопросов и ответов. Если у вас есть новый вопрос, пожалуйста, задайте его как таковой . Обратитесь к нашим страницам « О нас» и « Справочный центр» для получения дополнительной информации о том, как мы работаем и организуем вещи на Stack Exchange , частью которого является Space Exploration . Спасибо!

Ответы (4)

Существует ряд пакетов программного обеспечения, многие из которых бесплатны, которые работают с этими двумя линейными элементами. Воспользуйтесь одним из них.

Эти два линейных элемента не являются элементами Кеплера. Вместо этого они представляют собой средние орбитальные элементы Брауэра-Лиддана. Кеплеровские элементы предполагают сферическое центральное тело и отсутствие сил, кроме гравитации. Средние орбитальные элементы Брауэра-Лиддана учитывают первые шесть сферических гармоник и пытаются учесть атмосферное сопротивление. Математика кеплеровских элементов немного запутана. Математика этих двух линейных элементов более чем запутана. Это "математика". (Подумайте о метели, когда все, что вы видите, — это белизна. Снежные бури — это состояние полной белизны. Статья, описывающая два линейных элемента, — это математический расчет. Все, что вы видите, — это математика.)

Математика описана в FR Hoots, "Переформулировка теории геопотенциала Брауэра для повышения вычислительной эффективности", Небесная механика 24 (1981) .

В конце концов я остановился на Pyephem, библиотеке Python, способной довольно легко выполнять вычисления.

вы можете использовать PyEphem так же, как это

sudo apt-get install python

sudo apt-get install python-dev

sudo apt-get install python-pip

pip install pyephem

создать test.py:

import ephem
import datetime
## [...]

name = "ISS (ZARYA)";
line1 = "1 25544U 98067A   12304.22916904  .00016548  00000-0  28330-3 0  5509";
line2 = "2 25544  51.6482 170.5822 0016684 224.8813 236.0409 15.51231918798998";

tle_rec = ephem.readtle(name, line1, line2);
tle_rec.compute();

print tle_rec.sublong, tle_rec.sublat;
Очень хорошо! Всегда приятно видеть здесь Python. Skyfield — это еще один пакет Python, и здесь есть тег, где можно найти несколько примеров использования. Он основан на других принципах, но имеет некоторые дублирующие функции. На самом деле и PyEphem, и Skyfield управляются одним и тем же человеком .
Теперь я хочу спрогнозировать орбиту. Что мне делать? Точно так же введите время, выведите долготу и широту. @uhoh У тебя есть идея?
Да, причина, по которой я не опубликовал еще один ответ, заключается в том, что он не кажется настолько прозрачным, чтобы генерировать наземный трек с орбиты в Skyfield. Легко получить координаты GCRS (x, y, z) или координаты JD2000, но, если я правильно понимаю, пользователь все еще должен проецировать на свою собственную модель Земли. Широта/долгота относятся к поверхности Земли, они не обязательно являются точными космическими координатами. Если вы зададите это как еще один вопрос здесь, я могу опубликовать короткие сценарии для двух разных методов.
А пока вы можете посмотреть этот вопрос и выпуск 121 Skyfield .
Предупреждение: pyephem устарел и больше не поддерживается (последний выпуск был в 2015 году). Однако последний выпуск Skyfield был выпущен в феврале 2019 года (за 4 месяца до этого комментария).

В зависимости от того, какой алгоритм/набор уравнений вы используете для преобразования, вам может потребоваться преобразовать параметры TLE в координаты ECEF, а затем преобразовать их в широту, долготу и высоту. Вот страница, которая объясняет преобразование ECEF в LLA: http://www.gmat.unsw.edu.au/snap/gps/clynch_pdfs/coordcvt.pdf

Распространенная математическая трудность заключается в том, что истинная аномалия и средняя аномалия связаны уравнением Кеплера, которое является трансцендентным уравнением, как упоминалось в вашей первой ссылке. Для этой части преобразования обычно используется итеративный метод, такой как метод Ньютона.

Я не могу найти веб-страницу с набором алгоритмов преобразования TLE в ECEF, но на этой странице представлен алгоритм преобразования эфемерид GPS (параметров орбиты) в координаты ECEF: http://web.ics.purdue.edu /~ecalais/teaching/geodesy/EAS_591T_2003_lab_4.htm Если я правильно помню, преобразование TLE очень похоже, так что это может привести вас на правильный путь. Если у вас нет учебника с алгоритмом, он может быть онлайн в газете или что-то в этом роде.

Пожалуйста, расширьте и включите соответствующую математику для удобства последующих посетителей.
Примечание: первая ссылка уже мертва.

У меня был похожий вопрос, и использование pyephem, предложенное zdRan, отлично сработало, за исключением одного: это инструкции для Debian/Ubuntu/и т. д. дистрибутивы, и я был на базовой установке CentOS.

На случай, если кто-то еще столкнется с этим, вот инструкции по установке, которые можно использовать вместо первого блока в сообщении zdRan:

sudo yum install python
sudo yum install python-devel
sudo yum upgrade python-setuptools
sudo yum install epel-release
sudo yum install python-pip
sudo yum install gcc
sudo pip install pyephem

Это epel-releaseнеобходимо, поскольку pip не является частью основных пакетов CentOS, но является частью расширенных пакетов. gccнеобходимо установить только в том случае, если у вас его еще нет (вы можете использовать whereis gccего для проверки, но yum не будет устанавливаться, если он уже есть, поэтому в этом нет крайней необходимости).

Оттуда действуйте, как указано выше, отлично работает.

(Это было в CentOS 7, но аналогичная процедура должна работать для большинства дистрибутивов CentOS/Red Hat/Fedora)