Я использую модель SGP4 для распространения по орбите, инициализированную TLE с сайта celestrak.com.
noradId = '40053'
date="2018/3/10 07:48:00"
from sgp4.earth_gravity import wgs84
from sgp4.io import twoline2rv
import requests
import datetime
date = datetime.datetime.strptime(date, "%Y/%m/%d %H:%M:%S")
response = requests.get("https://www.celestrak.com/cgi-bin/TLE.pl?CATNR="+noradId)
tle_data = response.text.split("<PRE>\n")[1].split("\n")
t1=tle_data[1]
t2=tle_data[2]
tle = twoline2rv(t1, t2, wgs84)
print (tle.propagate(date.year,date.month, date.day, date.hour, date.minute, date.second)[0])
Что мне нужно, так это уметь применять маневры. Однако SGP4 с TLE этого не позволяет.
Действительно, SGP4 не позволяет вам вычислять маневры. Вы можете получить TLE, распространиться до времени маневра, чтобы получить распространяемое положение и скорость, затем предположить, что этот момент является новой эпохой, и повторно сгенерировать новый TLE, чтобы сделать это:
1-Вычислить новую эпоху в формате TLE во время окончания маневра
2-Вычислите положение и скорость после маневра (возможно, просто добавьте желаемую дельту-V).
3-Повторно сгенерируйте элементы для TLE таким образом, чтобы выходные данные SGP4 при нулевом распространении соответствовали положению и скорости после маневра.
Насколько мне известно, простого способа выполнить шаг 3 не существует. Но вы можете использовать любой метод решения численных задач, который вам нравится.
Тарлан Мамедзаде
Мефитико
Тарлан Мамедзаде