feat(gpsjam): GPS interference hex overlay API (GPSJAM/ADS-B Exchange) #29
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/gpsjam-interference-overlay"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
GET /api/map/gpsjam?date=YYYY-MM-DD(default yesterday UTC) — a whole-world GPS-interference hex layer sourced from gpsjam.org (John Wiseman / ADS-B Exchange).Data source (probed, stable)
GPSJAM publishes a daily H3 resolution-4 CSV at a stable per-date URL:
https://gpsjam.org/data/{YYYY-MM-DD}-h3_4.csv(gzip, columnshex,count_good_aircraft,count_bad_aircraft). No ADS-B Exchange scraping. Attribution preserved.Behaviour
level=low|medium|highusing GPSJAM's denoise formula100*(bad-1)/(good+bad)(0–2% / 2–10% / >10%).{error: "unavailable", href: "https://gpsjam.org/"}(200) so the frontend shows a HUD link, not an error.overlay_catalog()gains akind=geojsongpsjamstub.h3>=4.0(has cp313 manylinux aarch64 wheels — Pi-safe).Out of scope
Leaflet styling, chokepoints, VesselAPI, nav-accuracy hexbin fallback (ADS-B.lol feed has no NACp/nic fields — skipped as allowed).
Tests
9 new mocked-HTTP tests (
tests/test_gpsjam.py): level thresholds, CSV→GeoJSON (drop zero-bad, malformed rows), catalog stub, API contract (FeatureCollection, 422, unavailable paths), 1h TTL single-fetch.Full suite: 161 passed, 16 skipped (DB integration).