EFAST spatio-temporal fusion with phenocam validation.
| data | ||
| webapp | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .python-version | ||
| calculate_metrics.py | ||
| call_efast.py | ||
| clouds.py | ||
| deploy.sh | ||
| download_phenocam.py | ||
| download_s2.py | ||
| download_s3.py | ||
| generate_indexes.py | ||
| LICENSE | ||
| post_process.py | ||
| README.md | ||
| requirements.txt | ||
| run.py | ||
| satellite-fusion-web.service | ||
Satellite Data Fusion Pipeline
A Python pipeline for downloading, processing, and fusing Sentinel-2 and Sentinel-3 satellite imagery to generate high-resolution NDVI time series.
Features
- Data Download: Downloads Sentinel-2 L2A (via AWS Earth Search) and Sentinel-3 OLCI (via OpenEO/Copernicus)
- Cloud Detection: Identifies cloud-covered images using NDVI analysis
- EFAST Fusion: Combines S2 and S3 data using the EFAST algorithm for enhanced temporal resolution
- NDVI Calculation: Generates Normalized Difference Vegetation Index from raw and fused data
- Web Visualization: Interactive web viewer for exploring NDVI time series and imagery
Installation
pip install -r requirements.txt
pip install git+https://github.com/DHI-GRAS/efast.git
Configuration
Set environment variables for Copernicus Data Space authentication:
CDSE_USER: Copernicus Data Space usernameCDSE_PASSWORD: Copernicus Data Space password
Usage
from run import run_pipeline
run_pipeline(season=2024, site_position=(47.116171, 11.320308), site_name="innsbruck")
The pipeline processes data in stages:
- Download S2/S3 imagery
- Generate NDVI from raw data
- Detect clouds
- Prepare data for fusion
- Run EFAST fusion
- Generate NDVI from fused outputs
Data Structure
data/
{site_name}/
{season}/
raw/
s2/ # Sentinel-2 GeoTIFFs
s3/ # Sentinel-3 GeoTIFFs
ndvi/ # NDVI from raw data
prepared/
s2/ # Prepared S2 data
s3/ # Prepared S3 data
fusion/ # EFAST fusion outputs
ndvi/ # NDVI from prepared/fused data
clouds.json # Cloud detection results
File Formats
Sentinel-2 (raw/s2/): Multi-band GeoTIFF
- Bands: B02 (blue), B03 (green), B04 (red), B8A (nir)
- Metadata:
VIEWING_ZENITH_ANGLEtag (degrees) - Filename:
{YYYYMMDD}_{increment}.geotiff
Sentinel-3 (raw/s3/): Multi-band GeoTIFF
- Bands: SDR_Oa04 (blue), SDR_Oa06 (green), SDR_Oa08 (red), SDR_Oa17 (nir)
- Filename:
{YYYYMMDD}_{increment}.geotiff
Web Viewer
Run a local HTTP server to view the web interface:
cd webapp
python3 -m http.server 8000
Then open http://localhost:8000/webapp in your browser to visualize NDVI time series and compare S2, S3, and fusion outputs.
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.