This repository contains the following scenario:
This project consists of the creation of a web application dashboard that provides real-time information about global air traffic. The main view of the dashboard is the following.
The project was deployed in two versions. A light version using only JavaScript/HTML/CSS that tracks only real-time results that can be accessed here. The full version of this project has a back-end compose of Python and MySQL and it is available here.
The main data source to build our live tracker dashboard is the free API from The OpenSky Network. A short description of the OpenSky Network is the following.
The OpenSky Network live REST API provides a JSON object with geolocation info about the aircraft using Automatic Dependent Surveillance-Broadcast (ADS-B). This project queries the OpenSky Network API every 5 min for the full version of this dashboard and every user access for the light version.
Besides the live data described above, this application utilizes airport information based on the data available here.
The main functionality of the dashboard is two maps shown at the top of this page. The dashboard is intended to provide means for the user to access several different information as described below.
Left MAP: The user has access to the number of aircraft currently on the map (global, not only on the selected view) and the time of the last updated information. Below that, the user has access to the total number of aircraft messages that are currently stored on the database. Right below, the user has a dropdown menu to select a Country to be displayed on the map. Once the country is selected, the country name and the total of airports for that country are displayed on the line above. On the map, the user can either select an aircraft or an airport to obtain more information about it.
Right Map: The user has information about one specific aircraft. On the first line, the aircraft's unique ICAO24 address and the current flight are displayed. The next line shows how many miles that aircraft was traveled based on the data available in this application database. The following line displays how many different flights that aircraft was and how many different aircraft were in that flight. Underneath that, the user has two dropdown menus to select an aircraft or a flight to be updated on the map.
On both maps, the user can click either on the aircraft or airport to open a popup to obtain more information about the selected item.
These horizontal bar charts provide information on the top 10 origin countries in terms of the number of aircraft currently on the map (left) and the top 10 countries in terms of the number of airports (right).
The scatter plot on the left shows the relationship between the aircraft's' speed and altitude. On the right, we have a histogram with the number of aircraft by the altitude.
The doughnut chart on the left shows the aircraft by the source position that was reported on the communication messages. On the right, the chart displays the number of aircraft communication messages that were recorded on this application database by the hour.
-
Data base creation: create the database based on the schema files aircraft_schema and airport_schema. The notebooks Database/Airports_Location.ipynb and Database/Opensky_API_Data.ipynb help to understand how the field are created for each table .
-
Query API and update database: the scripts are used to update the database and query the database based on the database schema. The MySQL_Add runs in the machine that is responsible to query Opensky REST API.
-
Flask web server is the main application file. It handles the webserver and executes all the functionalities needed to run this application.
-
HTML contains the HTML files for the front-end of this application.
-
Javascript contains the JavaScript files that create the front-end of this application.
There are many air traffic data sources that were found while preparing this dashboard that was not explored. The following list some of the resources that can provide more data points to expand this work.
-
Openflights.org - Airport, airline and route data;
-
Airport-data.com and Airport-data.com/api - Extensive Aircraft Data;
-
flyingnut.com - ADS-B observations;
-
Adsbexchange - World's largest source of unfiltered flight data; Adsbexchange aircraft list API - Aircraft json data; ADSBexchange.com API
-
Virtual Radar Server - This JSON file reports on the state of all of the aircraft tracked by a receiver or merged feed;
-
Flightaware - Real-time worldwide flight traffic; Flightaware - Use the registration number (N...) to search for aircraft;
-
avionictools - Convert a US aircraft registration (N Number) to the corresponding ICAO address
-
Associate the aircraft with the airports (to/from);
-
Track the airport's traffic;
-
Add a layer for the weather;
-
Add a search field to the user search by aircraft or airport;
-
Add stats for individual flights and airports.