SkyProfile
SkyProfile ist eine PyQt5-Desktop-Anwendung zur Abfrage des ADSBexchange-Globe-Verlaufs für einzelne oder mehrere Luftfahrzeuge, zur Erkennung von Flügen mit mehreren Abschnitten und zum Export von KML/CSV/JSON/Excel mit umfangreichen Analysen (Flughäfen, Routen, Zeitbereiche, Rufzeichen, FAA-Metadaten).
Hauptfunktionen
- Datumsbereichsabfrage per ICAO-Hex; optionale Tail-/Registrierungssuche über die ADSBx-Basis-Flugzeugdatenbank.
- Robuste Abschnittserkennung (Boden → Luft → Boden) mit Luft-/Boden-Flags, Höhen-/Bodengeschwindigkeits-Heuristiken, 90-Sekunden-Bodenverweildauer, 20-Minuten-Lückenbehandlung und Live-Rufzeichenverlauf.
- Exporte (umschaltbar pro Typ): KML-Punkte, KML-Routen 2D, KML-Routen 3D, Flughafen-Heatmap-KML (weiße Punkte, nach Aktivität skaliert), CSV, JSON, Excel-Zusammenfassung.
- Batch-Modus mit optionaler Berichtskonsolidierung: fasst alle Luftfahrzeuge in einem einzigen Satz Offline-Exporte zusammen (CSV/JSON/KML/Excel). Einzeldateien werden bei Konsolidierung unterdrückt.
- Flughafenabgleich (nächster innerhalb von 250 km; synthetische IDs bei Fehlen) wiederverwendet für KML und Excel.
- FAA-Registerabfrage für N-Nummer-Luftfahrzeuge (lokale DB in
resources/faa_registry).
- GUI-Fortschrittsanzeige mit Phasenstatus; Run/Stop-Steuerung; App-Symbol für Fenster/Taskleiste.
- Einstellungsmenü mit „Check for Updates“ (GitHub-Tag-Prüfung) und „About“ (Version/Info + Datenquellenangaben).
Batch-Modus
- Eingabe: CSV mit Spalte
icao_hex (oder hex/icao) und/oder tail/registration. Jede Zeile ist ein Luftfahrzeug-Ziel.
- Verhalten:
- Führt alle aufgeführten Luftfahrzeuge im gewählten Datumsbereich aus.
- Schreibt pro Luftfahrzeug Ausgaben in
output/<HEX>_<TAIL>/ (nur Hex, wenn Tail fehlt).
- Optional Berichtskonsolidierung: Wenn aktiviert, werden Einzeldateien unterdrückt und ein einziger zusammengeführter Satz erstellt:
consolidated_<N>ACFT_<start>_<end>.csv/.json (alle Treffer/JSON-Payloads)
- Konsolidierte KMLs (Punkte, Routen, 3D-Routen, Flughafen-Heatmap) für Offline-Betrachtung zusammengeführt
- Konsolidierte Excel-Zusammenfassung mit denselben Registerkarten/Diagrammen wie bei normalem Lauf, die alle Flüge kombiniert
- Cache: ADSBx-Downloads werden weiterhin pro Luftfahrzeug/Tag unter
output/cache/<hex>/YYYY-MM-DD.json zwischengespeichert.
Installieren / Ausführen
Aus Quellcode
pip install PyQt5 requests simplekml openpyxl lxml numpy
python skyprofile.py
Gepackte EXE (Windows)
dist/SkyProfile.exe verwenden mit dist/resources/ daneben (enthält FAA/Flughafen/ACDB-Daten).
Exporte & Normalisierung
- Abschnittserkennung: Luft-/Boden-Flags, Höhen-/GS-Prüfungen, 90 Sekunden Bodenverweildauer, 20-Minuten-Lücken als Landung, Boden-Cluster-Mittelung, Rufzeichenverlauf pro Abschnitt.
- KML-Punkte: Ein Platzhalter pro Abschnittsankunft mit Zeiten, Dauer, Rufzeichen, Metadaten.
- KML-Routen 2D/3D: Vollständige Abschnittsspuren (keine geraden Linien); 3D-Routen enthalten Höhen.
- Flughafen-Heatmap-KML: Ein Marker pro besuchtem Flughafen, skaliert nach Gesamtbesuchen (Ankünfte+Abfahrten) und weiß eingefärbt für saubere Überlagerung; Attribute enthalten An-/Abfahrtsdaten, Hex, Tail.
- CSV: Eine Zeile pro Treffer; Spalten enthalten Hex und Tail sowie flache
ac_data (keine rohe ac_data_json-Spalte).
- JSON: Umhüllte Payload pro Luftfahrzeug:
{ hex, tail, meta, data: [raw trace_full blobs] }; konsolidiertes JSON ist eine Liste dieser Payloads.
- Excel-Zusammenfassung (vollständige mehrseitige Arbeitsmappe):
Summary: Metadaten (Hex, Registrierung, Typ, Eigentümer, Modell, Flags, Datumsbereich); FAA-Details, falls verfügbar.
Flights: Eine Zeile pro erkanntem Abschnitt; Spalten für Hex, Tail, Segment-ID, Abflug-/Ankunfts-UTC-Zeitstempel, Dauer, Abflug-/Ankunftsflughafen-IDs und -Namen, Breiten-/Längengrad, Wochentag/Monatstag/Stunde-Buckets, Rufzeichen und Verlauf.
Airports: Top-Flughäfen nach Besuchen (Ankünfte + Abfahrten) mit IDs, ICAO/IATA, Name, Stadt/Land, Zählungen, Lat/Lon; enthält Balkendiagramm „Airports by Number of Visits“.
Routes: Top-Routen mit lesbaren Flughafenbezeichnungen und Zählungen; enthält Balkendiagramm „Count of Routes Traveled“.
DayOfWeek: Zählungen nach Wochentag mit Balkendiagramm.
DayOfMonth: Zählungen nach Monatstag mit Balkendiagramm.
Hours: Starts vs. Landungen nach UTC-Stunde mit einem Zweireihen-Balkendiagramm (Starts blau, Landungen orange).
Countries: Besuche nach Land mit Balkendiagramm.
Callsigns: Rufzeichennutzungszählungen.
- Diagramme verwenden weiße Hintergründe, ganzzahlige Y-Achsen mit sinnvoller Gittereinteilung (alle 10 oder 100 bei großen Zählungen) und Wertebeschriftungen auf Balken.
Ressourcen & Zwischenspeicher
- Gemeinsame Daten befinden sich in
resources/ (acdb_cache, airport_db, faa_registry). PyInstaller-Builds beziehen sie über --add-data ein und kopieren sie neben die EXE.
- ADSBx-Trace-Cache bleibt unter
output/cache/<hex>/YYYY-MM-DD.json.
- Pro-Luftfahrzeug-Exporte werden unter
output/<HEX>_<TAIL>/ gruppiert (oder nur Hex ohne Tail). Konsolidierte Batch-Exporte verwenden consolidated_<N>ACFT_<Datumsbereich>* im Hauptordner output/.
Hinweise & Einschränkungen
- Abdeckungslücken können exakte Bodenzeiten verfehlen; die nächste Flughafensuche kann auf synthetische
LL_lat_lon-IDs zurückfallen.
- Fotos sind in Excel deaktiviert, um beschädigte Zeichnungen zu vermeiden.
- Onefile-EXE ist groß, weil sie Python + Qt + Abhängigkeiten bündelt; verwenden Sie one-dir, wenn Sie eine kleinere EXE benötigen.
Lizenz
- Apache License 2.0 (siehe
LICENSE). Externe Daten/APIs unterliegen weiterhin ihren eigenen Bedingungen.