Skip to content

abbi776/benchmarking-sentinel1-sar-features

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌳 Benchmarking Sentinel-1 SAR Features for Woody Plant Encroachment Mapping

Open-source framework for benchmarking Sentinel-1 SAR features and applying them to woody plant encroachment (WPE) mapping in floodplain wetlands using multi-seasonal SAR backscatter, polarization indices, texture features, and machine learning (RF, SVM, XGBoost).

This repository contains all the scripts, environment requirements, and instructions needed to reproduce the analysis, from preprocessing Sentinel-1 data in Google Earth Engine to generating interpretable wall-to-wall classification maps.


🌱 Key Features

  • Sentinel-1 Preprocessing (GEE): Standardized workflow including border-noise masking, Refined Lee speckle filtering, and Ellipsoidal Radiometric Terrain Correction (RTC).
  • Unified Feature Stack: Integration of multi-seasonal Intensity (VV/VH), Polarization Indices, and GLCM Texture metrics.
  • Robust Validation: Implementation of Leave-One-Region-Out (LORO) cross-validation to ensure spatial independence.
  • Model Benchmarking: Systematic comparison of Random Forest (RF), Support Vector Machine (SVM), and Extreme Gradient Boosting (XGBoost).
  • Explainable AI: Global feature importance analysis using SHAP (TreeExplainer).
  • Wall-to-Wall Mapping: Scalable pixel-wise classification for floodplain monitoring (2025).

📂 Repository Structure

benchmarking-sentinel1-sar-features/
│
├── gee/                         # GEE SAR preprocessing + feature scripts
│   ├── 00_utils_sar.js
│   ├── 01_border_noise.js
│   ├── 02_speckle_filter.js
│   ├── 03_rtc.js
│   ├── 04_feature_extraction.js
│   └── main_workflow.js
│
├── scripts/                    # Python analysis pipeline 
│   ├── 00_prepare_feature_rasters.py
│   ├── 01_extract_training_features.py
│   ├── 02_model_ablation_experiments.py
│   ├── 03_feature_importance_shap.py
│   ├── 04_train_final_models_for_mapping.py
│   ├── 05_build_yearly_stacks.py
│   └── 06_apply_models_to_yearly_stacks.py
│
├── requirements.txt
├── LICENSE
├── .gitignore
└── README.md

⚙️ Installation

git clone https://github.com/abbi776/benchmarking-sentinel1-sar-features.git
cd benchmarking-sentinel1-sar-features

python -m venv venv
source venv/bin/activate        # Linux/Mac
venv\Scripts\activate           # Windows

pip install -r requirements.txt

🚀 Pipeline Steps

1️⃣ Sentinel-1 preprocessing (Google Earth Engine)

Run scripts inside /gee in order:

  • Utilities
  • Border-noise masking
  • Refined Lee speckle filter
  • Ellipsoidal RTC
  • SAR indices + GLCM textures
  • Export seasonal mosaics

Output: seasonal multi-band SAR feature rasters.

S1_WPE_FEATURES_{SEASON}_{YEAR}.tif

2️⃣ Prepare feature rasters

python scripts/00_prepare_feature_rasters.py

Mosaics tiles, clips wetlands, fixes band names.

3️⃣ Extract polygon training features

python scripts/01_extract_training_features.py

Produces LORO-ready tables.

s1_features_all_LORO.xlsx

4️⃣ Feature ablation & model benchmarking

python scripts/02_model_ablation_experiments.py

Benchmarks:

  • VV/VH only

  • Indices only

  • Textures only

  • Combined sets

  • Full stack

Across RF / SVM / XGB.

5️⃣ SHAP feature importance

python scripts/03_feature_importance_shap.py

Outputs ranking of most important SAR features.

6️⃣ Train final mapping models

python scripts/04_train_final_models_for_mapping.py

Saves:

  • trained RF / SVM / XGB models

  • JSON feature schema (band order safety)

7️⃣ Build yearly stacks

python scripts/05_build_yearly_stacks.py

Creates stack for:

  • 2025
P1ANAE_YEARLY_2025_STACK.tif

8️⃣ Wall-to-wall mapping

python scripts/06_apply_models_to_yearly_stacks.py

📁 Data & Results Organization

Since raw rasters and outputs are large, they are not stored in this repo.
Organize your local project like this:

data/
  ├── s1_features/
  ├── wetlands/
  ├── labels/
  └── yearly_stacks/

results/
  ├── models/
  ├── shap/
  ├── predictions/
  └── figures/

⚠️ Note: .gitignore excludes these outputs so they don’t get pushed to GitHub.


📊 Outputs

  • Yearly prediction maps (.tif)

  • Feature tables (Excel)

  • SHAP importance figures

  • Model accuracy summaries

  • Wall-to-wall maps


🙏 Attribution & Credits

Portions of SAR preprocessing draw on concepts from:

Sentinel-1 SAR Backscatter Analysis Ready Data (ARD) framework by Mullissa et al. (2021). https://doi.org/10.3390/rs13101954
Original repository: https://github.com/adugnag/gee_s1_ard


🧑‍🤝‍🧑 Contributing

Pull requests and suggestions are welcome. Areas that would particularly benefit from contributions include:

  • Expanding the workflow to additional wetlands and floodplain systems
  • Adding new SAR texture and polarization feature formulations
  • Exploring deep learning approaches for classification and feature fusion
  • Evaluating transferability through cross-site benchmarking and replication studies

📜 License

This project is licensed under the MIT License.


📧 Contact

For questions or collaboration:
Abdullah Toqeer
PhD Candidate, Charles Sturt University
Email: toqeerabdullah776@gmail.com

About

Benchmarking Sentinel-1 SAR feature groups (intensity, indices, textures) for floodplain woody vegetation classification, including preprocessing, modeling, evaluation, and SHAP interpretability workflows.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors