ATS Labs · Episode 08 · Open data, production-grade map

Orbit Watch

Every tracked satellite in five CelesTrak groups, computed in your browser every two seconds from published orbital elements, on a 2D map and a 3D globe at real altitude.

The problem

No feed of positions, just numbers and math

There is no public feed that says where every satellite is right now. What is published is a set of orbital elements for each object, and the position has to be computed from them. The hard part is what is inside those numbers: how old they are, a catalog that has outgrown the old format, and groups that are not what their names suggest.

Watch it work

Episode 8 — Orbit Watch (5:04)

One public source end to end: where the orbital elements live, the three details that cost the most time, and the map and globe they turn into.

What it covers

One source, three details, one map

  • The source: CelesTrak, run by T.S. Kelso since 1985, publishes general perturbations (GP) elements for every tracked object, sorted into groups. Orbit Watch reads five of them as JSON — space stations, the brightest satellites, GPS, weather and geostationary — 849 entries in about 350 kilobytes on the day the episode was recorded. The data updates every two hours and the usage policy asks for one download per group per update, so Orbit Watch keeps each group for two hours.
  • Detail one, the map is computed, not observed: an element set describes an orbit at one moment, its epoch, and the SGP4 model carries it forward to now, so the older the elements, the less accurate the position. On the recording day the elements ranged from about five hours to fourteen days old; the card shows the age for every satellite, and a notice appears when the app falls back to its offline snapshot.
  • Detail two, the catalog ran out of digits: the two-line element format has room for five digits in the catalog number, and the catalog has passed 100,000 objects. Soyuz MS-29, Progress MS-35 and MTG-I2 already have six-digit numbers and exist only in the JSON format, which is the one Orbit Watch reads.
  • Detail three, a group is not a category: the space stations group held 22 objects — three parts of the International Space Station, three modules of the Chinese station, seven objects released from the ISS, visiting spacecraft, a station module and one piece of debris — and many of them share almost the same position, so they draw as far fewer dots.
  • How it becomes a map: the panel switches between the five groups and filters by name, each row gives the international designator and the orbit period, a card shows altitude, speed, period, inclination, position, catalog number and element age, the ground track runs 50 minutes back and ahead and splits at the date line, a circle shows the area of Earth that can see the satellite, follow mode keeps it centered, and a 3D globe places every satellite at its real altitude, from low orbit to the geostationary ring.

What it does not do

  • Not for collision avoidance or any operational use — positions are computed from published elements and lose accuracy with age.
  • Not every satellite — Orbit Watch reads five CelesTrak groups, not the whole catalog.
  • No pass predictions for your location — it shows where satellites are, not when they rise over you.

Where the data comes from

Every source in the episode

The orbital elements are published by CelesTrak (T.S. Kelso) and used under its usage policy: one download per group per update. Positions are computed in the browser with satellite.js. The credit sits in the Orbit Watch footer and its About dialog.

Build with us

Need this on your data?

Orbit Watch is an ATS Labs build — TypeScript on the ArcGIS Maps SDK for JavaScript and Calcite, over public orbital elements — and it is a demonstration of what All Things Spatial builds. The real thing — your data, your brand, your infrastructure — is the work we do for clients.