SoilWatch / soil-erosion-watch

GEE App to explore the state of the world's (degraded) soils
MIT License
56 stars 22 forks source link

Soil Erosion Watch

"If there's a RUSLE in your hedgerow, don't be alarmed now"*

RUSLE: Revised Universal Soil Loss Equation, a well established empirical modelling method to estimate annual soil loss.

hedgerow: Line of closely spaced grasses, shrubs or trees, planted and trained to form a barrier or to mark the boundary of an area, or to prevent soil erosion from wind and water.

For the Google Earth Engine JavaScript Code Editor

A Google Earth Engine JavaScript App Source Code to compute the Revised Universal Soil Erosion Equation (RUSLE), for any location in the world. The app is published and can be accessed here. All methods are public and can be imported with the following syntax:

var <method_name> = require('users/soilwatch/soilErosionApp:<script_name>')

Concept

The state of the world's soils and natural landscapes is dire. FAO's last Status of the World's Soil Resources report identified that 33% of the Earth's soils are already degraded and that over 90% could become degraded by 2050. More specifically, Soil erosion on arable or intensively grazed lands are 100-1000 times higher than natural erosion rates. The consequences of soil degradation are many, the main ones being:

The culprits are unsustainable land management practices, a problem reinforced by climate change. Reversing the trend of land degradation requires regreening those degraded surfaces exhibiting bare soil, either in the form of reforestation/afforestation, or regenerative agriculture practices for arable land. Whether it is cropland, grasslands/rangelands or abandoned land, the overarching concept remains the same: the more often a surface is green, the better, and should, if possible, be green year-round. It's a blunt and over-generalized statement, but it remains undeniable that the main erosion-controlling anthropogenic mechanism is to cover the soil with living or dead biomass. Although the predication of specific sustainable land management practices is context-specific, there is gaping hole in terms of global baseline information on the state of soil erosion, least of all spatially explicit, field-level information about land degradation and the temporal dynamics of vegetation cover management. Repeat-pass optical satellite imagery can greatly assist in making this baseline assessment, and help target landscape restoration efforts or other initiatives such as carbon offsetting projects, in areas where their impact is greatest.

The idea behind the Soil Erosion Watch App is to provide a tool for land managers and landscape/environment restoration practitioners which enables them to assess the state of erosion in their region of interest, down to the field/plot level! The assumption is that soil that is exposed bare at least once in the year or more are at increased risk of erosion. The App therefore focuses on those areas only, and masks impervious, water and permanently vegetated areas from the analysis. Permanently vegetated areas are not monitored for two main reasons:

It relies on long-standing concept of soil erosion by water, modelled through RUSLE, a concept revised many times but which is well established for more than two decades, with constant improvements through additional research and experiments that confirm its robustness. No flashy machine learning involved here, just good ol' empirical modelling of natural erosion phenomena to calculate the Annual Soil Erosion Rate A.

The technique is powerful, but has typically been applied at catchment or watershed level, with locally-derived datasets. Providing globally applicable soil erosion estimates was futile until recently due to the absence of global soil and environmental covariates necessary to calculate RUSLE. The advent of high resolution repeat-pass earth observation data has enabled the generation of these global datasets, at sufficiently high resolution to model soil erosion globally.

On top of this, new cloud-computing infrastructures paired with global Earth Observation public data catalogs (Google Earth Engine) allows building Apps on top of petabytes of imagery assets, without the need to pre-compute and store processed datasets. This provides additional flexibility in App development, and allows the developer to be more creative and iterate more quickly over concepts.

RUSLE Equation

The original RUSLE equation looks like this:

var A = R * K * LS * C * P

For this App, this equation was adapted following a suggestion from Karydas & Panagos, 2018, whereby the erosion-inducing factors as numerator factors, and the erosion-controlling factors as denominator factors, which structures the equation in a more logical way, with the opposite terms organized on either side of the fraction bar.

It looks like this:

var A = (R * K * LS) / (V * L)

where V = 1 / C and L = 1 / P.

Let's focus on the newly introduced erosion-controlling V (vegetation) and L (landscape) factors. For an explanation on the erosion-inducing factors, and more background information on the equation, this blog post can be consulted.

Vegetation Factor V

var Vm = (10 * (1 – BSf) * FCover_m).exp()
var V = Vm.mean()

Wischmeier & Smith 1978 established from experimental data that the relationship between vegetation cover and soil erosion is exponential. In absence of a good global land use/land cover dataset at the resolution of Sentinel-2 (10m), typically used to estimate the C-factor (or V-factor in this case) of the RUSLE equation, using a vegetation index time series as a proxy of both the intensity and duration of the vegetation cover is not only a good alternative, but probably a better one thanks to the granularity of the time series information. The vegetation cover frequency 10 * (1 – BSf) clamped to the [5,8] range (5: degraded cropland/pasture condition, 8, well-managed grassland condition) is used as replacement to the Land Use/Cover factor, for two main reasons:

For the fraction of green vegetation cover FCover, a temporal approach is adopted whereby a harmonized (equally-spaced temporal aggregation intervals) and smoothened (harmonic regression) time series of monthly composites is used to compute the equation for Vm as many times as there are monthly FCover_m composites available, and the mean of all Vm terms is computed to get V.

The combination of those two factors should model the temporal characteristics of cover vegetation reasonably well.

Landscape Factor L

L = 1 + (Sf_B8 / DNmax).sqrt()

Where Sf_B8 is the result of a convolution using a 3x3 anisotropic edge detection Sobel filter on Sentinel-2’s NIR band (B8). The convolution output is normalized by dividing by the maximum potential reflectance value of the B8 band, which in the case of Sentine-2 L2A on GEE is 10000. It is a doing a good job at identifying linear (boundaries, terraces) and punctual (trees/bushes in field) features, even on 10m imagery.

Features

Layers

This App provides the following layers at 10m resolution (native Sentinel-2 resolution):

Global Charts

Moreover, it provides the following global charts:

Drill-down drawing tool

Another feature of the app is the possibility to draw a geometry on top of the generated layers, and extract temporal information about the target location(s).

The green curve is the NDVI for the chosen year, corresponding to the drawn geometry. The brown dots are the dates where soil was observed bare in that year. Bear in mind that averaging is performed if a rectangle or polygon is used, which may flag certain dates of the year as bare, but may not be true for all pixels contained within the rectangle/polygon.

As many geometries can be drawn and extracted as desired! So go wild.

Select a custom area

You can select a custom area in the world that draws your particular interest, and generate all of the above features for that new area.

Datasets

The App relies on state-of-the-art global opens-source datasets, which deserve to be mentioned for credits:

Other Credits

Other invaluable resources used to piece this App together are many, but find here the main ones:

Disclaimer

Aside from Kenya, the underlying covariates used to calculate RUSLE are not pre-computed, meaning that the processing time may last up to a few minutes in some cases. It is recommended to select sub-administrative areas that are smaller than 10 000 km². Theoretically, larger areas can be computed, but patience is required!

Computing a Soil Annual Loss Rate (A) layer at global scale for 2020 will be considered once community feedback will be received, especially from the scientific side, so that the produced data is as relevant and useful as can be.

Feel free to re-use any part of the code to produce your own app, or add your own functionalities on top.

Footnote

*A few other verses from the same legendary Led Zeppelin's song make me believe environmental restoration was dear to their heart:

If generating data for a custom area of interest through the App takes longer than the duration of Stairway to Heaven (8:02), then you are probably going to have to choose a shorter time period, or a smaller area for aggregation...