Есть ли спутники на геосинхронных, но не геостационарных орбитах?

Я знаю, что есть много геостационарных спутников, но мне интересно - есть ли геостационарные спутники, которые не являются геостационарными (т.е. имеют заметный наклон к своей орбите)?

Я где-то читал, что IRNSS использует такие орбиты.
@ManuH да, они в моем списке ! Надеюсь, кто-нибудь спросит: «Почему некоторые спутники используют геосинхронные орбиты с таким большим наклонением?»
@uhoh Я думаю, что этот файл визуально отвечает на этот вопрос
@ManuH, хотя это особый случай, и его легко объяснить. Большинство этих орбит круглые, поэтому верхняя и нижняя половины паттерна симметричны. QZSS находится на практически эллиптической орбите, подобной Молнии, поэтому они проводят большую часть своего времени в верхней половине, над Японией. Я почти уверен, что эти три — QZSS i.stack.imgur.com/XyW0F.png Ни одна из других орбит не выглядит так, поэтому им потребуется другое объяснение.

Ответы (1)

Есть ли спутники на геосинхронных, но не геостационарных орбитах?

Ага, много!

По-видимому, есть различные преимущества в синхронности даже при диких колебаниях в положении выше/ниже земного экватора (до +/- 60 градусов!)

Увидев приведенные ниже цифры в книге «Новый взгляд на режимы GEO и Near-GEO: Operations, Disposals, and Debris» (найдено в этом комментарии ), я решил сам заняться спутниковой охотой.

введите описание изображения здесь введите описание изображения здесь

слева: "Рис. 3. Количество и сложность геосинхронных орбит для действующих космических аппаратов значительно увеличились с 1999 по 2011 год. Выше показаны только космические аппараты, орбитальные параметры которых доступны на сайте www.spacetrack.org ." справа: «Рис. 7. Геосинхронные системы связи и навигации с большим наклоном (Sirius, Beidou и Michibiki) развернуты с 2000 г.»

Я пошел к набору двухстрочных элементов NORAD компании Celestrak; Текущие данные и загруженные https://celestrak.org/NORAD/elements/geo.txt Затем я распространил их все на Python с помощью Skyfield (сценарий ниже) и начал рисовать.

В списке 513 TLE. Вот их текущие наклонности по сравнению с годом запуска:

Наклон геосинхронных спутников в зависимости от года запуска

Есть 18 спутников с наклонением более 19 градусов:

AMC-14                 2008     20.4237
SDO                    2010     29.7791
QZS-1 (MICHIBIKI-1)    2010     41.3507
BEIDOU 8               2011     58.8155
BEIDOU 9               2011     54.4339
BEIDOU 10              2011     52.1119
IRNSS-1A               2013     30.184
IRNSS-1B               2014     29.253
IRNSS-1D               2015     29.1615
BEIDOU 17              2015     53.522
BEIDOU 20              2015     53.1176
IRNSS-1E               2016     29.3272
BEIDOU IGSO-6          2016     56.5705
QZS-2  (MICHIBIKI-2)   2017     43.5483
QZS-4 (MICHIBIKI-4)    2017     40.7615
IRNSS-1I               2018     29.3069
BEIDOU IGSO-7          2018     55.0396
BEIDOU-3 IGSO-1        2019     55.0177

Вот несколько бесплатных 3D-графиков 18 с наклоном более 19 градусов:

Вид сбоку:

Геосинхронные спутники с наклонением > 19 градусов

Вид сверху:

Геосинхронные спутники с наклонением > 19 градусов

"Семейный портрет"

Геосинхронные спутники

Скрипт Python 3:

class Object(object):
    def __init__(self, name, L1, L2):
        self.name = name.strip()
        self.L1 = L1
        self.L2 = L2
        year = int(L1[9:11]) + 1900
        if year < 1957:
            year += 100
        self.year = year
        self.inc  = float(L2[8:16])

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Topos, Loader, EarthSatellite
from mpl_toolkits.mplot3d import Axes3D

fname = 'Celestrak satellites in GEO.txt' # https://celestrak.org/NORAD/elements/geo.txt
with open(fname, 'r') as infile:
    lines = infile.readlines()

TLEs = zip(*[[line for line in lines[n::3]] for n in range(3)])

load  = Loader('~/Documents/fishing/SkyData')  # single instance for big files
ts    = load.timescale()
de421 = load('de421.bsp')
earth = de421['earth']

zero  = Topos(0.0, 0.0)

minutes = np.arange(0, 24*60, 4) # last one is 23h 56m
times   = ts.utc(2019, 7, 19, 0, minutes)

# Doing a quick ugly de-rotate to imitate earth-fixed coordinates.
zeropos = zero.at(times).position.km 
theta    = np.arctan2(zeropos[1], zeropos[0])
cth, sth, zth, oth = [f(-theta) for f in (np.cos, np.sin, np.zeros_like, np.ones_like)]

R = np.array([[cth, -sth, zth], [sth, cth, zth], [zth, zth, oth]])

objects = []
for i, (name, L1, L2) in enumerate(TLEs):
    o       = Object(name, L1, L2)
    objects.append(o)
    o.orbit = EarthSatellite(L1, L2).at(times).position.km
    if not i%20:
        print (i,)

data = [(o.year, o.inc) for o in objects]

plt.figure()
year, inc = zip(*data)
plt.plot(year, inc, '.k', markersize=8)
plt.xlabel('launch year', fontsize=16)
plt.ylabel('current inclination (degs)', fontsize=16)
plt.title('Geosynchronous TLEs from Celestrak', fontsize=16)
plt.show()

high_incs = [o for o in objects if o.inc > 19]

fig = plt.figure(figsize=[10, 8])  # [12, 10]
ax  = fig.add_subplot(1, 1, 1, projection='3d')
for o in high_incs:
    orbit = (R * o.orbit).sum(axis=1)
    x, y, z = orbit
    ax.plot(x, y, z)
    ax.plot(x[:1], y[:1], z[:1], 'ok')
ax.set_xlim(-40000, 40000)
ax.set_ylim(-40000, 40000)
ax.set_zlim(-40000, 40000)
plt.show()

fig = plt.figure(figsize=[10, 8])  # [12, 10]
ax  = fig.add_subplot(1, 1, 1, projection='3d')
for o in objects:
    orbit = (R * o.orbit).sum(axis=1)
    x, y, z = orbit
    ax.plot(x, y, z)
    # ax.plot(x[:1], y[:1], z[:1], 'ok')
ax.set_xlim(-40000, 40000)
ax.set_ylim(-40000, 40000)
ax.set_zlim(-40000, 40000)
plt.show()

for o in high_incs:
    print(o.name, o.year, o.inc)
Выдающаяся работа! :D
@ThePiachu спасибо! Как обычно, я пойду на все, чтобы не делать то, что должен был сделать сегодня ;-) bbc.co.uk/programmes/w3csy9k0
Это все навигационные спутники? Я вижу, как это имеет смысл для региональной спутниковой навигации. IRNSS (индийский), BEIDOU (китайский) и QZS (японский) есть, как минимум.
@gerrit эй, я думаю, ты прав, за исключением первых двух в списке ( AMC-14 и SDO ), у которых есть свои интересные ситуации.
Re Вы все еще можете постоянно общаться с ними, используя одну наземную станцию, если она находится недалеко от экватора. Геосинхронные спутники с большим наклоном (63,4°) и несколько эллиптическими (от 0,2 до 0,3) следуют по тундровым орбитам. Такие орбиты не очень полезны в экваториальных точках, потому что для связи с такими спутниками необходимы антенны слежения, а спутники редко находятся в поле зрения в данной экваториальной точке. Где они используются, так это в крайних широтах, обычно 60+° северной широты, где спутники находятся в апогее.
@DavidHammen Я полностью вытащил это предложение, спасибо!
@gerrit, второй в этом списке, SDO, это солнечная обсерватория. Он создает изображения с очень высокой частотой, поэтому вместо использования DSN, где он может насытить полосу пропускания, у него есть выделенная наземная станция, что требует геосинхронности. Он не может быть геостационарным, потому что это означало бы, что Земля закрывает солнце один раз в день, тогда как наклонная орбита означает, что Земля закрывает солнце только один раз в день в неделю каждые 6 месяцев.
Пожалуйста, потерпите меня, если это глупый вопрос, поскольку я смиренно признаю, что я не кодер, но почему вы использовали «if True:» в своем коде?
@MatthewChristopherBartsh о, это не выполняет никакой конкретной функции при работе. Это осталось от того, как я работаю, и я не стал его убирать. У меня часто есть сценарии, выполнение которых занимает некоторое время, и когда я оптимизирую макет сюжета, я не хочу запускать все заново. Я запускаю их из командной строки, python -i myscript.pyпоэтому, когда она будет завершена, пространство имен и результаты будут сохранены. Если я хочу просто перерисовать, я просто копирую/вставляю раздел, который начинается if True:с приглашения python в командном окне, чтобы запустить его.
@MatthewChristopherBartsh Иногда я хочу отладить сам расчет и не хочу генерировать дюжину графиков, если мне нужен только один, чтобы увидеть результаты для целей отладки, поэтому я переключаю их все на False или меняю их все (кроме одного) чтобы if verbose:и установить verbose = False. Я не думаю, что это идеальный рабочий процесс, но он работает для меня.
@MatthewChristopherBartsh, пожалуйста, не стесняйтесь редактировать и удалять их здесь, они не служат никакой полезной цели в этом контексте! Stack Exchange — это совместная работа, и, как правило, приветствуется полезное редактирование сообщений других людей. Спасибо!
Мое редактирование бесполезных утверждений «if True:» было принято. Ура! Это первый раз, когда я улучшил чужой код. Я вижу, как это может помочь с отладкой. К сожалению, детали, которые вы предоставили, намного выше моего понимания на данном этапе.
@MatthewChristopherBartsh Python настолько удобен и гибок, что делает все, что угодно, намного проще. Я обнаружил, что изучение Python действительно освобождает. Веселиться!
Я знаю, что некоторые люди не одобряют утверждения «если правда», но мне просто пришло в голову спросить, есть ли смысл оставлять их, как вы, на том основании, что они упрощают модификацию кода и, возможно, легче читать? Я имею в виду, если бы вы нашли их полезными при тестировании кода, разве кто-то другой не смог бы изменить код?
@MatthewChristopherBartsh Python — один из наиболее широко используемых языков программирования в мире для серьезного программирования; написание пакетов, например, которые будут широко распространяться с открытым исходным кодом и постоянно редактируются и модифицируются многими другими программистами. Придерживаться определенных стандартов стиля и поддерживать наилучшую удобочитаемость в таких случаях крайне важно, поэтому все, что заставляет кого-то остановиться и спросить: «Эй, почему это так?» считается плохим. Со всем этим согласен на 110%. Но я просто пишу короткие одноразовые сценарии для выполнения определенных задач или сообщения определенного момента.
@MatthewChristopherBartsh Я иногда называю свои сценарии «лоскутными», чтобы люди знали, что они не тщательно написаны, хорошо организованы и хорошо прокомментированы. Вам может понравиться просматривать PEP, особенно PEP8 . Также смотрите ответы на некоторые мои вопросы в Code Review SE 1 , 2 , 3 , 4.
@MatthewChristopherBartsh Программисты как на Python, так и на Python, как правило, очень снисходительны, вам не нужно изучать что-либо из этого сразу, но как только вы начнете использовать их регулярно, мудрость, стоящая за рекомендациями PEP8, станет более очевидной, и будет все больше и больше смысла следовать их. Наслаждаться!
Хорошо, но можно ли поверить, что иногда кодер, который модифицирует или повторно использует ваш код и тестирует код в какой-то момент, будет рад, что вы оставили операторы «если правда», потому что это упрощает тестирование кода?
@MatthewChristopherBartsh Нет. Если бы 1) они поняли, для чего это было, и 2) им это было нужно, они бы просто добавили его обратно, что заняло бы около 700 миллисекунд для ввода.
1. Является ли использование verbose = False вашей собственной идеей? Я мог найти информацию о выводе журнала только тогда, когда искал его. 2. Что вы подразумеваете под «переключением»? 3. Ваша последняя диаграмма имеет небольшие недостатки, и мне интересно, чем они вызваны: а) Какие-то едва заметные пробелы в путях нескольких спутников. б) Некоторые дорожки находятся перед другими дорожками, а не позади них. в) Все дорожки имеют одинаковую толщину независимо от того, на переднем плане или на заднем плане, и поэтому не всегда сразу понятно, выпуклая ли она к нам или от себя от нас, усугубляя проблему «б».