Graphical user interface

The traffic library comes with a Qt Graphical user interface (GUI) designed to decode and explore historical and live data.

The GUI can be installed as a plugin package and is accessible through the following command (clickable application icons are doable and will probably be automatically generated in future versions)

pip install traffic_qtgui  # first install the plugin
traffic gui

Data exploration

The GUI consists of two panes:

  • the display pane on the left-hand side, with a map and a plots tab;
  • the command pane on the right-hand side, with selection and filtering buttons.
Startup screen for the GUI

By default, the tool opens with a EuroPP projection. Other projections like Mercator are also available by default: you can customize more projections in the configuration file, in the [projections] section:

default = EuroPP
extra = Lambert93; Amersfoort; GaussKruger


Available projections are default cartopy projections, completed by additional common European projections in the cartotools dependency module (here Lambert 93 is the official projection in France, Amersfoort in the Netherlands and Gauss-Krüger in Germany)


You can implement more projections as plugins.

You can either pan and zoom the map. Zoom is operated by the mouse or trackpad scrool. Note that on MacOS, the trackpad scroll requires clicking.

In order to explore data, click on Open file and select a .pkl file (like sample_opensky.pkl in the data/ directory) By default, a scatter of all last recorded points is displayed.

Scatter plot
  • You may select callsigns in order to plot trajectories.
  • Date and altitude sliders operate filters on the full pandas DataFrame.

In the Plots tab, you may select one callsign with different signals (e.g. altitude on the left-hand side and ground speed on the righ-hand side) or (exclusive) several callsigns with one signal (e.g. altitude).


Data recording

The application does not process raw signals from any 1090 MHz antenna. It relies on other tools and listen to a standard format of raw data broadcasted on specific ports. Specifically, you may run an instance of dump1090 be running with appropriate options:

dump1090 --interactive --net
Then, the second option in the Open file dropdown menu is dump1090.
You should be asked for a reference airport:
Select a reference airport

Fill in the ICAO (LFPG, PHNL, RJBB, etc.) or IATA (SFO, AMS, HKG, etc.) code of the airport for reference coordinates of the antenna. The associated latitude and longitude coordinates are useful to process ground messages. If several airports are in your neighbourhood, choose any of them (the closest one?)


If you use a different decoding device like radarcape, data is broadcasted on a different port (usually 10003). You may add the corresponding address (with airport) in your configuration file: this will add an option in the dropdown menu.

radarcape =
Live recording

For more details on your map, you may enter a name in the Area field and click Plot. The corresponding boundaries will be downloaded from OpenStreetMap servers and added to the map.

Live recording with Openstreetmap contours

This also work with airports: enter the ICAO or IATA code in the Area field and click Airport. Data is downloaded (and cached) from OpenStreetMap servers.

You can then select a callsign and follow its trajectory:

Live recording of a take-off

The second tab lets you plot other details of the trajectory for different signals: altitude shows the climbing profile. Indicated Airspeed (IAS) is plotted here so as to reflect the 250 knots limit under 10,000 ft.

Live recording and display of climb profile

You can automatically zoom to a geographical location by clicking Extent and observe ground movements on the airfield:

Zoom over airport

If you are closer to bigger airport with a good reception (from the rooftop viewing area), you may have fun looking at aircraft ground movements from your application.

Zoom over Schiphol airport

When it decodes data, the GUI also writes a CSV text file in your home directory. The first column in the file is a GPS timestamp (nano-second precision) and the second column the raw message.

$ head ADSB_EHS_RAW_20190225_dump1090.csv


After you close the GUI, you can decode the .pkl file for an offline exploration of the data:

traffic decode ADSB_EHS_RAW_20190225_dump1090.csv LFBO