Получение широты & amp; точка долготы на Земле от координат ECI спутника

Я пытаюсь написать программное обеспечение на C ++, которое преобразует ECI-координаты спутника в определенное время в точку на 2D-карте Земли. Я знаю, что координаты ECI легко доступны из данных TLE. Но это ничего не говорит о том, какая конкретная точка широты и долготы на земле находится над спутником.

Мой вопрос: как узнать ориентацию Земли в конкретное время (время, когда был получен TLE, или в будущем после распространения по орбите)? А также, как вы учитываете эффекты прецессии и нутации при расчете будущих точек, чтобы достичь более высокой степени точности? Спасибо.

1

Решение

Это удивительно сложная проблема. Обычно это решается в два этапа:

  1. ECI — это четырехмерная система, она фиксируется, когда Земля вращается. Поэтому сначала необходимо рассчитать фиксированные координаты Земли (ECEF). Существуют различные нюансы, такие как прецессия Земли, но я не буду их подробно останавливать. Включенные ссылки показывают, как сделать преобразования.
  2. Рассчитать широту / длину от ECEF. Традиционный путь через Ньютон-Ralphson преобразования. Это довольно просто, но может немного отличаться в зависимости от того, как вы моделируете Землю. Есть Javascript калькулятор, который может сделать это, посмотрите на источник для формулы, или вы можете взглянуть на этот сайт.

Или, если вы хотите, вы можете просто использовать SConvert Library, который управляет всеми такими преобразованиями для вас. Он написан на родном C ++, так что это должно работать для вас.

Некоторые ресурсы:

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

1

Другие решения

Других решений пока нет …