| .vscode | ||
| config | ||
| doc | ||
| flightmonitor | ||
| flightmonitor_tile_cache_fallback/osm | ||
| map_tile_cache/osm/8 | ||
| opensky-api-master | ||
| .gitignore | ||
| AnalisiDelSoftware.md | ||
| app_settings.json | ||
| bbox_profiles.json | ||
| debug_opensky.py | ||
| FlightMonitor.ico | ||
| GEMINI.md | ||
| mappa.png | ||
| opensky-api-master.zip | ||
| README.md | ||
| temp.py | ||
| test_overlay.py | ||
| todo.md | ||
Certamente! Ho preparato due versioni della presentazione, una in italiano e una in inglese. Entrambe evidenziano non solo le funzionalità visibili all'utente, ma anche i punti di forza dell'architettura software, che sono molto importanti per un progetto di questo livello.
Presentazione (Italiano)
FlightMonitor: Applicazione Avanzata per il Monitoraggio del Traffico Aereo
FlightMonitor è un'applicazione desktop sviluppata in Python, progettata per offrire una suite completa di strumenti per il monitoraggio, la registrazione e l'analisi del traffico aereo. Nata come strumento per sviluppatori e appassionati di aviazione, l'applicazione combina un'interfaccia utente reattiva con un backend robusto e multi-threaded per la gestione dei dati in tempo reale e storici.
Caratteristiche Principali
-
Monitoraggio Live: Visualizza in tempo reale il traffico aereo in una specifica area geografica (Bounding Box). I dati vengono aggiornati a intervalli configurabili, ottimizzati in base allo stato di autenticazione dell'utente (utente registrato vs. anonimo).
-
Analisi Dati Storici: Permette di scaricare e visualizzare i dati di volo per un intervallo di tempo passato, definendo l'area di interesse e l'intervallo di campionamento.
-
Mappa Interattiva e Intelligente:
- Una mappa completamente interattiva basata su tile, con caching su disco per performance ottimali e uso offline.
- Funzionalità di pan, zoom e recenter.
- Visualizzazione delle tracce dei velivoli con colori unici per ogni aereo.
- Una griglia geografica (reticolo) dinamica con meridiani e paralleli, che si adatta intelligentemente al livello di zoom per una leggibilità ottimale.
-
Viste Dettagliate dei Dati:
- Un pannello di dettaglio rapido che mostra le informazioni principali del velivolo selezionato.
- Una finestra di dettaglio completa con tutte le informazioni statiche (dal database) e dinamiche (dati di volo correnti), inclusa una mappa dedicata alla traccia completa del volo.
-
Logging Dati Avanzato:
- Possibilità di registrare l'intera sessione di monitoraggio.
- Salvataggio dei dati JSON grezzi ricevuti dal provider, per analisi offline e debug.
- Creazione automatica di un file di report riassuntivo con i dati della sessione e il conteggio degli aerei per ogni interrogazione.
-
Gestione Database:
- Importazione di database di aeromobili da file CSV con una dialog di progresso dedicata.
- Archiviazione dei dati di volo in un database SQLite giornaliero per una gestione efficiente.
-
Personalizzazione:
- Salvataggio e caricamento di profili di aree geografiche per un accesso rapido alle zone di interesse comune.
- Configurazione centralizzata per un facile tuning di parametri API, polling rate e stile della UI.
Architettura Tecnica
Il progetto è costruito su un'architettura MVC-like (Model-View-Controller) pulita, con una forte enfasi sulla separazione delle responsabilità (SoC).
-
Model: Lo strato dati astrae completamente la fonte (OpenSky, ecc.) attraverso un modello dati canonico (
CanonicalFlightState). GliAdapterdedicati gestiscono la comunicazione con le API esterne. Lo storage è affidato a SQLite con una gestione separata per dati dinamici e statici. -
View: L'interfaccia, basata su Tkinter (ttk), è composta da pannelli modulari e riutilizzabili. È un componente "passivo" che riceve dati dal Controller e notifica le interazioni dell'utente.
-
Controller: Il
AppControllerorchestra il flusso di lavoro. Non contiene la logica di business, ma delega a componenti specializzati come iDataProcessor,MapCommandHandler,RawDataLoggereCleanupManager. -
Flusso Dati Asincrono: Le operazioni di rete (chiamate API) e di rendering della mappa vengono eseguite in thread separati per garantire che l'interfaccia utente rimanga sempre fluida e reattiva. La comunicazione tra i thread e il thread principale della GUI avviene in modo sicuro tramite code (
queue.Queue), seguendo le best practice per le applicazioni concorrenti.
Stack Tecnologico
- Linguaggi: Python (con hint di tipo per robustezza)
- GUI: Tkinter (con widget moderni
ttk) - Networking:
requests - Elaborazione Immagini:
Pillow (PIL) - Dati Geospaziali:
mercantile,pyproj - Database:
sqlite3
Sviluppi Futuri
L'architettura modulare è predisposta per future espansioni, tra cui:
- Integrazione di nuove fonti dati (es. FlightAware, ADSB-Hub).
- Implementazione della modalità Playback per rivedere le sessioni registrate.
- Creazione di dashboard con grafici e statistiche avanzate.
Presentation (English)
FlightMonitor: An Advanced Aircraft Tracking Application
FlightMonitor is a desktop application developed in Python, designed to offer a comprehensive suite of tools for monitoring, recording, and analyzing air traffic. Conceived as a tool for developers and aviation enthusiasts, the application combines a responsive user interface with a robust, multi-threaded backend for managing real-time and historical data.
Key Features
-
Live Monitoring: Displays real-time air traffic within a user-defined geographical area (Bounding Box). Data is updated at configurable intervals, optimized based on the user's authentication status (registered vs. anonymous user).
-
Historical Data Analysis: Allows for the download and visualization of flight data for a past time range, enabling users to define the area of interest and the sampling interval.
-
Interactive and Intelligent Map:
- A fully interactive, tile-based map with on-disk caching for optimal performance and offline use.
- Features pan, zoom, and recenter functionalities.
- Displays aircraft tracks with unique colors for each plane.
- A dynamic geographical grid (graticule) with meridians and parallels that intelligently adapts to the current zoom level for optimal readability.
-
Detailed Data Views:
- A quick-look details panel showing essential information for the currently selected aircraft.
- A full-details window with all static information (from the database) and dynamic data (current flight status), including a dedicated map for the aircraft's complete flight track.
-
Advanced Data Logging:
- The ability to record an entire monitoring session.
- Saves the raw JSON data received from the provider, ideal for offline analysis and debugging.
- Automatically generates a summary report file containing session metadata and the aircraft count for each query.
-
Database Management:
- Imports aircraft databases from CSV files through a dedicated progress dialog.
- Archives flight data into a daily SQLite database for efficient management.
-
Customization:
- Saves and loads geographical area profiles for quick access to common zones of interest.
- Centralized configuration for easy tuning of API parameters, polling rates, and UI styling.
Technical Architecture
The project is built on a clean, MVC-like (Model-View-Controller) architecture with a strong emphasis on the Separation of Concerns (SoC).
-
Model: The data layer completely abstracts the source (e.g., OpenSky) through a canonical data model (
CanonicalFlightState). DedicatedAdaptershandle communication with external APIs. Storage is managed by SQLite, with separate handling for dynamic and static data. -
View: The interface, based on Tkinter (ttk), is composed of modular and reusable panels. It acts as a "passive" component, receiving data from the Controller and notifying it of user interactions.
-
Controller: The
AppControllerorchestrates the application's workflow. It does not contain business logic itself but delegates to specialized components likeDataProcessors,MapCommandHandler,RawDataLogger, andCleanupManager. -
Asynchronous Data Flow: Network operations (API calls) and map rendering are executed in separate worker threads to ensure the user interface remains always fluid and responsive. Communication between worker threads and the main GUI thread is handled safely via queues (
queue.Queue), following best practices for concurrent applications.
Technology Stack
- Languages: Python (with type hints for robustness)
- GUI: Tkinter (with modern
ttkwidgets) - Networking:
requests - Image Processing:
Pillow (PIL) - Geospatial Data:
mercantile,pyproj - Database:
sqlite3
Future Developments
The modular architecture is designed for future expansions, including:
- Integration of new data sources (e.g., FlightAware, ADSB-Hub).
- Implementation of a Playback mode to review recorded sessions.
- Creation of dashboards with advanced charts and statistics.