Sentinel-2 RGB change-detection workflow for an open-pit mining site in Zambia. Implements raster preparation, RGB Change Vector Analysis, thresholding, polygon extraction, artifact filtering, GeoPackage storage, visualization, and technical interpretation.
# Sentinel-2 RGB-CVA Mining Change Detection
This repository contains a Python geospatial workflow for detecting and interpreting surface change at an open-pit mining site in Zambia using two dates of Sentinel-2 visible-band imagery.
The workflow prepares Sentinel-2 Bands 2, 3, and 4, applies RGB Change Vector Analysis (RGB-CVA), generates continuous and binary change rasters, converts detected changes into vector polygons, filters a diagonal image artifact, stores results in a GeoPackage database, and creates figures for technical interpretation.
## Project objective
The objective is to demonstrate an end-to-end geospatial data science workflow for mining-related change detection using simple, reproducible, and interpretable methods.
The analysis focuses on detecting spectral change between:
- **Before image:** 2023-08-12
- **After image:** 2023-09-02
- **Input bands:** Sentinel-2 B2, B3, and B4
- **Main method:** RGB Change Vector Analysis
- **Selected binary threshold:** P98, representing the strongest 2% of RGB-CVA change-intensity pixels
The outputs should be interpreted as **detected spectral change**, not as confirmed mining expansion or confirmed land-use change.
## Installation
Create a Python environment and install the required packages.
Using `conda` is recommended for geospatial dependencies:
```bash
conda create -n solafune-change python=3.11
conda activate solafune-change
conda install -c conda-forge geopandas rasterio rasterstats shapely fiona pyproj scikit-image matplotlib seaborn pandas numpy tabulate jupyter
```
Alternatively, use `pip`:
```bash
pip install geopandas rasterio rasterstats shapely fiona pyproj scikit-image matplotlib seaborn pandas numpy tabulate jupyter
```
## Usage
1. Clone this repository.
2. Place the provided input data under `inputs/data/`.
3. Place the AOI file at `inputs/aoi.geojson`.
4. Open the notebook:
```bash
jupyter notebook sentinel2_rgb_cva_mining_change_detection.ipynb
```
### Repository structure …