Google Earth Engine Tutorial: Estimate Soil Moisture with Sentinel-1 SAR
Credit: Youtube Channel “Terra Spatial, Guide on estimating soil moisture content using Sentinel-1 SAR imagery for agricultural and hydrological applications.”
You can see all the tutorials from here: Techgeo Academy.
Google Earth Engine (GEE) is a powerful platform for geospatial analysis, allowing users to process large-scale satellite data efficiently. Sentinel-1 Synthetic Aperture Radar (SAR) data, with its all-weather, day-and-night imaging capabilities, is particularly useful for soil moisture estimation. This tutorial provides a step-by-step guide to using GEE for analyzing Sentinel-1 data to estimate soil moisture.
1. Accessing Sentinel-1 Data in GEE
First, load the Sentinel-1 dataset using the GEE API. Sentinel-1 provides dual-polarization data (VV and VH) in the Copernicus Open Access Hub. In the GEE code editor, use the following code to filter and select the relevant data:
var dataset = ee.ImageCollection("COPERNICUS/S1_GRD")
.filterDate('2023-01-01', '2023-12-31')
.filter(ee.Filter.eq('instrumentMode', 'IW'))
.select(['VV', 'VH']);2. Preprocessing Sentinel-1 Data
Before analyzing, ensure the data is calibrated and processed for consistency. Apply a terrain correction and convert backscatter values to decibels (dB) for better interpretation:
var preprocessed = dataset.map(function(image) {
return image.select(['VV', 'VH'])
.multiply(10)
.log10()
.rename(['VV_dB', 'VH_dB']);
});3. Calculating Soil Moisture Index
Soil moisture can be estimated using a regression model based on backscatter intensity. The Soil Moisture Index (SMI) is often derived using the formula:
SMI = a * VV + b * VH + c,
where a, b, and c are coefficients calibrated with ground-truth data. Replace these coefficients based on your study area:
var soilMoisture = preprocessed.select('VV_dB')
.multiply(0.1)
.add(preprocessed.select('VH_dB').multiply(-0.05))
.add(5);4. Visualizing and Exporting Results
Use GEEβs visualization tools to display soil moisture data. Add a map to the GEE interface and export the results as a GeoTIFF or CSV for further analysis:
Map.addLayer(soilMoisture, {min: 0, max: 50}, 'Soil Moisture');
Export.image.toDrive({
image: soilMoisture,
description: 'soil_moisture_export',
folder: 'GEE_Exports',
fileNamePrefix: 'soil_moisture',
region: geometry,
scale: 10,
maxPixels: 1e10
});5. Validating with Ground Data
Compare your GEE soil moisture estimates with field measurements. Upload a ground data CSV to GEE and perform statistical validation using the meanAbsoluteError or rSquared functions.
FAQ
What is the accuracy of soil moisture estimation using Sentinel-1 SAR?
Accuracy depends on factors like vegetation cover, terrain, and calibration coefficients. Ground-truth data is essential for improving precision.
Can Sentinel-1 SAR be used in dense vegetation areas?
Sentinel-1 data is less effective in dense vegetation due to signal attenuation. Use higher-frequency sensors like Sentinel-1 for shallow root zones or integrate with optical data.
How to handle clouds in my analysis?
Sentinel-1 SAR data is not affected by clouds, making it ideal for consistent soil moisture monitoring in all weather conditions.
What is the best time of year to collect Sentinel-1 data for soil moisture?
Data is most useful during periods of low vegetation growth (e.g., winter or dry seasons) when the radar signal penetrates the soil surface more effectively.
How do I select the correct calibration coefficients?
Coefficients depend on the study area and sensor characteristics. Calibrate using local soil moisture measurements or literature-specific values for your region.







