The Shrinking Great Salt Lake: A Visual Time-lapse

By Raj Saha, PhD

In this project we use Google Earth Timelapse images of the Great Salt Lake between 1984 and 2022 to create a time-lapse visualization of the lake's changing boundaries and to then compute the area of lake over time. We primarily use python's OpenCV library to extract the lake's boundaries from the images and then compute the area of the lake.

The scrollable animation concept is inspired by visualizations in the The New York Times.

Final results first ... (give it a second for the frames to load ...)

Process

Let's examine the process involved in deducing the lake's boundaries from satellite imagery.

Google Earth Timelapse Image

An individual image frame from Google Earth Timelapse

Channel selection

The original image has Red, Green and Blue Channels. We need to select the channel that has the highest contrast between the lake and the surrounding land. We do this sort of manually given that we only have 3 channels to choose from and no near infrared. We find that the blue channel has the highest contrast between the lake and the surrounding land. So we extract the blue channel from the original image and carry out the image analysis on this channel. At the end, we apply the boundaries back to the original images.

Cropped Blue Channel Image

Left: Extracted blue channel image, with a mask applied that corresponds to the lake's boundaries in 1984. Right: The same image with thresholding applied to reveal exposed land (within the bright green polygons).

Baseline year and lake boundaries

1984 being the first year of our images, we select it as our baseline year. Then we apply thresholding to the blue channel to get the lake's boundaries. Again, this step is done manually. If we have access to more information such as a digital elevation models, we can use that to automatically determine the lake's boundaries.

Once we have determined a suitable threshold, then we create a mask for the lake's boundaries in 1985. We then use this mask to extract the lake's boundaries from the original set of images.

Computing areas

Applying the mask to the images now gives us the lake's maximum extent for each year. Within the mask, we then find the lake boundaries in each year. In practice it may be easier to find the exposed land boundaries, depending on the contrast in the images. Subtracting the total area of the exposed land from the total area of the lake, we can get the area of the lake for each year.

Applying boundaries to images

To show explicitly how the boundaries have changed over time, we apply the boundaries from our blue channel onto the original images.

Applying exposed land boundaries to the images

Exposed land polygons applied to the original image. Bright green polygons enclose exposed land.

Trend

We can now plot the change in area of the lake over time.

The quasi-periodic fluctuations in the lake's are are due to variations in precipitation.

Here is a great article on how climate change has altered the Great Salt Lake.

Code Base

All work demo'd here, front and back end, was done by me.

You can find the code base for this project here.