Identifying oxbow lakes from satellite data

TL;DR

For the course Geoscripting at Wageningen University & Research, we learned to do process geospatial data using R, Python, bash and Google Earth Engine. In the final week, we had the opportunity to integrate all that knowledge in a single project. Together with my group members1, we created an algorithm that can distinguish oxbow lakes from Sentinel-1 synthetic aperture radar (SAR) imagery.

For the (many) who are not aware what an oxbow lake is; they are crucial freshwater wetland ecosystems that are formed when the neck of a meandering river is breached. Over time the old meander of the river will be disconnected from the main channel through sediment deposition, like depicted below2.

Simplified sketch on formation of oxbow lakes
Simplified sketch on formation of oxbow lakes

When visualized using a time series of satellite imagery, the effect becomes even more pronounced as seen in our study area of western New Guinea

In brief, the following method was used:

Method used to detect oxbow lakes from SAR data
Method used to detect oxbow lakes from SAR data

Which lead to the following results:

  • Interactive map through Leaflet
  • Dynamic map (GIF)
  • Static map

First, was the interactive map of the area where the user can pan and zoom to their desired location. The Leaflet map also allows users to select the year of their choice while also having the option to (de-)select the showing of ‘normal’ or oxbow lakes. Test it yourself with this link!

Screenshot of the interactive map in Leaflet
Screenshot of the interactive map in Leaflet

The second visualization created was a GIF of the entire time series. This would allow users to see if certain lakes grew or shrink during the entire period, however, due to processing limits we only selected a few images which limits the application of this method.

Dynamic map of selected images from 2015-2023
Dynamic map of selected images from 2015-2023

The last method is a static map of all the water features found within the study area. Through a Bash script users were prompted to select a year of their choice which would output an image like seen below. This was my first time creating an inset map through scripting which was a challenge to implement but eventually led to some good-looking results.

Static map of the water features in western New Guinea [2019]
Static map of the water features in western New Guinea [2019]

The past four days were intense but were rewarding. In a short amount of time, we managed to write an algorithm that is reasonably good at identifying oxbow lakes from SAR data. Personally, I improved a lot in my scripting abilities (both R and Python) while also learning how to use Bash.

Feel free to download and re-use the code available on Github!


  1. With Isaura Menezes de Oliveira Guido, Isabeau Verbrugge, Wessel van Leesten & Nikolas Theofanous ↩︎

  2. Image sourced from Internet Geography ↩︎

Joost van Dalen
Joost van Dalen
MSc student

Fascinated with maps and water

Related