Top.Mail.Ru

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

1. Импортируем необходимые классы и функции из библиотеки pyorbital:
“`python
from pyorbital.orbital import Orbital
from pyorbital import tlefile
from datetime import datetime, timedelta
“`

2. Загрузим наборы TLE-данных спутников, соответствующие указанным в задаче спутникам:
“`python
METEOR_M2_2_TLE = tlefile.read(‘METEOR-M2-2.tle’)
METEOR_M2_3_TLE = tlefile.read(‘METEOR-M2-3.tle’)
NOAA_18_TLE = tlefile.read(‘NOAA-18.tle’)
NOAA_19_TLE = tlefile.read(‘NOAA-19.tle’)
METOP_B_TLE = tlefile.read(‘METOP-B.tle’)
METOP_C_TLE = tlefile.read(‘METOP-C.tle’)
“`

3. Создадим экземпляры объектов класса Orbital для каждого спутника:
“`python
METEOR_M2_2 = Orbital(“METEOR-M2-2”, line1=METEOR_M2_2_TLE[0], line2=METEOR_M2_2_TLE[1])
METEOR_M2_3 = Orbital(“METEOR-M2-3”, line1=METEOR_M2_3_TLE[0], line2=METEOR_M2_3_TLE[1])
NOAA_18 = Orbital(“NOAA-18”, line1=NOAA_18_TLE[0], line2=NOAA_18_TLE[1])
NOAA_19 = Orbital(“NOAA-19”, line1=NOAA_19_TLE[0], line2=NOAA_19_TLE[1])
METOP_B = Orbital(“METOP-B”, line1=METOP_B_TLE[0], line2=METOP_B_TLE[1])
METOP_C = Orbital(“METOP-C”, line1=METOP_C_TLE[0], line2=METOP_C_TLE[1])
“`

4. Определим начальную и конечную даты и времена расписания:
“`python
start_time = datetime(2023, 10, 16, 0, 0, 0, tzinfo=datetime.timezone.utc)
end_time = datetime(2023, 10, 17, 0, 0, 0, tzinfo=datetime.timezone.utc)
“`

5. Проходим циклом по каждому часу в указанном диапазоне времени и проверяем, проходит ли каждый спутник над указанной точкой на земле с минимальным возвышением (горизонтом) 50 градусов:
“`python
current_time = start_time
while current_time < end_time: satellite_passes = [] if METEOR_M2_2.is_pass_visible(55.6947, 37.5242, 165, current_time, horizon=50): satellite_passes.append("METEOR-M2 2") if METEOR_M2_3.is_pass_visible(55.6947, 37.5242, 165, current_time, horizon=50): satellite_passes.append("METEOR-M2 3") if NOAA_18.is_pass_visible(55.6947, 37.5242, 165, current_time, horizon=50): satellite_passes.append("NOAA 18") if NOAA_19.is_pass_visible(55.6947, 37.5242, 165, current_time, horizon=50): satellite_passes.append("NOAA 19") if METOP_B.is_pass_visible(55.6947, 37.5242, 165, current_time, horizon=50): satellite_passes.append("METOP-B") if METOP_C.is_pass_visible(55.6947, 37.5242, 165, current_time, horizon=50): satellite_passes.append("METOP-C") if len(satellite_passes) > 0:
print(f”At {current_time.strftime(‘%Y-%m-%d %H:%M:%S’)} UTC, satellites visible: {‘, ‘.join(satellite_passes)}”)

current_time += timedelta(hours=1)
“`

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

   
[metform form_id="1136"]