Sky Globe

When I look up at the sky, I might see an airplane or two, but apart from a few rare sightings, the sky seems relatively empty. However, a quick glance at a (pre-COVID) flight schedule says anything but. Our skies are quite literally filled with airplanes, especially in a city with an airport. However, this data is quite difficult to visualise, let alone see even. Taking data from open-sky.org, I created a Sky Globe which allows you to see the airplanes in the skies above your location.

Sky Globe See the code →

Sky Globe takes your location, and visualises the aircraft flying above you in real time. It shows all aircraft within an area of 295km around your location. Airplanes do fly awfully quickly, and a wider catchment area allows us to see aircraft that might be passing on the periphery of your location. The sketch also shows the visualisation of the altitude and traces the path of the aircraft as it passes through the sky. The position of the aircraft updates every 5.5 seconds. Each aircraft is marked with it's callsign and the country of origin. The information on display has been kept to a minimum to allows viewers to have a clear and unimpeded view of the visualisation.

The sketch uses the open-sky API to pull in aircraft coordinates and metadata. I have attemped to inculcate the values of data feminism from Chapter 1, Chapter 4, Chapter 5, and Chapter 6. My intent with this sketch was to visualise and unveil the often hidden activities in the skies above us. Not all aircraft flying are commercial, cargo, private, or military. Some aircraft have hidden agendas, often hidden behind false callsigns. This article elucidates one such incident. Websites such as FlightAware and FlightRadar24 do show the aircraft in our vicinity, but it's difficult to visualise the data with a 2D visual. The source of the data is not clear with these commercial websites. The data on open-sky is crowd-sourced, and hence aircraft cannot be hidden unless they switch off their ADS-B transponders (highly unlikely as they won't show up on ATC radar, which has major safety implications).

Before creating the 3D version, I initially tried using a standard 2D version of the sketch which would reveal aircraft information on mouse hover.

2D Sketch

However, this variation wasn't very useful in displaying information as it didn't illustrate the position of the aircraft in relation to the viewer. The 3D view was important in conveying relative position of the aircraft in the sky.

Development

Developing this sketch was far more complicated than I initially imagined. There were a lot of moving parts, although mostly to do with the visualisation rather than navigating the API itself. One of the biggest challenges was creating the trails in the sky, as well has having background refresh. I used the same trick from the Data Portrait assignment. However, this meant that I had to develop a system to identify individual aircraft and update their locations without creating a new array of aircraft everytime. This was solved with a system of comparing two different arrays, and using filter to either remove or add aircraft as was required.

Having figured out the data structures of the aircraft lists, I had to figure out how to create the trails for each aircraft, which would extend from the coordinates. I used a slightly complicated solution of creating two PVectors which would extend from the 3D coordinates to create each edge of the trail. This was needed as it would adapt to the rotation of the aircraft (another maths challenge to solve!) as it turned. Along the journey, I even made a case for, and advocated a contribution to p5.js!

Vector driven Trails Vector driven trails

There are still unresolved issues with the sketch, which I haven't yet figured out how to solve. There appears to be a bizarre issue, where I can't seem to add (+) two variables. I'm utterly perplexed by this, and so I've used a hacky workaround to get around this issue. The other issue is that sometimes on manually entering coordinates, the API returns a null value. I can't figure out whether this means that there aren't any aircraft in the given area, or that there's something wrong with the API call itself. There appears to be no error message, so I'm assuming the 'null' refers to the lack of aircraft in the area.

Reflections

This is perhaps the first sketch where the output genuinely surprised me. I wasn't expecting to see the visuals that I designed, perhaps because I didn't have any control over the data stream or the information displayed on the screen. I merely defined the rules, and the data stream does the rest. I do have a casual interest in aircraft and the aerospace industry, and so it was intersting to see the behaviours and patterns of aircraft around an airport. I could see the approach and departure patterns quite clearly from the visualisation!

Airport patterns Approach Patterns

The process of visualisation of an open, yet difficult to visualise data source was satisfying. I realised that perhaps it wasn't so difficult to 'see' the often hidden and unseen parts of our world. The data is available, I just need to put some effort into making it work for me!