Making land use metrics user friendly
With a little help from friends, intern Cameron Reaves developed a user-friendly dashboard for SkyTruth’s Colorado River Basin work.
During an all-staff meeting in February, I listened to SkyTruth’s Technical Program Director Ry Covington present his work on mapping vegetation in the Colorado River Basin. It was fascinating stuff; he had processed satellite imagery for all of the subwatersheds in the Colorado River regions and calculated spectral indices to quantify changes in vegetation over time. You can read more about the specifics on the indices that he computed here and a nice summary of the project here. This data is incredibly useful, hopefully allowing watershed managers and river restoration specialists to connect vegetation trends over the last 35 years with different management practices.
I definitely wanted to be involved. So, after the meeting I reached out to Ry and asked if I could help him build the visualization dashboard for this data. I had previous experience in Shiny, an R based web application package from a course I took at Harvard College. I loved this course and went on to help teach it briefly! It was my first foray into data science and tidyverse, an ecosystem of tools for the R programming language.
This data is difficult to visualize because it is geospatial, temporal, and large. The final dataset will have over 8,000 subwatersheds, each with seven indices, compiling 35 years of data, for a total of almost two million unique data points. Thus, presenting this in a way that is both informative and user-friendly is a challenge. To start out, we decided to build a working product to test the technology and find out what works and what doesn’t. First, I had to decide between using D3js, a JavaScript library for manipulating documents based on data, and Shiny. D3js is more complicated but more visually impressive and quite expressive, while Shiny allows for very quick prototyping and has lots of documentation. Examples exist of both being deployed brilliantly (D3js and Shiny). But because of my previous experience with Shiny, I decided to try it first.
I spent the first week primarily refamiliarizing myself with Shiny, but eventually ran into some roadblocks. Shiny integrates well with Leaflet, an open-source JavaScript library for interactive maps, allowing the user to click on the map and change what is displayed. Therefore, I could design the dashboard to allow a user to click on a specific subwatershed and display all relevant data associated with that subwatershed instantaneously. This would pare down the layout of the application, making it simpler and more intuitive. But I didn’t know how to properly code this interaction. Searching across the web, I found that it was possible, but I struggled to implement it on my own. Thankfully, SkyTruth President John Amos introduced me to Gabriel Watson, a Data Scientist at the conservation tech nonprofit The Commons. Gabriel provided a lot of support, which helped me implement this click-based feature. I would have taken much longer to figure out its quirks without him, so I am very grateful.

This map displays the mean Normalized Difference Vegetation Index which is used to quantify vegetation greenness and is useful in understanding vegetation density and assessing changes in plant health.
With this help from Gabriel I was able to build an application that opens on a home screen, where users can learn about the Colorado River Basin project, the different metrics, and how to interact with the map. Users can travel to the map by clicking on the sidebar panel on the left side of the screen. When the map loads, users can select a metric to examine. When they click on each metric, a map appears that displays the mean of the metric over the entire time series for each subwatershed. This map highlights the distribution of the values of each metric spatially across all subwatersheds. Users can immediately perceive whether there are spatial trends within regions of subwatersheds or one particular subwatershed stands out among a group. Also, users can visualize the entire time series for that subwatershed, alongside precipitation and temperature data by clicking on it. This feature is helpful because there may be changes in vegetation during specific time periods and users can then compare how management strategies and climatic variables affected vegetation.

When a subwatershed is clicked, the map zooms in and displays different datasets specific to that subwatershed.
Hopefully, SkyTruth can take this minimum viable product (MVP) that I helped build to the next level. The goal of this project is to create an application tailored to the needs and preferences of watershed managers and river restoration specialists. Perhaps SkyTruth can integrate other useful data to complement the metrics currently available. Other design features could improve accessibility and loading speeds. For now, I am thankful that I’ve been able to work with Ry on this awesome project. This experience has definitely helped me develop my teamwork skills and technical skills. As I graduate in May, I am looking forward to transitioning into another position at a community-scale renewable energy development company. I believe that the time spent as an intern will prepare me for this opportunity and the next. But I will always look fondly on the relationships I have made at SkyTruth and am grateful for joining the team!