KML-Export: Globale Flugzeugdaten speichern und auswerten

Flugzeugdaten

Mit dem neuen Button „KML Export“ in der FlugMonitor-Anwendung lassen sich die Echtzeit-Daten aller aktuell von OpenSky erfassten Flugzeuge weltweit in eine KML-Datei exportieren. KML steht für „Keyhole Markup Language“ – ein XML-basiertes Dateiformat, das von Google Earth, Google Maps, QGIS und vielen anderen Kartenprogrammen direkt geöffnet werden kann. Hier mal eine Ansicht in Google Earth:

Der KML-Export ergänzt den FlugMonitor um eine leistungsfähige Archiv- und Analysefunktion. Aus den 17 Feldern eines einzelnen StateVectors lässt sich ein vollständiges Lagebild jedes Flugzeugs rekonstruieren: wo es ist, in welche Richtung es fliegt, wie schnell, wie hoch, wem es gehört und wie verlässlich die Daten sind. Multipliziert mit tausenden Flugzeugen gleichzeitig entsteht ein präziser Schnappschuss des globalen Luftverkehrs – zu jedem beliebigen Zeitpunkt.


———————————————————————–
Was passiert beim Klick auf „KML Export“?
———————————————————————–

1. Es öffnet sich ein nativer Datei-Speichern-Dialog des Betriebssystems.

2. Als Dateiname ist automatisch ein Zeitstempel vorausgefüllt,
zum Beispiel: flugdaten_20260419_063345.kml

3. Nach Bestätigung holt die Anwendung im Hintergrund (SwingWorker)
die aktuellen Flugdaten frisch von der OpenSky-API ab:

4. Die Rohdaten werden über die Funktion Kml.formatStateVectorToKml(states)
in gültiges KML-Format umgewandelt.

5. Die erzeugte KML-Datei wird UTF-8-kodiert auf dem gewählten Pfad
gespeichert. Eine Erfolgsmeldung mit dem vollständigen Dateipfad
bestätigt den Abschluss.

———————————————————————–
Welche Daten enthält ein StateVector – und was bedeuten sie?
———————————————————————–

Jedes einzelne Flugzeug liefert beim Abruf einen sogenannten StateVector
einen Datensatz, der den aktuellen Zustand der Maschine zu einem bestimmten
Zeitpunkt vollständig beschreibt. Ein konkretes Beispiel:

StateVector{
geoAltitude = 8313.42,
longitude = 15.6949,
latitude = 41.3496,
velocity = 198.89,
heading = 306.69,
verticalRate = 8.78,
icao24 = ’39de4f‘,
callsign = ‚TVF38EG‘,
onGround = false,
lastContact = 1.776685361E9,
lastPositionUpdate = 1.776685361E9,
originCountry = ‚France‘,
squawk = ’null‘,
spi = false,
baroAltitude = 8161.02,
positionSource = ADS_B,
serials = null
}

Das sind die konkreten Felder im Einzelnen:

icao24 = ’39de4f‘

Der ICAO24-Transpondercode ist die weltweite, unveränderliche Kennung eines Luftfahrzeugs – vergleichbar mit einem Fahrzeugkennzeichen, nur dass er niemals wechselt. Er besteht aus sechs Hexadezimalzeichen (also Ziffern 0–9 und Buchstaben A–F). Anhand dieses Codes lässt sich jedes Flugzeug eindeutig identifizieren und seine gesamte Flughistorie in Datenbanken nachverfolgen.

Im Beispiel: 39de4f – ein französisch registriertes Flugzeug (Kennung beginnt mit 39, typisch für Frankreich).


callsign = ‚TVF38EG‘

Das Rufzeichen (englisch: Callsign) ist die Kennung, die der Pilot im Funkverkehr mit der Flugsicherung verwendet. Bei Linienflügen entspricht es meist dem IATA/ICAO-Airline-Code plus der Flugnummer. TVF steht für Transavia France, 38EG ist die interne Flugnummer.

Das Rufzeichen kann sich je nach Flug ändern – im Gegensatz zum ICAO24-Code.

latitude = 41.3496 / longitude = 15.6949

Die geografische Position des Flugzeugs in dezimalen Breitengraden (latitude, Nord-Süd) und Längengraden (longitude, Ost-West).

Im Beispiel: 41.35°N / 15.69°E – das entspricht dem Luftraum über Süditalien, ungefähr auf Höhe der Region Kampanien/Apulien.

Diese Koordinaten sind das Herzstück des KML-Exports: In Google Earth erscheint das Flugzeug genau an dieser Position auf der Weltkarte.

geoAltitude = 8313.42 (Meter)

Die geodätische Höhe – also die Höhe über dem Meeresspiegel – berechnet aus GPS-Satellitensignalen. Sie wird in Metern angegeben. 8313 Meter entsprechen in der Luftfahrtsprache ungefähr FL270 (Flugfläche 270 = 27.000 Fuß). Das ist ein typischer Steigflug auf dem Weg zur Reiseflughöhe. Der genaue Unterschied zur barometrischen Höhe (s. u.) entsteht durch Luftdruckschwankungen.

baroAltitude = 8161.02 (Meter)

Die barometrische Höhe wird vom Flugzeug selbst über einen Druckmesser (Barometer) berechnet und per Transponder gesendet. In der zivilen Luftfahrt ist diese Angabe die verbindliche Höhenreferenz für die Flugsicherung, da alle Flugzeuge denselben Referenzluftdruck (1013,25 hPa, sogenannter QNH-Standard) verwenden – so wird sichergestellt, dass alle Maschinen auf gleicher Basis staffeln.

Die Differenz von ca. 152 Metern zum GPS-Wert (geoAltitude) ist normal und entsteht durch aktuelle Luftdruckabweichungen.

velocity = 198.89 (Meter pro Sekunde)

Die Geschwindigkeit über Grund (Ground Speed) in m/s. 198,89 m/s entsprechen umgerechnet ca. 716 km/h – eine typische Geschwindigkeit im Steigflug. Im Reiseflug liegen Kurzstreckenflugzeuge meist bei 800–880 km/h.

Hinweis: Dies ist nicht die Eigengeschwindigkeit (True Airspeed), sondern die tatsächliche Bewegung über den Erdboden, beeinflusst durch Wind.

heading = 306.69 (Grad)

Der Kurs des Flugzeugs in Grad, gemessen im Uhrzeigersinn von Norden. 0° = Norden, 90° = Osten, 180° = Süden, 270° = Westen.
306,69° entspricht ungefähr Nordwest – das Flugzeug fliegt also von Süditalien in Richtung Nordwesteuropa (Frankreich / Iberische Halbinsel), was für einen Transavia-Rückflug nach Paris plausibel ist.

verticalRate = 8.78 (Meter pro Sekunde)

Die Steig- oder Sinkrate. Ein positiver Wert bedeutet Steigen, ein negativer Wert bedeutet Sinken.
8,78 m/s aufwärts entsprechen ca. 1.730 Fuß/Minute – eine moderate Steigrate, typisch für einen Mittelstreckenjet im oberen Steigflug.

onGround = false

Ein einfacher Ja/Nein-Wert: Ist das Flugzeug gerade am Boden? Wird true, wenn der Transponder meldet, dass das Fahrwerk belastet ist (Weight-on-Wheels-Signal). Im FlugMonitor dient dieses Flag dazu, Flugzeuge der Kategorie „Parken“ zuzuordnen.


originCountry = ‚France‘

Das Herkunftsland des Transpondercodes, abgeleitet aus dem ICAO24-Code. Es gibt Aufschluss darüber, wo das Flugzeug registriert ist – nicht notwendigerweise, woher der aktuelle Flug kommt.


squawk = ’null‘

Der Squawk-Code ist ein vierstelliger oktaler Code (0000–7777), den der Pilot auf Anweisung der Flugsicherung einstellt. Er dient der Identifikation auf dem Radar der Flugsicherung. Bestimmte Codes haben Sonderbedeutung: 7500 = Entführung, 7600 = Funkkontaktausfall, 7700 = Notsituation.

„null“ bedeutet, dass kein spezifischer Code gesetzt ist.

spi = false

SPI steht für „Special Position Identifier“. Der Pilot kann diesen Schalter drücken, um dem Radarbild einen kurzen Impuls zu geben – zum Beispiel auf Anforderung der Flugsicherung zur eindeutigen Identifikation. false bedeutet, der Schalter ist nicht aktiviert.

lastContact = 1.776685361E9 (Unix-Timestamp)

Der Zeitstempel des letzten empfangenen Signals, ausgedrückt als Unix-Zeitstempel (Sekunden seit dem 01.01.1970 00:00:00 UTC).
1.776685361E9 entspricht dem Zeitpunkt des Abrufs in diesem Beispiel.
OpenSky erfasst Flugzeuge auch dann noch, wenn der Funkkontakt kurz unterbrochen war – lastContact gibt an, wann zuletzt ein Signal ankam.

lastPositionUpdate = 1.776685361E9

Ähnlich wie lastContact, aber spezifisch für das letzte Update der Positionsdaten (Latitude/Longitude). In manchen Fällen können andere Daten (z. B. Geschwindigkeit) häufiger aktualisiert werden als die Positionsangabe.

positionSource = ADS_B

Woher stammt die Positionsinformation? Mögliche Werte:

ADS_B – direkt vom Flugzeug ausgestrahlt (modernste Methode, GPS-basiert, sehr präzise)
MLAT – Multilateration: die Position wird aus der Laufzeit-differenz mehrerer Bodenstationen berechnet
FLARM – Kurzstreckensystem für Kleinflugzeuge/Segelflugzeuge

ADS_B ist der Goldstandard: Das Flugzeug berechnet seine Position selbst per GPS und sendet sie aktiv aus – kein Radar nötig.

serials = null

Seriennummern von Empfangsstationen, die das Signal erfasst haben. null bedeutet, diese Information wird in der aktuellen API-Antwort nicht mitgeliefert oder ist nicht verfügbar.

———————————————————————–
Anwendungsmöglichkeiten der KML-Datei
———————————————————————–

Die exportierte KML-Datei kann in zahlreichen Programmen geöffnet
und weiterverarbeitet werden:

Google Earth: Alle Flugzeuge erscheinen als Punkte auf der 3D-Weltkarte.
Mit geoAltitude werden sie in der richtigen Flughöhe dargestellt – man sieht buchstäblich, wo in der Atmosphäre jede Maschine fliegt.

Google Maps / Maps-Import: KML-Dateien können als eigene Ebene importiert werden – für einfache 2D-Kartendarstellungen.

QGIS / ArcGIS: Professionelle GIS-Software kann KML importieren und Analysen durchführen – z. B. Verkehrsdichte über bestimmten Regionen, Höhenverteilungen auf Flugkorridoren, oder Vergleiche zu verschiedenen Tageszeiten.

Zeitvergleiche: Durch den Zeitstempel im Dateinamen lassen sich Snapshots aus verschiedenen Momenten vergleichen – morgens vs. abends, Werktag vs. Wochenende, Sommer vs. Winter.

Flugkorridor-Analyse: Mit den Heading- und Positionsdaten lassen sich
bevorzugte Flugrouten über Europa oder dem Atlantik sichtbar machen.