feat(satellites): CelesTrak GP JSON satellites API with SGP4 propagation #43

Merged
sirius merged 4 commits from osint-dashboard/t_fe710941-osint-celestrak-get-api-satellites into master 2026-08-31 23:18:08 -04:00

4 commits

Author SHA1 Message Date
Sirius DevOps
b9558431f2
Merge origin/master into CelesTrak satellites API
Keep satellites import (this PR) and place.reverse_geocode from #37.
2026-08-31 23:15:08 -04:00
Sirius DevOps
c91c9ef321
Merge origin/master into CelesTrak satellites API
Keep /api/satellites (this PR) and /api/infrastructure from #36,
plus both overlay_catalog entries. Disjoint layers.
2026-08-31 22:28:23 -04:00
Sirius DevOps
12467dab4d
Merge origin/master into CelesTrak satellites API
Keep both overlay_catalog entries: satellites (this PR) and
conflicts (already on master). Disjoint layers.
2026-08-31 22:11:56 -04:00
Sirius DevOps
6b5eec3824 feat(satellites): CelesTrak GP JSON satellites API with SGP4 propagation
GET /api/satellites?groups=stations,weather returns last-known satellite
positions propagated from CelesTrak GP JSON (OMM mean elements, not TLE)
via the real sgp4 library (TEME->geodetic), not two-body Kepler.

- Fetch gp.php?GROUP=...&FORMAT=JSON at most once per 2h per group,
  cached with a last-good blob fallback for 403 / stale responses.
- SatNOGS TLE fallback only when the CelesTrak cache is empty.
- bbox viewport culling; unknown group -> 400.
- overlay_catalog() gains id=satellites (kind=points, /api/satellites).
- OMM path handles NORAD cat numbers >= 100000 (no TLE round-trip).
2026-08-31 21:42:50 -04:00