Skip to content

Morteza-Khazaei/satsoil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SatSoil: Bare Soil Detection using Landsat 8

Satellite-based bare soil detection algorithms implemented in Google Earth Engine (JavaScript and Python APIs). Extracts bare soil reflectance from Landsat 8 imagery for soil organic carbon mapping and spectral analysis.

Features

  • Dual Algorithm Support: GEOS3 (Demattê et al., 2018) and SatSoil implementations
  • Multiple Interfaces: JavaScript (GEE Code Editor) and Python (Jupyter notebooks)
  • Cloud Processing: Leverages Google Earth Engine for large-scale analysis
  • Validation Tools: Statistical validation and Canonical Correlation Analysis
  • Interactive Visualization: Side-by-side comparison maps
  • Export Capabilities: GeoTIFF outputs to Google Drive

Installation

Prerequisites

Python Setup

# Clone the repository
git clone https://github.com/yourusername/satsoil.git
cd satsoil

# Install dependencies
pip install -r requirements.txt

# Authenticate GEE (first time only)
python -c "import ee; ee.Authenticate()"

JavaScript Setup

No installation required. Access the GEE Code Editor and copy scripts from gee_scripts/.

Usage

JavaScript (GEE Code Editor)

  1. Open Google Earth Engine Code Editor
  2. Copy contents from gee_scripts/satsoil_geos3_comparison.js
  3. Click Run to execute

Python (Jupyter Notebooks)

jupyter notebook notebooks/satsoil_example_usage.ipynb

Available Notebooks

Notebook Description
satsoil_example_usage.ipynb Main tutorial: algorithm comparison, visualization, and export
satsoil_bare_soil_validation_and_verfication.ipynb CRMI threshold validation analysis
cca_satsoil_geos3_graphs.ipynb Canonical Correlation Analysis with LUCAS-2015 data

Repository Structure

satsoil/
├── gee_scripts/          # Google Earth Engine JavaScript implementations
├── notebooks/            # Jupyter notebooks with Python GEE API
├── data/                 # Validation datasets
├── figures/              # Generated visualization outputs
└── requirements.txt      # Python package dependencies

Algorithms

GEOS3 (Geospatial Soil Sensing System)

Based on Demattê et al. (2018):

  • NDVI: -0.25 to 0.25 (vegetation filtering)
  • NBR2: -0.3 to 0.1 (burn scar filtering)
  • VNSIR: ≤ 0.9 (spectral tendency index)

SatSoil

Novel algorithm using:

  • Spectral Band Differences: Progressive increase from blue to SWIR1
  • Slope Constraints: B2 → B3 → B4 → B5 → B6 must be positive
  • CRMI: Crop Residue Moisture Index for senescent vegetation filtering

Data Source: Landsat 8 Collection 2 Level 2 (surface reflectance, 2013-2023)

Citation

If you use SatSoil in your research, please cite:

@article{khazaei2025satsoil,
  title={Satellite Soil Observation (SatSoil): extraction of bare soil reflectance for soil organic carbon mapping on Google Earth Engine},
  author={Khazaei, Morteza and Sorenson, Preston Thomas and Magagi, Ramata and Go{\"i}ta, Kalifa},
  journal={Canadian Journal of Remote Sensing},
  volume={51},
  number={1},
  pages={2445836},
  year={2025},
  publisher={Taylor \& Francis},
  doi={10.1080/07038992.2025.2597003}
}

Author

Morteza Khazaei Ph.D. Student, Applied Geomatics Centre d'applications et de recherches en télédétection (CARTEL) University of Sherbrooke Email: Morteza.Khazaei@usherbrooke.ca

References

Demattê, J. A. M., Fongaro, C. T., Rizzo, R., & Safanelli, J. L. (2018). Geospatial Soil Sensing System (GEOS3): A powerful data mining procedure to retrieve soil spectral reflectance from satellite images. Remote Sensing of Environment, 212, 161-175.

License

This code is provided for research and educational purposes.

About

test

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published