Mapping bird sightings in New Zealand


Final Projects, Visualization
Bird Watchers Spot A Bird Wearing A Thong. Drawing by Mike Twohy

The birds of New Zealand are both beautiful and bountiful. It’s no small wonder then that the country fosters a community centred around their observation and recording. In 2021 alone there were over a million observations logged to the New Zealand Bird ATLAS, one of the largest bird watching databases. Such a wealth of data can be difficult to visualise, which is exactly what this project aims to do. 

N.b. the online version only contains the first month of data due to file size constraints.

Background

This project is an extension of previous lab work, available here, which involved mapping bird observations in New Zealand. The thought was that adding in an animated element would make the data more digestible so the user would be able to get a better view of the trends. It was also hoped that the project could be scaled up to include global data, not only the New Zealand subset. Overall there were three key goals:

  1. To produce a visualisation that could show all recorded bird observations
  2. To provide a launching point to further learn about the bird population
  3. To create something that was visually interesting even beyond the context of the data
Lab 4 – Bird Sightings in NZ. Available at Tableau Public

An embarrassment of riches

As mentioned above, the amount of bird data available is sizeable, with the global dataset measuring ~137GB for decades’ worth of information. Even by limiting the scope to a single country for a single year, the over one million data points would be incomprehensible if mapped directly. During a previous lab, the data was separated into one month increments, and although that did help make it easier to visualise there were still several concerns. For one, users had to switch through the various maps in order to get a feel for how it changed over time, which proved cumbersome. For another, displaying all the points at once put more emphasis on where people were watching birds, rather than where the birds themselves were at any particular moment. For example it was impossible to distinguish observations between multiple unique birds vs. a single bird travelling. 

Some thought was given to aggregating the birds themselves. eBirds provides examples of how this can be done by using density maps to display abundances. The decision was made that, while this is useful when discussing a single bird species, trying to place multiple density maps onto a single visualisation would lower legibility.

Abundance animations from eBird Online

It’s a bird! It’s a plane! No… it’s definitely a bird

Birds display a wide variety of characteristics. Some birds prefer coastal areas, others mountainous ones. Some prefer to flock together, while others prefer solitude. This project aims to provide insight into some of these characteristics, and give users the ability to learn more about them. Mapping the data over time allows users to explore these characteristics for themselves. They can watch the birds locations change over time, note what types of birds are seen in what locations, and examine how large a flock of birds may be. Resources were also to be provided should the user wish to gain more information.

Inspiration came from the density maps seen above that show migratory patterns. Maps of shipping routes were also drawn upon, as they allow the user to explore characteristics such as ports, coast lines, and canals in a similar way.

Global shipping routes from https://www.shipmap.org

Birdy night

Although the primary demographic of the project was people who already had an interest in ornithology, it was also designed to be visually interesting beyond the context of the data. The idea was for there to be a sense of wonderment as the data moved in front of them, akin to stars twinkling in the sky. The hope is that if the visualisation can draw in a user in who might not otherwise be interested, then it might inspire them to learn.

Methodology

Data

The data used for this project comes from Cornell Ornithology Lab’s eBird project. It consists of bird sighting data uploaded by hobbyist, academics, and government works alike. It contains a wide array of fields, ranging from time and coordinates of the observation, to observed behaviours and available media.

The dataset was then processed by a custom script written in Python (available on github) which did several things:

  • Limited the information contained in each entry to a select few rows
  • Converted each observation time to UTC (this functionality was later removed)
  • Associated each observation species with it’s order (taxonomical data found here)
  • Associated each observation with the date/hour it took place, allowing the data to be read in sequence.
  • Transformed the information into JSON

In addition to making the data more directly readable, it also reduced the total file size by about 50%

D3

The next step was to represent the data visually, for which the D3.js framework was used. This allowed the project to be animated programmatically, as well as uploaded to the web for users to interact with. Fortunately a tutorial was available that demonstrated how to plot points on a map. A map of New Zealand was downloaded from GEOJSON, and a working prototype was created.

Plotting point […] by Nikita Sharman

The key functionality that was added beyond the tutorial was to read the data sequentially to allow the points to appear in time. This was done by nesting the svg generation inside of a for loop with a delay. With the data ordered hour by hour, a 1000ms delay on the loop would cause the data to show one hour every second. Initially all the points of that hour appeared at once, which lead to a strange pulsing effect. Instead each point was given a delay based on the minute of the observation, and a duration set to match the length of the observation.

Interface

With the map and the points now working, additional features were added to the interface. A clock was placed at the top of the screen to give the user feedback on where they were in the data, and play/pause/fast forward buttons were added to give the user additional control. It is worth nothing that the pause functionality has some odd behaviour, including latency and different speed settings, due to D3 working with CSS transitions rather than CSS animations.

An advanced controls module was also added, which allowed the user to filter what birds appeared by their order. Given that there are some 40 different orders, it seemed futile to give each one a unique and meaningful colour, so instead users were given the option to colour the orders as they saw fit. A colour shuffle button was also added if specific colouring wasn’t important. The controls also include a link to an external resource for more information about each of the orders.

Final project interface

UX

Once the basic functionality and layout was implemented several bird enthusiasts were contacted to participate in user experience (UX) testing, with two selected to participate. The testing consisted of a 30 minute zoom call in which participants were sent a live build of the project, and was roughly divided into three main parts. First, they were asked to share their screen and interact with the project naturally, with minimal interruption from the researcher. Secondly the researcher asked participants to perform a variety of predetermined tasks to test various functions/flows. Lastly, the researcher asked participants to set aside the project and posed questions around what they had just seen. Participants were also invited to provide general feedback. Each session was recorded with the participants’ permission, and the results summarised below.

  • Upon landing on the page participants varied on whether they began the animation before exploring. In both cases, received positive reactions when they started the animation.
  • Participants were eager to click around the project, but were disappointed by the lack of interaction. Both suggested being able to click on points to see more information and being able to move the map.
    • Tooltips have been added when the user hovers over the point, and clicking now takes you to a species specific webpage.
    • An interactive map would be future work.
  • Participant 1 found the colour contrast too low. This was changed for participant 2, who quite admired the colours.
  • Both participants noted a lack of familiarity with New Zealand, and wondered if more detail would help. Suggestions included topographical details, information on food/nesting sources, and points of interest such as sanctuaries or parks. Participant 2 noted that this would be less of an issue if they were looking at their home territory. 
    • Topographic features were investigated but were deemed to be too noisy with the point overlay
    • Points of interest has been left to future work
  • Facets were generally understood by participants, with placement being the most obvious, followed by colour and size, and time ranking the lowest.
  • Participants generally overestimated the scale of time in the animation, estimating it at about 1 day/second (vs. the actual 1 hour/second) at the lowest speed. This led to one participant being uncertain as to why the density of points would drop dramatically, which was due to the day night cycle. 
    • The clock has since been made more overt. Consideration was given to using day/night colour schemes to exaggerate the point, but was shelved due to time constraints.
  • Participants tended towards the highest speed setting. In part this was due to wanting to see if trends were noticeable, but also due to a lack of feedback from the filtering controls. The highest speed allowed them to see their changes quickest.
    • The speeds have been adjusted, with the much higher top speed to help see those macro level trends
    • Feedback is still an issue.
  • One participant reached the end of the data and had to refresh the page.
    • This has since been fixed so a refresh is no longer necessary. 
  • Participants generally had no issue accessing and using the advanced/filtering controls
  • The use of scientific names was confusing, and participants quickly looked for a way to switch to common names.
    • Common names are now the default
  • There was some confusion as the context of the visualisation, as the legend contained global information such as a complete taxonomy and links to general resources while only showing a New Zealand map.
    • The decision was made to focus only on the New Zealand context. Non-New Zealand bird orders have been removed and all data now points to NZbirdsonline
  • Participants wanted to be able to stay on the page while also viewing information about the birds.
  • Participants were able to filter birds without issue, but wanted more ways to sort them such as alphabetical by scientific vs common name, number of species, frequency in data etc. 
  • There was uncertainty about what specifically the colour shuffle button did, but was obvious when they clicked it. This function was preferred over selecting their own unique colours for the legend. There was some uncertainty as to how to reset the colours to a single one.
    • Need to make the “all orders” more obvious
  • Participants wanted more information in the ‘about’ section, including mission statement and information about the data source
    • This has since been added

Overall, participants enjoyed the visualisation. The layout was well received and the controls were generally intuitive. The initial impact of the birds appearing on the screen was one of the key goals for the project and seems to have been achieved. The biggest surprise was the participants want for additional information, as the initial design was intentionally minimal in order to avoid overwhelming the user. However, this didn’t seem to be a concern as the participants were able to control how much data they were being presented with at any given time. The overall design also shifted from a proof-of-concept for a world map to committing to only New Zealand, which while allowing for more specific data about the avian population, requires additional context for those not from the region. 

Reflections

One of the primary goals for the project was to give people a moment of awe as the visualisation began to play, and in that it was a success. Even without knowing the nature of the data the visual itself proved to be mesmerising. When digging deeper, both the facets of the individual points and flow of the controls are intuitive enough to require minimal explanation. The project also provided valuable experience working with D3, and allowed for a significant mass of data to be well put together. With the addition of tooltips and links to resources this is a fascinating exploration of all the birds that New Zealand has to offer.

Although everything worked as intended when building the New Zealand portion of the project, it didn’t scale successfully. When including the Australian birds, which increased the amount of data sixfold, performance took a major hit. There are several ways around this problem, such as pre-rendering the layers that display or transforming the entire project into a pre-rendered animation, it was clear that the original vision would not work as intended. Thankfully the UX testing demonstrated that a narrower focus on just New Zealand would be a viable project worth pursuing.  

That same UX testing showed that there is plenty of room for the project to grow in the future. Specifically, that both the interactivity and the data density of the project could be increased. For the former, this would involve building the project on a map that could be zoomed/panned, increasing the amount of filtering options, and creating additional modules to display information. As for the latter, it would involve the collection of other data sources to display the information on the visualisation itself, such as via an API, rather than linking out to other websites. There’s also a litany of smaller features that would benefit from additional testing, such as the speed of the animations and the information architecture of the tooltips.