Soil Organic Carbon (SOC) Estimation Model for Northeast India
Model Description
This is an XGBoost Regressor trained to estimate Soil Organic Carbon (SOC) values (g/kg) across Northeast India.
It uses multi-source remote sensing data (Optical, Radar, Topography, and Climate) representing the year 2022. The model is designed to handle diverse landscapes, including forests, agricultural land, water bodies, and urban areas.
- Region: Northeast India (89.4°E - 97.6°E).
- Time Period: 2022 (Annual Median).
- Input Data: Sentinel-2, Sentinel-1, SRTM Terrain, CHIRPS Rainfall, ERA5 Temperature.
- Training Samples: ~10,000 points (Random stratified sampling).
Intended Use
- Regional Soil Health Monitoring: rapid assessment of SOC without lab tests.
- Carbon Baseline Studies: Establishing 2022 baselines for carbon projects.
- Land Use Analysis: Distinguishing between high-carbon forests and low-carbon degraded lands.
Feature Inputs (16 Columns)
To use this model, your input dataframe must contain these 16 columns in this exact order:
| Category | Features |
|---|---|
| Sentinel-2 (Optical) | S2_B2, S2_B3, S2_B4, S2_B8, S2_B11, S2_NDVI |
| Sentinel-1 (Radar) | S1_VV, S1_VH |
| Terrain | elevation, slope, aspect |
| Climate | precip_annual, temp_mean |
| Soil/Location | soil_texture, latitude, longitude |
How to Use
import xgboost as xgb
from huggingface_hub import hf_hub_download
import pandas as pd
# 1. Download Model
model_path = hf_hub_download(
repo_id="mona0125/soc-estimation-ne-india",
filename="soc_estimation_model_ne_india.json"
)
# 2. Load Model
model = xgb.XGBRegressor()
model.load_model(model_path)
# 3. Predict (Example Data)
# Ensure columns match the Feature Inputs list above!
data = pd.DataFrame({
'S2_B2': [0.03], 'S2_B3': [0.05], 'S2_B4': [0.04], 'S2_B8': [0.25], 'S2_B11': [0.15], 'S2_NDVI': [0.72],
'S1_VV': [-8.5], 'S1_VH': [-14.2],
'elevation': [150], 'slope': [5.5], 'aspect': [120],
'precip_annual': [1800], 'temp_mean': [24.5],
'soil_texture': [2], 'latitude': [26.1], 'longitude': [91.7]
})
prediction = model.predict(data)
print(f"Predicted SOC: {prediction[0]:.2f} g/kg")