How Sky Lens identifies what's in the sky
Sky Lens combines sixteen primary data sources — every aircraft broadcasting ADS-B, fourteen thousand catalogued satellites, planetary ephemeris, terrain elevation, real-time satellite cloud cover, and published airspace — and scores each candidate against your observation with a transparent likelihood-ratio pipeline. This page lists every source, its cadence, and its precision.
Where the data comes from
Every input is a primary or near-primary source. Nothing is scraped, synthesised, or guessed. Cadence and precision claims below are the published or operationally measured values — your individual sighting may improve or degrade from these depending on local conditions.
| Source | Role | Cadence | Precision | Coverage |
|---|---|---|---|---|
| airplanes.liveADS-B Mode S feed | Commercial and general aviation aircraft positions, callsigns, altitudes | 10 s polling | Aircraft broadcasts own GPS; typical NIC 7–8 ≈ 75–185 m horizontal. Interpolation between samples σ ≈ 50 m. | Belgium full |
| Open Glider NetworkOGN / FLARM aggregator | Gliders, paragliders, light aircraft, drones with OGN-tracker | sub-10 s | Tracker-dependent; FLARM typical GPS accuracy ≤ 10 m. UAV type tagged on broadcast (drone vs glider vs helicopter). | Belgium full |
| Skyfield + CelesTrak TLEsSGP4 propagator, 14k+ objects | ISS, all Starlink constellations, GPS, Galileo, BeiDou, debris | TLEs refreshed daily | Sub-degree angular accuracy day-of-TLE; degrades to several degrees after ~7 days for LEO satellites. | Global |
| JPL DE421 ephemerisSkyfield | Sun, Moon, planets | Continuous | Sub-arcsecond positional accuracy for visible-light identification purposes. | Global |
| Tycho-2 catalogAstrometry.net 4200-series indexes | Plate-solving of uploaded photographs (star-pattern matching) | Static catalog | Sub-degree pointing accuracy on solved photos; star pattern scales 5.6′ – 8°. | Global visible-light |
| NASA SRTM30 m DEM via Open-Elevation | Terrain elevation for geometric horizon and line-of-sight calculations | Static (2000 mission) | Horizontal sampling 30 m; vertical accuracy ±10 m typical for Belgium. | ±60° latitude global |
| OpenStreetMapOverpass API | Buildings, masts, towers, wind turbines within 500 m (close) and 2 km (mid-range, height-tagged only) | Cached 24 h per observer | Polygon edge nearest-point geometry; explicit height tags < 5 % of Belgian houses (per-type defaults applied: house 8 m, apartments 10–15 m, church 18–30 m). | Crowdsourced |
| Belgian obstacle inventoryaviation obstacle dataset | 1054 wind turbines + 59 wind farms + 50 masts/towers + 26 structures, curated for aviation safety | Periodic update | Lat/lon ≤ 10 m; heights from regulatory filings. | Belgium |
| aviationweather.govMETAR observations | Official airport weather: wind, visibility, cloud, temperature | Hourly typical | Strict mode within 5 km of station; fallback within 100 km. | Belgium airports |
| Open-Meteoforecast + archive | Local weather grid: wind, cloud cover, temperature, precipitation | Hourly | 1 km grid resolution. | Global |
| Meteobluesky-overlay primary | High-resolution cloud cover by altitude band + wind for 3D sky overlay | Hourly | 1 km grid resolution. | Global |
| EUMETSAT MTG-FCICloud Mask product 0678 | Satellite-observed real cloud positions for the 3D sky overlay | 10 minutes | ~2 km at nadir; ~3 km at Belgian latitude. Operational since late 2023. | Africa, Europe, Atlantic |
| AIP BelgiumAeronautical Information Publication | Controlled airspace classes (A–G), TMAs, CTRs, restricted and prohibited zones | AIRAC 28-day | Official Belgian Civil Aviation Authority publication. | Belgium |
| skeyesBelgian ATC | Operational airspace classification cross-reference | Continuous | Official source. | Belgium |
| AIP UAV airspacedrone polygons | Published model-aircraft / UAV airspace polygons used for drone scoring context | Periodic update | 43 polygons. | Belgium |
| BCAA aerodromes registerclub register | RC model-aircraft club locations | Periodic update | 79 entries. | Belgium |
How candidates are ranked
Every potential object the data sources expose becomes a candidate. Each candidate first passes through a series of hard geometric gates that remove physically impossible matches — anything below the geometric horizon, blocked by terrain, blocked by nearby buildings, or operating on the ground at a distance where the observer could not have seen it is excluded before any scoring begins.
Surviving candidates are then evaluated through a likelihood-ratio pipeline. Each candidate type carries a base prior probability appropriate to its category and the day/night context. Every observation input you provide — direction, elevation, movement pattern, colour, sound, duration, time precision — contributes a multiplicative likelihood ratio derived from that candidate's expected behaviour. The product across all inputs yields a normalised probability that you can compare across types.
When no identified candidate explains the observation well, the unexplained probability mass attributes to a residual drone candidate — drones can be local, low-altitude, transponderless, and outside every data source, and the model's inability to identify a sighting is itself diagnostic. Uploaded photographs are plate-solved against a star catalog to fuse the camera's actual sky pointing into the scoring; a precise tap on the photo can identify a catalogued object directly.
What we propagate, what we soften
Sky Lens treats uncertainty as a first-class input — both your time precision and the data source's own precision feed forward into the scoring tolerances. Tighter inputs give stricter angular gates; looser inputs widen them rather than producing false rejections.
Time precision (user-selectable)
You pick the tightness: ±10 s stopwatch, ±30 s, ±1 min (default for typed HH:MM), or ±5 min (approximate). The chosen value widens the angular tolerance proportional to each candidate's apparent angular velocity from your position.
Aircraft position interpolation
Between bracketing ADS-B samples we interpolate with σ ≈ 50 m. Projected positions (when only an earlier sample exists) grow σ with elapsed time × ground speed, multiplied by ×3 if a recent turn is detected.
Satellite az/alt tolerance
Each satellite's az/alt rate is sampled at t and t+10 s. Your time precision is multiplied by that rate to produce a per-axis bearing/elevation tolerance — ISS at ±60 s gets ~58° of leeway, a GEO satellite gets just the compass band.
Acoustic propagation
Predicted sound pressure level uses Lp,1m source values calibrated against published references (ICAO Annex 16, manufacturer flyover measurements) with ISO 9613-2 simplified atmospheric absorption and ±0.5 dB per m/s of aligned wind.
Cloud-visibility factor
Stars, planets and satellites get a per-search dampener that scales with Open-Meteo cloud-cover percentage (0.15 floor when weather data is > 30 km from the observer). The Moon is exempt — it's bright enough to see through cover that hides everything else.
Terrain horizon caching
Per-observer horizon profile is built once and cached 24 h. It mixes DEM elevation (8 distances × 36 azimuths), close-range buildings (≤ 500 m, all polygon edges), and mid-range height-tagged buildings (500 m – 2 km).
What Sky Lens cannot see
We do not pretend that the data covers everything in the sky. Several categories of object are operationally invisible to the inputs above, and Sky Lens labels them as such when relevant.
Military aircraft without civilian ADS-B
Military traffic typically operates on encrypted secondary radar (Mode S with military interrogators) and is invisible to public ADS-B feeds.
Drones not broadcasting OGN
Most consumer drones under 25 kg are not required to carry a transponder under EASA regulations. Their absence from the data is itself informative — it's why a residual drone candidate exists.
Ultralights & paragliders without trackers
Sport aircraft and paragliders that do not carry FLARM or any transponder are invisible. Sky Lens has a separate VFR-no-transponder candidate to capture this category.
Birds, balloons, kites
Birds are out of scope. Weather balloons are estimated from launch-site context (Uccle daily ascent) when the sighting geometry matches.
Aircraft below DEM resolution
SRTM 30 m DEM cannot resolve narrow valleys or individual buildings beyond 2 km. The horizon may underestimate occlusion in dense forest or fine-scale terrain.
Satellite TLE age
TLEs older than ~7 days for LEO satellites accumulate several degrees of angular error. Sky Lens refreshes daily but operationally fresh data is not always available.
Real-time wind below 1 km
Open-Meteo and Meteoblue grids resolve weather at 1 km. Sub-grid wind shear, microclimates, and building wake effects are not modelled.
Photographic identification of unknown sources
Plate-solving needs at least four stable star quads in the frame. Twilight, motion blur, low-elevation foliage, and heavy haze can make solving impossible — Sky Lens then falls back to a form-direction tap match.
Every score is traceable to a source. Open the tool, enter your observation, and inspect the evidence behind each candidate.