ADS-B Flight Path Visualization – First Attempts

With Flight Announcement running in the background at home I’m always up-to-the-minute on overhead aircraft and what they’re doing up there. For example:

So now in addition to airplane noises outside the house there are robot voices inside too!

As time goes on I notice patterns in busy times of day, like 11pm-12am, elevation is about 5,000ft when I can also hear the airplane, and common destinations. But with the announcements intentionally kept short, what about approach direction and route patterns? All of this can be answered with same hardware and a bit more work.

Objective: Understand logging, experiment methods of visualization and data analysis.

To start off, I recorded a 24 hour period December 2-3, 2016. Logging is handled from dump1090 port 30003 using terminal wget to log to a csv file. With this producing about 250mb/day I have an external drive attached to the Pi. From ipython notebook using pandas, the csv is imported to a dataframe.


  • 1.8 million records
  • 999 unique aircraft ID’s
  • As seen in the probability density plot of altitude, most aircraft data points are seen at 5,000ft. (df.hist() is one quick check when reviewing large data sets)


This first attempt of flight track visualization was inspired by Reddit user JorgeGT’s. Shown below is created using matplotlib in python with the goal of reproducing Jorge’s tool in an open source post-process, and get a first look at spatial patterns for my setup.


  • mplot3d scatter plot with colormap axis on altitude: black=0ft to Red=40,000ft.
  • The graphic is created by changing perspective every 1 degree and saving to png.
  • The images are stitched together in a terminal command function and saved to mp4.
  • The red circle is my home coordinate for lack of another reference.

Observations: The high altitude tracks are neatly parallel at precise attitudes and evenly spaced apart. Both ends of the track have reduced density trails as the plane goes in and out of range. The house is definitely shielding all western signals. The converging approach lines into SFO are more scattered than I expected…More on this in future experiments!

To close this experiment, I hope to clean up and post this process on github soon…unfortunately there will be a lot of installation requirements. This required 1 hour to render using 4 cores on a 5th gen i7 CPU. My take away is 1) there is an incredible amount of position data within a 24 hour period, how are the big sites handling all of this data globally, and for the purpose of geospatial visualization reference features are needed to be of any practical use.

This second attempt is inspired by tedsluis/dump1090 readme documentation. After much experimenting I found it very difficult to visualize 24 hours of data in 2D since the whole south bay becomes dense without much order. Shown is a a 5,000ft>altitude>0ft filter:


  • The overlay is generated using a seaborn kde heatmap plot_joint scatter plot
  • For now, the transparent output PNG is manually overlayed on google map snapshot

Observations: It’s hard to see the blue dot, but this confirms my house is directly on SFO approach route. Very interesting to compare the randomness of final approach into “28L” vs “28R”; I want to understand this more.

Looking back, tedsluis’s add-in is doing a lot of work on the server-side. I should plan to upgrade my install!