Mapping satellite paths on Earth’s surface as the planet rotates beneath
2026-02-26
Landsat 8, launched in February 2013, orbits at 705 km altitude in a near-polar, sun-synchronous orbit with a period of 98.9 minutes. In 16 days, its 185-kilometre-wide sensor swath covers every point on Earth’s land surface. The coverage pattern is not random: each successive pass is shifted 2,752 km west of the previous one at the equator, and after exactly 233 orbits the ground track repeats. This precise dance between orbital mechanics and Earth’s rotation is what makes systematic, repeatable Earth observation possible — and what makes it possible to task the satellite to be over a specific location at a specific time.
A satellite orbits in a plane fixed relative to the stars. Earth rotates beneath it. The ground track — the satellite’s path projected onto the surface — therefore shifts westward with each orbit, tracing a sinusoidal curve on a map. Predicting where any satellite will be at any moment is a coordinate transformation problem: convert from the orbital frame (position along the orbit, inclination, longitude of the ascending node) to Earth’s rotating frame (latitude, longitude). This model works through that transformation step by step, explains why ground tracks take their characteristic sinusoidal shape on a Mercator projection, and derives the repeat period from the relationship between orbital period and Earth’s rotation rate.
Where on Earth is a satellite at any given time?
A satellite orbits in a fixed plane through space. But Earth rotates beneath it, so the ground track — the point directly below the satellite — traces a path across the surface.
Key observations: - The satellite’s orbital plane is fixed (relative to the stars) - Earth rotates eastward at 15.04°/hour - Each successive orbit crosses the equator farther west than the previous one
The mathematical question: Given a satellite’s orbital parameters and the current time, where is the sub-satellite point on Earth’s surface?
In an inertial (non-rotating) frame: - The satellite orbits in a fixed plane - The orbital plane is defined by its inclination i (angle relative to the equator)
In Earth’s rotating frame: - The satellite appears to trace a sinusoidal path across the surface - The maximum latitude reached is ±i (the inclination) - The ground track shifts westward by \Delta\lambda degrees per orbit
During one orbital period T, Earth rotates through angle:
\Delta\lambda = 360° \times \frac{T}{T_{\text{Earth}}}
Where T_{\text{Earth}} = 86164 s (sidereal day).
Example: For a 90-minute orbit (T = 5400 s):
\Delta\lambda = 360° \times \frac{5400}{86164} = 22.5°
Each orbit’s ground track is 22.5° west of the previous one.
Assume a circular orbit with: - Orbital radius r - Inclination i (angle between orbital plane and equator) - True anomaly \nu (satellite’s angular position in its orbit, measured from ascending node)
Position in orbital plane (2D coordinates):
x_{\text{orb}} = r\cos\nu y_{\text{orb}} = r\sin\nu
Ascending node: The point where the satellite crosses the equator going northward.
The orbital plane is tilted at inclination i. Rotate the position vector:
In 3D (equatorial frame):
x_{\text{eq}} = x_{\text{orb}} = r\cos\nu
y_{\text{eq}} = y_{\text{orb}}\cos i = r\sin\nu\cos i
z_{\text{eq}} = y_{\text{orb}}\sin i = r\sin\nu\sin i
This assumes the ascending node is at longitude 0° at time t=0.
The ascending node’s longitude at time t:
\lambda_{\text{node}}(t) = \lambda_0 - \omega_{\oplus} t
Where: - \lambda_0 is the ascending node longitude at t=0 - \omega_{\oplus} = 360°/86164 \approx 0.004178°/\text{s} is Earth’s rotation rate
Rotate the satellite position by -\lambda_{\text{node}}(t) to get Earth-fixed coordinates.
From Cartesian (x, y, z) in the Earth-fixed frame:
\text{latitude} = \arcsin\left(\frac{z}{r}\right)
\text{longitude} = \arctan2(y, x)
Where r = \sqrt{x^2 + y^2 + z^2} (should equal orbital radius).
Problem: A satellite has: - Altitude: 600 km → r = 6971 km - Inclination: i = 45° - At t=0, satellite is at ascending node (\nu = 0°, longitude = 0°)
Calculate the ground track position after 15 minutes (t = 900 s).
Step 1: Satellite’s position in orbit
First, find how far the satellite has moved in its orbit.
Orbital period (from Model 13):
T = 2\pi\sqrt{\frac{r^3}{\mu}} = 2\pi\sqrt{\frac{(6971)^3}{398600}} \approx 5820 \text{ s}
Angular velocity in orbit:
\omega_{\text{orb}} = \frac{2\pi}{T} = \frac{2\pi}{5820} = 0.001079 \text{ rad/s}
True anomaly after 900 s:
\nu = \omega_{\text{orb}} \times 900 = 0.001079 \times 900 = 0.9713 \text{ rad} = 55.6°
Satellite position in orbital plane:
x_{\text{orb}} = 6971 \cos(55.6°) = 6971 \times 0.564 = 3931 \text{ km}
y_{\text{orb}} = 6971 \sin(55.6°) = 6971 \times 0.826 = 5758 \text{ km}
Step 2: Convert to equatorial frame
x_{\text{eq}} = 3931 \text{ km}
y_{\text{eq}} = 5758 \times \cos(45°) = 5758 \times 0.707 = 4071 \text{ km}
z_{\text{eq}} = 5758 \times \sin(45°) = 5758 \times 0.707 = 4071 \text{ km}
Step 3: Account for Earth’s rotation
Earth has rotated through:
\Delta\lambda_{\text{Earth}} = 0.004178°/\text{s} \times 900\text{ s} = 3.76°
The ascending node (initially at 0°) is now at:
\lambda_{\text{node}} = 0° - 3.76° = -3.76°
Rotate the satellite’s position by -\lambda_{\text{node}} = 3.76° eastward.
This is a rotation around the z-axis:
x' = x\cos(3.76°) - y\sin(3.76°) = 3931 \times 0.9978 - 4071 \times 0.0656 = 3657 \text{ km}
y' = x\sin(3.76°) + y\cos(3.76°) = 3931 \times 0.0656 + 4071 \times 0.9978 = 4320 \text{ km}
z' = z = 4071 \text{ km}
Step 4: Convert to lat/lon
\text{latitude} = \arcsin\left(\frac{4071}{6971}\right) = \arcsin(0.584) = 35.7°\text{N}
\text{longitude} = \arctan2(4320, 3657) = 49.8°\text{E}
Ground track position after 15 minutes: (35.7°N, 49.8°E)
Below is an interactive ground track simulator.
<label>
Altitude (km):
<input type="range" id="alt-gt-slider" min="200" max="1500" step="50" value="600">
<span id="alt-gt-value">600</span> km
</label>
<label>
Inclination (degrees):
<input type="range" id="inc-slider" min="0" max="98" step="1" value="51">
<span id="inc-value">51</span>°
</label>
<label>
Number of orbits to show:
<input type="range" id="orbits-slider" min="1" max="16" step="1" value="4">
<span id="orbits-value">4</span>
</label>
<div class="button-group">
<button id="preset-iss">ISS (400 km, 51.6°)</button>
<button id="preset-polar">Polar (800 km, 90°)</button>
<button id="preset-sso">SSO (800 km, 98°)</button>
</div>
<p id="gt-info"></p>
Try this: - ISS preset: 51.6° inclination means it reaches ±51.6° latitude (no polar coverage) - Polar preset: 90° inclination gives global coverage, passes over both poles - SSO preset: 98° inclination (retrograde) — ground track repeats after ~14 orbits - Increase number of orbits: See the westward shift accumulate - Notice: Lower inclinations create tighter sinusoidal patterns
Key insight: The westward shift per orbit combined with the sinusoidal path creates the characteristic ground track pattern.
Equatorial orbit (i = 0°): Only observes equatorial latitudes
Mid-latitude orbit (i = 51.6°, like ISS): Coverage from 51.6°S to 51.6°N
- Most of Earth’s population lives in this band - Optimizes for human observation and rendezvous
Polar orbit (i = 90°): Global coverage including poles
- Essential for Earth observation missions - Weather satellites, reconnaissance
Sun-synchronous (i \approx 98°, retrograde): Crosses equator at the same local time
- Consistent lighting for optical imagery - Orbital plane precesses at ~1°/day to match Earth’s orbit around Sun
Some satellites are placed in repeat ground track orbits where the ground track pattern repeats exactly after N orbits.
Condition:
\frac{N \times T}{T_{\text{Earth}}} = \text{integer}
Example: Landsat 8 at 705 km altitude has T = 98.9 minutes. After 233 orbits (16 days), the ground track repeats exactly.
Why useful: Allows direct comparison of images from the same orbital geometry.
Earth rotates eastward (west to east). The ground track shifts westward (in the opposite direction).
If you add instead of subtract the Earth rotation angle, the ground track will spiral eastward instead of westward.
Inclination is the angle between the orbital plane and the equator (0°–180°).
Maximum latitude reached is ±inclination (for i \leq 90°).
Retrograde orbits have i > 90°. For example, i = 98° is 82° retrograde and reaches ±82° latitude.
The sub-satellite point (ground track) is directly below the satellite. But the satellite itself is at altitude h, not on the surface.
Line-of-sight calculations (can the satellite see a ground station?) require 3D geometry, not just lat/lon matching.
Real satellites experience: - Atmospheric drag (LEO): Orbit decays, period shortens - J2 perturbation (Earth’s oblateness): Ascending node precesses, argument of perigee changes - Solar/lunar gravity: Small perturbations
For long-term predictions (days/weeks), these matter.
The longitude of the ascending node (\Omega, capital omega) specifies where the satellite crosses the equator going northward.
How it changes:
For polar orbits, \Omega remains nearly constant (in inertial space).
For inclined orbits, J2 perturbation causes \Omega to precess:
\frac{d\Omega}{dt} = -\frac{3}{2} \frac{J_2 R_{\oplus}^2 n}{(a(1-e^2))^2} \cos i
Where: - J_2 = 1.0826 \times 10^{-3} (Earth’s oblateness coefficient) - n is mean motion (radians per second) - a is semi-major axis - e is eccentricity (= 0 for circular) - i is inclination
For sun-synchronous orbits, this precession is set to match Earth’s orbital motion around the Sun (~0.9856°/day).
To rotate a point (x, y, z) by angle \theta around the z-axis:
\begin{pmatrix} x' \\ y' \\ z' \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \end{pmatrix}
Result:
x' = x\cos\theta - y\sin\theta y' = x\sin\theta + y\cos\theta z' = z
To rotate by inclination i around the x-axis:
\begin{pmatrix} x' \\ y' \\ z' \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos i & -\sin i \\ 0 & \sin i & \cos i \end{pmatrix} \begin{pmatrix} x \\ y \\ z \end{pmatrix}
Ground track calculations combine multiple rotations: 1. Position in orbital plane 2. Rotate by inclination (tilt the plane) 3. Rotate by longitude of ascending node (orient in space) 4. Rotate by Earth’s rotation (convert to Earth-fixed frame)