SkyProfile
SkyProfile è un'app desktop PyQt5 per interrogare lo storico globale di ADSBexchange per singoli o più aeromobili, rilevare voli multi-tratto ed esportare KML/CSV/JSON/Excel con analisi avanzate (aeroporti, rotte, fasce orarie, callsign, metadati FAA).
Caratteristiche principali
- Interrogazione per intervallo di date tramite ICAO hex; ricerca opzionale per tail/reg tramite il database base aeromobili ADSBx.
- Robusto rilevamento tratte (terra → aria → terra) con flag aria/terra, euristiche su altitudine/velocità al suolo, sosta a terra di 90s, gestione di interruzioni di 20 minuti e cronologia callsign in tempo reale.
- Esportazioni (attivabili singolarmente): KML Punti, KML Rotte 2D, KML Rotte 3D, KML Mappa di calore aeroporti (punti bianchi dimensionati in base all'attività), CSV, JSON, Riepilogo Excel.
- Modalità batch con opzione Consolida report: unisce tutti gli aeromobili in un unico set di esportazioni offline (CSV/JSON/KML/Excel). I file singoli vengono soppressi durante la consolidazione.
- Associazione aeroporti (più vicino entro 250 km; ID sintetici in assenza) riutilizzata in KML ed Excel.
- Ricerca registro FAA per aeromobili con marche N-number (database locale in
resources/faa_registry).
- Avanzamento GUI con stato per fase; controlli Esegui/Stop; icona app applicata a finestra/barra delle applicazioni.
- Menu Impostazioni con "Controlla aggiornamenti" (controllo tag GitHub) e "Informazioni" (versione/info + attribuzioni dati).
Modalità batch
- Input: CSV con colonna
icao_hex (o hex/icao) e/o tail/registration. Ogni riga è un aeromobile bersaglio.
- Comportamento:
- Esegue tutti gli aeromobili elencati nell'intervallo di date scelto.
- Scrive gli output per aeromobile in
output/<HEX>_<TAIL>/ (solo hex se tail mancante).
- Opzionalmente Consolida report: quando abilitato, sopprime i file individuali e produce un unico set unito:
consolidated_<N>ACFT_<start>_<end>.csv/.json (tutti i hit/payload JSON)
- KML consolidati (punti, rotte, rotte 3D, mappa di calore aeroporti) uniti inline per la visualizzazione offline
- Riepilogo Excel consolidato con le stesse schede/grafici di un'esecuzione normale, combinando tutti i voli
- Cache: i download ADSBx vengono comunque memorizzati per aeromobile/giorno in
output/cache/<hex>/YYYY-MM-DD.json.
Installazione / Esecuzione
Dal sorgente
pip install PyQt5 requests simplekml openpyxl lxml numpy
python skyprofile.py
Eseguibile impacchettato (Windows)
- Usa
dist/SkyProfile.exe con dist/resources/ affianco (contiene dati FAA/aeroporti/acdb).
Esportazioni e normalizzazione
- Rilevamento tratte: flag terra/aria, controlli altitudine/GS, sosta a terra 90s, interruzione di 20 minuti con atterraggio, media dei cluster a terra, cronologia callsign per tratta.
- KML Punti: un placemark per arrivo di tratta con orari, durata, callsign, metadati.
- KML Rotte 2D/3D: tracce complete delle tratte (non linee rette); le rotte 3D includono l'altitudine.
- KML Mappa di calore aeroporti: un marker per aeroporto visitato, dimensionato in base alle visite totali (arrivi+partenze) e colorato di bianco per una sovrapposizione pulita; gli attributi includono date di arrivo/partenza, hex, tail.
- CSV: una riga per hit; le colonne includono hex e tail più
ac_data appiattito (nessuna colonna ac_data_json grezza).
- JSON: payload incapsulato per aeromobile:
{ hex, tail, meta, data: [blob raw trace_full] }; il JSON consolidato è un elenco di questi payload.
- Riepilogo Excel (workbook completo multi-foglio):
Summary: Metadati (hex, registrazione, tipo, proprietario, modello, flag, intervallo di date); dettagli FAA quando disponibili.
Flights: Una riga per tratta rilevata; colonne per hex, tail, id segmento, timestamp UTC partenza/arrivo, durata, ID e nomi aeroporti partenza/arrivo, lat/lon, fasce giorno-della-settimana/giorno-del-mese/ora, callsign e cronologia.
Airports: Aeroporti principali per visite (arrivi + partenze) con ID, ICAO/IATA, nome, città/paese, conteggi, lat/lon; include grafico a barre "Aeroporti per numero di visite".
Routes: Rotte principali con etichette aeroportuali leggibili e conteggi; include grafico a barre "Conteggio rotte percorse".
DayOfWeek: Conteggi per giorno della settimana con grafico a barre.
DayOfMonth: Conteggi per giorno del mese con grafico a barre.
Hours: Decolli vs atterraggi per ora UTC con grafico a barre a doppia serie (Decolli blu, Atterraggi arancione).
Countries: Visite per paese con grafico a barre.
Callsigns: Conteggi di utilizzo dei callsign.
- I grafici usano sfondi bianchi, assi Y interi con griglia sensata (ogni 10 o 100 per conteggi elevati) ed etichette dei valori sulle barre.
Risorse e cache
- I dati condivisi vivono in
resources/ (acdb_cache, airport_db, faa_registry). Le build PyInstaller lo includono tramite --add-data e lo copiano accanto all'EXE.
- La cache delle tracce ADSBx rimane in
output/cache/<hex>/YYYY-MM-DD.json.
- Le esportazioni per aeromobile sono raggruppate in
output/<HEX>_<TAIL>/ (o solo hex se nessun tail). Le esportazioni batch consolidate usano consolidated_<N>ACFT_<intervallo date>* nella cartella principale output/.
Note e limitazioni
- Le lacune di copertura possono ancora far mancare gli orari esatti a terra; l'associazione all'aeroporto più vicino può ripiegare su ID sintetici
LL_lat_lon.
- Le foto sono disabilitate in Excel per evitare disegni corrotti.
- L'EXE Onefile è grande perché include Python + Qt + dipendenze; usa one-dir se ti serve un EXE più piccolo.
Licenza
- Apache License 2.0 (vedi
LICENSE). Dati/API esterni rimangono sotto i propri termini.