# Are there any satellites in geosynchronous but not geostationary orbits?

I know there are a lot of geostationary satellites out there, but I'm wondering - are there any geosynchronous satellites that are not geostationary (ie - have a notable inclination to their orbit)?

• – uhoh Jul 18 '19 at 23:02
• I read somewhere IRNSS use such orbits. – Manu H Jul 19 '19 at 4:56
• @ManuH yep, they're on my list! Hopefully someone will ask *Why do some satellites use such high inclination geosynchronous orbits?" – uhoh Jul 19 '19 at 6:28
• @uhoh I think this file answers that question in a visual way – Manu H Jul 19 '19 at 7:49
• @ManuH that's a special case though and easy to explain. Most of these orbits are circular, so the top and bottom half of the pattern are symmetrical. QZSS is in a substantially elliptical Molniya-like orbit so that they spend most of their time in the upper half, over Japan. I'm pretty sure these three are QZSS i.stack.imgur.com/XyW0F.png None of the other orbits look like that, so they will need a different explanation. – uhoh Jul 19 '19 at 8:34

Are there any satellites in geosynchronous but not geostationary orbits?

Yep, lots!

Apparently there are various advantages to being synchronous even when oscillating wildly in position above/below the Earth's equator (up to +/- 60 degrees!)

After seeing the figures below in A New Look at the GEO and Near-GEO Regimes: Operations, Disposals,and Debris (found in this comment) I decided to go satellite hunting myself

left: "Fig. 3. The number and complexity of geosynchronous orbits for operational spacecraft increased significantly from 1999 to 2011. Only spacecraft whose orbital parameters are available at www.spacetrack.org are shown above." right: "Fig. 7. Highly-inclined geosynchronous communications and navigations systems (Sirius, Beidou, and Michibiki) have been deployed since 2000"

I went to Celestrak's NORAD Two-Line Element Sets; Current Data and downloaded https://www.celestrak.com/NORAD/elements/geo.txt I then propagated them all in Python using Skyfield (script below) and started plotting.

There are 513 TLEs in the list. Here are their current inclinations versus year of launch:

There are 18 satellites with an inclination greater than 19 degrees:

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


Here are some gratuitous 3D plots of the 18 with inclinations greater than 19 degrees:

Side view:

Top view:

"Family portrait"

Python 3 script:

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://www.celestrak.com/NORAD/elements/geo.txt
with open(fname, 'r') as infile:

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

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)

# quick ugly de-rotate to immitate 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]

if True:
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]

if True:
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()

if True:
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)

• OUTSTANDING work! :D – ThePiachu Jul 19 '19 at 7:21
• @ThePiachu thanks! As usual, I'll go to any length to avoid doing what I should have been doing today ;-) bbc.co.uk/programmes/w3csy9k0 – uhoh Jul 19 '19 at 8:34
• Are they all navigation satellites? I can see how it makes sense for regional satellite navigation. IRNSS (Indian), BEIDOU (Chinese) and QZS (Japanese) are, at least. – gerrit Jul 19 '19 at 8:53
• Re You can still communicate with them continuously using a single ground station, if it is somewhat near the equator. The highly inclined (63.4°) and somewhat elliptical (0.2 to 0.3) geosynchronous satellites follow Tundra orbits. Such orbits aren't of much use at equatorial sites because tracking antennae are needed to communicate with such satellites and the satellites are rarely in view at a given equatorial site. Where they are of use is the extreme latitudes, typically 60+°N, where the satellites appear to dwell at apogee. – David Hammen Jul 19 '19 at 9:13
• @gerrit, the second on that list, SDO, is a solar observatory. It produces images at a very high cadence, so rather than using the DSN where it would saturate the bandwidth, it has a dedicated ground station, thus the need for being geosynchronous. It can't be geostationary because that would mean having the earth occult the sun once every day, where the inclined orbit means the earth only occults the sun once a day for a week every 6 months.. – Ghedipunk Jul 19 '19 at 16:08