I'm plotting the position of satellites in the sky using Skyfield. If I project the .altaz() data on to a rectangle (in a similar fashion to the way ground track lat/lon plots are made) I get two big "holes".

Is there a way to understand, explain, and articulate the cause of these holes in alt/az space beyond "the ISS can't go there"? I don't think it's anything fundamental or profound, but I can't wrap my mind around why there can be places in the sky of a given location where the ISS can't go.

The python script below automatically grabs a TLE from the internet and then calculates 40,000 positions over +/- 2 days from the TLE's epoch, so it takes a few seconds. The two dots are the north and south poles of the celestial sphere. They are not really related to the question but were added to address questions in comments.

enter image description here

import numpy as np
import matplotlib.pyplot as plt

from skyfield.api import load, Loader, Topos

degs = 180./np.pi

stations_url = 'http://celestrak.com/NORAD/elements/stations.txt'

loader = Loader('~/Documents/foldername/SkyData')
data   = loader('de421.bsp')
ts     = loader.timescale()

earth = data['earth']
loc   = Topos(-39.2617, 177.8652, elevation_m=20)

sats  = load.tle(stations_url)
ISS   = sats['ISS (ZARYA)']

tstep = np.arange(-2, 2, 0.0001)   # range of +/- 2 days from TLE epoch
time  = ts.tt(jd=ISS.epoch.tt + tstep)

alt, az = [x.radians for x in (ISS - loc).at(time).altaz()[:2]]
snipit = np.abs(az[1:] - az[:-1]) > 2  # snip the plotting at wrap-around
dalt, daz = degs*alt, degs*az
daz[:-1][snipit] = np.nan

plt.plot(daz[:-1], dalt[:-1], linewidth=1)
plt.xlabel('azimuth (degs)')
plt.ylabel('altitude (degs)')
plt.plot(0, degs*loc.latitude.radians, 'or', markersize=8)
plt.plot(180, -degs*loc.latitude.radians, 'or', markersize=8)
  • $\begingroup$ The alt/az positions should correspond to some particular celestial lat/lon, right? I would assume that these particular coordinates would be the North/South pole. $\endgroup$
    – Phiteros
    Jun 23, 2017 at 2:31
  • $\begingroup$ @Phiteros no, remember the Earth is spinning, so at any moment a given alt/az is pointing in a different direction. The only ones that aren't constantly moving would be the poles themselves. I'll add dots on the plot to show where the poles are, (hint: alt = +/- latitude) $\endgroup$
    – uhoh
    Jun 23, 2017 at 2:36
  • $\begingroup$ yeah, but you could subtract out the Earth's rotation and see what celestial coordinates those holes correspond to. $\endgroup$
    – Phiteros
    Jun 23, 2017 at 2:49
  • $\begingroup$ @Phiteros no, they would not be single coordinates. The Earth is spinning, the centers of those holes would big (but not necessarily great) circles, not points. Only the poles are fixed in both spinning and non-spinning coordinates at the same time. Imagine shining a laser pointer into the sky (but don't do it!) Over one day It would sweep out a big circle on the celestial sphere. However if you pointed it at the poles, that circle would collapse to single points - the two dots on the plot. $\endgroup$
    – uhoh
    Jun 23, 2017 at 2:58
  • 1
    $\begingroup$ I believe this is an artifact of periodicality, the ratio between ISS orbital period and Earth rotation period being close to some simple fraction. Try adjusting the time, from the +/-2 to a value that leads to the plot nearly-looping (end almost joining with start smoothly) then see how the plot "wanders" when offset by that period (say, plot consecutive intervals of that length with slightly varying colors). $\endgroup$
    – SF.
    Jun 23, 2017 at 9:28

1 Answer 1


Let's try with pictures...

First, the frame of reference: Earth. Frame bound to Earth center, spinning with Earth spin. This is the frame of reference which is "immobile" for you and me as we stand on Earth and look at the sky.

I try to draw all possible positions of the satellite in this frame of reference - first, in 3D:

I'm creating a shell - a hollow sphere with its top and bottom "caps" cut off. This shell is the area the satellite reaches, ever. This shell radius is Earth radius + ~400km.

enter image description here

enter image description here

Now let's move the camera to the observer on the surface of Earth - inside that shell - and make Earth vanish.

This is about the image we'll see if we gaze towards where the center of Earth used to be.

enter image description here

And if we squeeze the focal length really, really short - an extreme "fisheye" - we're getting this:

enter image description here

The two distinct features are two holes, distorted by perspective, one closer, one farther from you. One due north, mostly above us, though partially behind the horizon, one due south, all "below the ground".

Now try to take the 360 degrees panorama from your point of view - map your surroundings onto a cylindrical projection - horizon being the equator, poles being your local zenith and nadir. You'll arrive at your original image.

  • $\begingroup$ OK got it! The 'unwrapped' graphics really help. And since altitude can only go +/- 90°, the azimuth has to jump by 180°. OK no reality distortion fields here, just geometry. Thanks. $\endgroup$
    – uhoh
    Jun 26, 2017 at 12:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.