Hoe werkt dit?
Vlucht in beeld laat live zien wat er boven een plek naar keuze vliegt: kies je eigen locatie, een adres of een punt op de kaart, en je ziet de toestellen in beeld met foto, route, hoogte en afstand, in 2D en 3D, plus het weer, het ISS en de heldere satellieten boven die plek.
Elk verkeersvliegtuig (en steeds meer kleine toestellen en helikopters) zendt een paar keer per seconde zijn positie, hoogte, snelheid en vluchtnummer uit op 1090 MHz. Dat heet ADS‑B (Automatic Dependent Surveillance–Broadcast). Iedereen met een antenne en een ontvanger van een paar tientjes kan dat opvangen. Duizenden hobbyisten doen dat en delen hun ontvangst met netwerken als adsb.fi.
De keten
- adsb.fi — elke 2 seconden vraagt deze site het luchtverkeer op binnen een ruime straal rond elke bekeken plek (gebundeld in een paar grote cirkels over Europa). Dat is de gebundelde ontvangst van community‑ontvangers in de omgeving.
- adsbdb — het ICAO‑adres van een toestel wordt vertaald naar registratie, type en eigenaar; het vluchtnummer naar een route (vertrek → bestemming).
- Planespotters.net — levert een foto van precies dát toestel, met naam van de fotograaf.
- OpenSky Network — klik je een toestel aan, dan haalt de site het werkelijk gevlogen spoor op, vanaf het opstijgen. Dat is de massieve lijn achter het toestel; de stippellijn ervoor is de verwachte weg naar de bestemming. OpenSky is een onderzoeksnetwerk (Schäfer e.a., Bringing up OpenSky: A large-scale ADS-B sensor network for research, IPSN 2014).
- Logboek — elke waarneming gaat in een SQLite‑database: dichtstbijzijnde punt, hoogte, snelheid, route. Daar komen de dagoverzichten en records uit.
- Meldingen — bijzondere toestellen (militair, helikopters, laagvliegers) geven een pushmelding op de telefoon.
Luchtfoto of kaart
Onderin de 3D-balk staat bij ondergrond een keuze tussen de luchtfoto en een topografische kaart met plaats- en straatnamen (de BRT Achtergrondkaart van PDOK, gratis en open). Die kaart helpt vooral als je een toestel volgt: op een luchtfoto zie je wel het landschap, maar niet boven welk dorp je hangt. De kaart dekt Nederland; daarbuiten blijft de satellietfoto liggen. Je keuze wordt in deze browser onthouden.
Terugkijken en zeldzaamheid
Bij elk toestel staat hoe vaak dit type, deze maatschappij en dit exemplaar eerder boven de plek zijn gezien. Dat rekent alleen met het eigen logboek van deze plek, dus het zegt niets over hoe zeldzaam een toestel in het algemeen is — wel of jíj het vaker ziet. Zolang een plek nog geen twee weken en tweehonderd waarnemingen heeft, noemen we niets "nieuw", want dan is alles nieuw. Onder Afspelen kun je een eerdere dag versneld terugkijken. Van elke waarneming wordt sinds 18 september 2026 het spoor bewaard (elke vijftien seconden een punt, een maand lang); van oudere dagen is alleen het punt van de dichtste passage bekend en staat een toestel daar stil.
De 3D-weergave
De 3D-pagina toont de plek zelf: in Nederland komen de gebouwen uit 3D BAG (een open 3D-model van alle Nederlandse panden, gemaakt door de TU Delft) en de luchtfoto van PDOK (8 cm per beeldpunt). In Vlaanderen komt de luchtfoto van Digitaal Vlaanderen; daarbuiten is het de satellietfoto van Esri. Per gebied ligt er dus precies één foto — twee luchtfoto's over elkaar gaf eerder zichtbare naden en kleurverschillen. De zon en de maan staan waar ze op dat moment echt staan — de scène rekent dat uit op de kloktijd, en met het vinkje "nacht" zet je de klok op de dichtstbijzijnde nacht, om de verlichting overdag te bekijken. Het weer komt van Buienradar (dichtstbijzijnde KNMI‑station); regen en mist zie je ook in beeld. Let wel: 3D vraagt flink wat van de videokaart. De site kiest zelf een kwaliteitsprofiel; hapert het, zet dan in de balk onderaan de kwaliteit op "laag" (geen schaduwen en anti-aliasing, lagere resolutie) of bekijk de plek in 2D op de live-pagina. Gebruik je Brave met "agressieve" fingerprintbescherming, dan worden de labels in 3D onleesbaar (Brave voegt ruis toe aan tekst die via een canvas wordt getekend); zet de Shields voor deze site op standaard.
De toestellen in 3D
Elk toestel krijgt in 3D een eigen model op ware maat, met een eigen Vlucht in beeld-kleurstelling (geen maatschappijlogo's): zoveel mogelijk per type, anders het model dat er het meest op lijkt. Verkeersvliegtuigen van Boeing, Airbus, Embraer, Bombardier en ATR, zakenjets, kleine vliegtuigen, ultralights en zweefvliegtuigen, helikopters (ook politie en traumaheli) en militaire toestellen. De modellen worden nog verder verbeterd en aangevuld.
Bekijk de modellen van dichtbij — draaien, inzoomen en bij de nieuwste toestellen het landingsgestel en de kleppen bedienen.
Niet elk model is van onszelf: voor bijzondere types gebruiken we werk van makers op Sketchfab, onder een CC BY-licentie. Dat staat ook bij het model zelf op de modellenpagina.
- Boeing 737-800 Cockpit door hakai315 (CC BY 4.0)
- Eurocopter EC135 P2 (FlightGear), cockpit door Heiko Schulz, Maik Justus, Melchior Franz, Oliver Thurau e.a. (FlightGear) (GPL v2)
- Eurocopter EC145 voor FlightGear, cockpit door Heiko Schulz, Maik Justus, StuartC, Melchior Franz e.a. (FlightGear) (GPL v2)
- Embraer E-Jet (E190) voor FlightGear, cockpit door Narendran Muraleedharan e.a. (FlightGear) (GPL v2)
- Boeing 777 voor FlightGear, cockpit door Syd Adams, Justin Smithies, Thorsten Brehm, Joshua Davidson e.a. (FlightGear) (GPL v2)
- Airbus A320-family voor FlightGear (IDG), cockpit door Josh Davidson, Jonathan Redpath, merspieler, Matthew Maring, Thorsten Herrmann, Semir Gebran e.a. (FlightGear) (GPL v2)
- Bombardier CRJ700 voor FlightGear, cockpit door Ryan Miller e.a. (FlightGear) (GPL v2)
- B612 (lettertype van de cockpitopschriften) door Airbus / Intactile DESIGN (SIL Open Font License 1.1)
- Cessna 172P voor FlightGear, cockpit door c172p-team (FlightGear) (GPL v2)
Bediening in 3D: met de muis sleep je om te draaien, scroll je om te zoomen en sleep je met de rechterknop om te kantelen. Op een touchscreen kijk je met één vinger rond om het punt midden in beeld, verschuif je met twee vingers en zoom je door te knijpen.
Kaartlagen
Via het lagenknopje rechtsboven op de kaart zet je extra lagen aan: de buienradar (KNMI, laatste vijf minuten), Natura 2000-gebieden (RVO), gemeente- en provinciegrenzen (Kadaster) en de geschatte uitstoot van vandaag per vak van 5×5 km (eigen telling, zie hieronder). De eerste komen rechtstreeks van de open kaartdiensten van PDOK en KNMI; de keuze wordt in je browser onthouden.
Verbruik en uitstoot (schatting)
Bij elk toestel van een bekend type staan "weetjes": stoelen, gewichten, spanwijdte, motoren, en een schatting van het verbruik op dat moment. Die schatting komt uit OpenAP, het open vliegtuigprestatiemodel van de TU Delft: uit type, hoogte, snelheid en klim- of daalsnelheid volgt het brandstofverbruik (volgens de makers vergelijkbaar in nauwkeurigheid met BADA 3, het model dat de luchtvaart zelf gebruikt), en daaruit CO₂ (3,16 kg per kg kerosine) en NOx (ICAO-motordatabank). Wat we niet weten is het gewicht en de precieze motor; we rekenen met driekwart van het maximale startgewicht en de standaardmotor, dus reken op ±30 % per toestel. Over een dag middelt dat redelijk uit.
Op de live-pagina staat per plek in Nederland de optelsom van vandaag: alle toestellen binnen de gekozen straal, per vak van 5×5 km bijgehouden. Helikopters, turboprops, kleine vliegtuigen en militaire toestellen zitten niet in het model en tellen dus niet mee; de werkelijkheid is eerder hoger dan lager. Als vergelijking gebruiken we de auto: een gemiddelde personenauto stoot in de praktijk ongeveer 130 gram CO₂ per kilometer uit, en 13.000 km is een jaar rijden. Dat is alleen om een getal voelbaar te maken. Uitstoot op 10 km hoogte is bovendien iets anders dan wat er lokaal neerkomt; dat rekenen we bewust niet uit.
De vluchtmeter (schatting)
Bij een toestel met een route staat in het detailvenster en bij het volgen in 3D een meelopende teller van wat die vlucht tot nu toe kost en opbrengt. Het is een ruwe schatting met gemiddelden, geen cijfers van de maatschappij (die zijn geheim). Kosten: brandstof (het verbruik op kruishoogte uit OpenAP × 80 %, omdat een toestel onderweg lichter wordt, × de kerosineprijs van deze site), plus vaste kosten per vlieguur voor toestel, onderhoud, bemanning, verkeersleiding en overhead (van ongeveer € 2.200 voor een regionaal toestel tot € 11.500 voor een grote widebody), plus luchthavengelden en afhandeling: de helft bij vertrek, de andere helft bij aankomst. Opbrengst: stoelen (OpenAP) × 85 % bezetting × een gemiddelde ticketprijs die met de afstand oploopt (€ 60 + 6 cent per km, alle klassen door elkaar) plus € 15 bijverkoop per passagier, en vracht in de buik bij widebodies. De opbrengst loopt op met de afgelegde afstand. De vertrektijd kennen we niet; die schatten we uit hoe ver het toestel al van het vertrekveld is. De route komt per vluchtnummer van adsbdb en klopt niet altijd; dan klopt de teller ook niet. Turboprops, kleine vliegtuigen, helikopters en vluchten onder 150 km krijgen geen teller. De maat komt uit ons eigen rekenvoorbeeld van een 777-300ER van Amsterdam naar Shanghai, naar grootte geschaald.
Wat betekent "boven de plek"?
Een toestel telt als "boven de plek" als het binnen 5.6 km van het middelpunt komt. Op kruishoogte (ruim 10 km) is dat vrijwel loodrecht boven je; op 1.000 meter zie je het duidelijk overkomen.
Een andere plek
Met de knop 📍 bovenin bekijk je hetzelfde boven een plek naar keuze: je eigen locatie
(op de telefoon), een adres of plaats, of een punt op de kaart. Zo'n losse plek heeft een adres als
/@52.500,5.470/ en toont live verkeer, weer, ISS en satellieten, maar houdt geen logboek bij.
Sla je de plek op met een naam, dan krijgt hij een korte code (/l/abc123/) en vanaf dat moment
een eigen logboek en statistiek. Je eigen plekken staan onder de 📍-knop, maar alleen in de browser waarin je ze
aanmaakte; op een ander apparaat heb je de link nodig. Een plek
die dertig dagen niet bekeken is, wordt niet meer gelogd tot iemand er weer naar kijkt. Coördinaten worden
afgerond op ongeveer honderd meter. Het werkgebied is Europa: de open API van adsb.fi levert
per verzoek een cirkel van hooguit 460 km, en dat is precies genoeg voor een paar cirkels over Europa, niet
voor de hele wereld.
Waar elk getal vandaan komt
Per onderdeel: gemeten, berekend of geschat, de bron, en wat we niet weten.
| hoe | bron | wat we niet weten | |
|---|---|---|---|
| Positie | gemeten | Het toestel zelf (gps), ontvangen door vrijwilligers van adsb.fi | Tussen twee metingen rekenen kaart en 3D door op koers en snelheid; een positie die langer dan 20 s niet gemeten is, staat doorzichtig. Toestellen zonder ADS-B zien we niet. |
| Hoogte | gemeten, omgerekend | Het toestel: drukhoogte en vaak gps-hoogte | Omgerekend naar zeeniveau met de gps-hoogte, anders met de luchtdruk (QNH) die laagvliegers meesturen, anders met de luchtdruk van Buienradar. Dus een goede schatting, geen meting boven jouw dak. |
| Snelheid en koers | gemeten | Het toestel | |
| Type, registratie, maatschappij | opgezocht | adsbdb | Een database, geen meting; kan ontbreken of verouderd zijn. |
| Route | opgezocht, deels gemeten | adsbdb per vluchtnummer; de dag erna OpenSky | Maatschappijen gebruiken één vluchtnummer voor meerdere vluchten, dus de route van adsbdb kan niet kloppen. OpenSky leidt de velden een dag later af uit het gevlogen spoor; die routes staan als gemeten. |
| Foto | opgezocht | Planespotters.net, met de fotograaf erbij | |
| Afstand, 'boven de plek', records | berekend | Uit de posities hierboven | |
| Verbruik en uitstoot | schatting | Model OpenAP (TU Delft) | Rekent met type, hoogte en snelheid; niet het echte verbruik van dat toestel. |
| Voorwaarschuwing (melding) | schatting | Huidige koers en snelheid | Bochten ziet hij niet aankomen. |
| Banen in gebruik | afgeleid | Onze eigen waarnemingen van het afgelopen uur | Geen melding van de luchthaven; een doorstart telt ook als landing. |
| Noodcodes | gemeten | De transpondercode die het toestel uitzendt | Wat er aan de hand was weten we niet. Code 7500 verwerken we niet. |
| GPS-storing | aanwijzing | De nauwkeurigheid (NACp) die toestellen zelf meesturen | Geen bewijs van een storing. |
| 3D-gebouwen | gemeten / deels geschat | 3D BAG (CC BY 4.0); buiten Nederland OpenStreetMap (ODbL) | Van OSM-gebouwen zonder hoogte schatten we die uit het aantal verdiepingen of nemen we 7 m; die staan lichter. |
| Verkeerstorens in 3D | gemeten / deels geschat | Plek uit AHN en BAG (PDOK) | Ooghoogte van Schiphol en Lelystad zoals gepubliceerd; van de andere torens geschat (≈ in beeld). |
| Torenradio | nagebootst | Computerstem op basis van wat de toestellen doen | Geen echte verkeersleiding. De echte radio open je zelf bij LiveATC. |
| Weer en buien | gemeten / verwachting | Buienradar | |
| Wolken in 3D | weermodel | Open-Meteo (KNMI Harmonie, CC BY 4.0) | Lage, middelhoge en hoge bewolking op een raster van ~28 km rond waar je kijkt; de wolkenbasis geschat uit temperatuur en dauwpunt. Wáár de wolken binnen een rastervak precies liggen is getekend, niet gemeten. |
| ISS en satellieten | berekend | Baanelementen van CelesTrak, zelf doorgerekend (SGP4) |
Wat je hier ziet en niet ziet
Alles op deze site komt uit openbare bronnen; de posities komen van andermans ontvangers. Militaire toestellen zenden vaak niet of beperkt uit, en sommige toestellen zenden geen positie. Daarnaast ontbreken gegevens soms in de databases. De site verzint niets bij: waar een foto, route of type ontbreekt, blijft het veld leeg.
Waarom straaljagers soms ontbreken
Je hoort een straaljager, je kijkt op de site en er staat niets. De site hapert dan niet: het toestel zendt gewoon niets uit wat wij kunnen ontvangen. Elke positie hier komt van het toestel zelf. Een burgertoestel zendt een paar keer per seconde zijn positie, hoogte en snelheid uit (ADS-B), en ontvangers van vrijwilligers vangen dat op. Militaire toestellen zijn daar niet toe verplicht. Vooral straaljagers vliegen tijdens oefeningen vaak met de transponder uit, of zenden alleen het versleutelde militaire signaal, dat geen openbare ontvanger kan lezen.
Soms zendt een toestel wel wie het is, maar niet waar het is. Een netwerk kan de positie dan soms uitrekenen uit de kleine verschillen in aankomsttijd bij meerdere ontvangers (multilateratie, MLAT). Dat lukt alleen waar genoeg ontvangers het signaal horen, en bij een toestel dat laag vliegt vaak niet. Radargegevens van Defensie en de luchtverkeersleiding zijn niet openbaar.
Of een militair laagvlieg- of oefengebied op dit moment actief is, wordt voor zover wij konden vinden niet als openbare live bron gepubliceerd. Daarom staat dat niet op de site.
Wat je wel kunt doen: onder de live kaart staat de knop 👀 Ik zie of hoor iets wat er niet op staat. Je melding staat dan een uur op de kaart als stippelcirkel met een vraagteken: een melding van een bezoeker, geen meting. Wij kunnen niet controleren wat er vloog. Hoe meer mensen rond dezelfde tijd en plek hetzelfde melden, hoe duidelijker het wordt. Alle meldingen van de afgelopen 30 dagen staan op de pagina meldingen van bezoekers.
Op je eigen site
Een kleine live kaart voor je eigen site of verenigingspagina: zet dit in je pagina (het stuk vóór /embed is de plek, net als in de adresbalk hier).
<iframe src="https://vluchtinbeeld.nl/boven/leeuwarden/embed" width="600" height="360" style="border:0" loading="lazy"></iframe>
Techniek
Python/Flask met een achtergrondpoller, SQLite, Leaflet voor de kaart, CesiumJS voor 3D, eigen SGP4-berekeningen voor ISS en satellieten, web push voor de meldingen; alles in één Docker-container op eigen hardware, zonder clouddiensten of betaalde API's. De broncode is een privéproject van Processware.
Dit is tegelijk het visitekaartje van Processware: zo'n koppeling van open data, kaarten, 3D en meldingen is precies wat ik voor bedrijven bouw, alleen dan met hún gegevens. Iets vergelijkbaars nodig, of gewoon benieuwd hoe dit in elkaar zit? Mail naar info@processware.nl.
App en meldingen
Via de 🔔-knop bovenin zet je de site als app op je telefoon en kies je waarvoor je een melding wilt: alles dat over de plek komt, militaire toestellen, helikopters, laagvliegers, of een specifiek toestel (registratie, vluchtnummer of hex) zodra het ergens boven Nederland in de lucht is, los van je plek. De melding komt ook aan als de site niet open staat. Op een iPhone werkt dit alleen als de site op het beginscherm staat (Deel → Zet op beginscherm). Er wordt per apparaat een abonnement bewaard, verder niets.
Bèta, zonder accounts
Vlucht in beeld is nog in ontwikkeling: er kan iets haperen, en dingen veranderen nog. Er zijn geen accounts en er worden geen persoonsgegevens gelogd. Een opgeslagen plek is niets meer dan een naam en een coördinaat met een korte code (plus een gehashte afdruk van het IP-adres, alleen om het aantal nieuwe plekken per dag te begrenzen). De lijst met jouw plekken en de sleutel om ze te verwijderen staan alleen in je eigen browser. Meer daarover op de privacypagina.
Het ISS
De baan van het ruimtestation wordt hier zelf uitgerekend (SGP4) uit de baanelementen die CelesTrak publiceert. Daaruit volgen positie, hoogte, snelheid en — het leukste — wanneer het vanaf de plek met het blote oog te zien is: het moet boven de horizon staan, zelf in de zon hangen terwijl het hier al donker is. Dat zijn de heldere, snelle "sterren" die in een paar minuten van west naar oost trekken. Het livebeeld is NASA's eigen stream vanaf de buitencamera's.