Можно ли использовать Skyfield для распространения TLE вперед и последующего вывода его эфемерид, а не геометрических x, y, z в какой-то момент в будущем?
Я проработал примеры в API и, возможно, что-то неправильно понял, но похоже, что все доступные выходные данные относятся к событиям затмения, времени восхода и заката, углам обзора и т. д. Я хотел бы увидеть шесть элементов (SMA, эксцентриситет , наклон, RAAN, ArgP, означает аномалию), чтобы я мог видеть, что происходит между опубликованными TLE.
Я вижу способ, который может сработать. В принципе это кажется правильным, хотя я немного осторожен, поскольку я новичок в Skyfield:
Это кажется скорее кладжом, если такая возможность уже существует.
Skyfield, как и большинство других инструментов, заявляющих о способности обрабатывать данные TLE, зависит от группы образованных, но старых догадок людей о том, что SGP4 мог делать некоторое время назад, а не от предоставления доступа к тому, что SGP4 на самом деле делает прямо сейчас. Это имело смысл в течение долгого времени, потому что у большинства людей не было другого способа заполучить SGP4, но, к счастью, это уже не так. Любой, кто зарегистрирует бесплатную учетную запись, теперь может загрузить официальную реализацию SGP4 правительства США и связанных с ней утилит, некоторые из которых были значительно обновлены в ноябре 2020 года, с https://www.space-track.org/documentation#/sgp4 .
Чтобы увидеть код, о котором я говорю ниже, вы должны согласиться с ограничениями лицензии с открытым исходным кодом SGP4 (которые появятся, когда вы нажмете ссылку для загрузки, и позже будут доступны для вашей ссылки как \Sgp4Prop_small\SampleCode\*\SGP4_Open_License .txt), загрузите этот файл, распакуйте его и просмотрите содержимое Sgp4Prop_small\SampleCode\Python\wrappers\ и Sgp4Prop_small\SampleCode\Python\DriverExamples\Sgp4Prop\src\ . Код оболочки также предоставляется на C, C#, Fortran, Java, Matlab и Visual Basic (фактические библиотеки предоставляются в виде DLL для Windows и .so для Linux), но вы спрашивали о Python, поэтому я опишу все это с начала. Точка зрения питона.
В рамках этого обновления предоставленная оболочка Python, наконец, изменилась с Python 2 на Python 3 (Sgp4Prop.py, включенный в версии библиотеки до 7.9, не изменился с января 2013 г., но все еще распространяется в октябре 2020 г., произошел сбой в Python 3, поскольку он не использовал круглые скобки в операторах печати, среди других основных недостатков). Лично я добавляю несколько собственных настроек, которые, по моему мнению, упрощают использование библиотек, например, добавление пустого __init__.py в каталог и добавление точек перед преобразованием вызовов оберток библиотек друг к другу из абсолютного импорта в относительный, но это совершенно необязательно и не является частью официального дистрибутива, и это все, что я собираюсь сейчас подробно описать.
Одна явно не-Pythonic вещь, с которой нужно бороться, заключается в том, что интерфейс, предоставляемый оболочками по умолчанию, точно следует старому стилю C и Fortran, поэтому все функции возвращают только целочисленный код состояния. Данные возвращаются в виде записанных в структуры, которые вы должны предварительно объявить с помощью ctypes и предоставить в качестве входных аргументов, что несложно, но совсем не так, как обычно используется Python. Вполне возможно скрыть все это, написав свои собственные обертки, которые я сделал для себя, но пока не сделал их доступными для кого-либо вне работы.
Задача преобразования TLE в таблицу соприкасающихся кеплеровских элементов наилучшим доступным способом, максимально корректно используя все модели SGP4, является одной из базовых вещей, показанных в качестве примера в демонстрационном скрипте Sgp4Prop_small\SampleCode\Python\DriverExamples. \Sgp4Prop\src\Sgp4Prop.py . Этот сценарий делает неудачный выбор (строка 129 вызывает TimeFunc.TConLoadFile), желая, чтобы вы предоставили время начала, остановки и шага для файла в болезненно архаичном и излишне запутанном формате «карты 6P» (например, как описано на стр. 7). –9 из Sgp4Prop_small\Documents\librarydocuments\TimeFunc.doc), но библиотека TimeFunc предоставляет все необходимые функции преобразования для создания формата времени, который хочет получить распространитель (десятичные дни с 1950 года, UTC) из любых других данных о времени, которые у вас могут быть. .
... чтобы я мог видеть, что происходит между опубликованными TLE.
Это отличная причина , чтобы захотеть такую функцию; наблюдение за эволюцией орбитальных элементов с течением времени может дать некоторое интуитивное представление о том, что происходит. (примеры: 1 , 2 ). Он не сразу сообщает вам, где находится космический корабль в любой точке и с какой скоростью он движется (это то, что обычно хотят заказчики вектора состояния), но это был бы отличный вариант!
Я не знаю, есть ли он в Skyfield или нет (но я почти уверен, что нет), но сайт Github довольно активен и жив , и в дополнение к странице вопросов есть даже страница обсуждений .
Как я вижу, есть несколько путей:
Space SE, безусловно, имеет все уравнения для преобразования вектора состояния в кеплерову орбиту на основе центральной силы Земли. , но они гарантированно будут ошибочными порядка одной части на тысячу, потому что они даже не включают сплюснутость Земли, выраженную ни какой-либо другой эффект, поэтому я не думаю, что это работает за то, что вы хотите.
Это легко увидеть; получить соприкасающиеся элементы для некоторых объектов в Horizons, скажем, десять раз, распределенных за один период, и посмотреть, насколько каждый элемент орбиты фактически изменяется в пределах одной орбиты.
Дальнейшее чтение здесь:
Дальнейшее чтение вне сайта:
Дэвид Хаммен
Райан С