Я знаю, что есть много геостационарных спутников, но мне интересно - есть ли геостационарные спутники, которые не являются геостационарными (т.е. имеют заметный наклон к своей орбите)?
Есть ли спутники на геосинхронных, но не геостационарных орбитах?
Ага, много!
По-видимому, есть различные преимущества в синхронности даже при диких колебаниях в положении выше/ниже земного экватора (до +/- 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 градусов:
Вид сбоку:
Вид сверху:
"Семейный портрет"
Скрипт 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)
python -i myscript.py
поэтому, когда она будет завершена, пространство имен и результаты будут сохранены. Если я хочу просто перерисовать, я просто копирую/вставляю раздел, который начинается if True:
с приглашения python в командном окне, чтобы запустить его.if verbose:
и установить verbose = False
. Я не думаю, что это идеальный рабочий процесс, но он работает для меня.
ооо
Ману Х
ооо
Ману Х
ооо