efast-phenocam-validation/README.md
2026-06-10 15:43:54 +02:00

2.2 KiB

Worldwide PhenoCam EFAST screening and fusion

Screen the global PhenoCam Network for sites where EFAST Sentinel-2 / Sentinel-3 fusion is likely to work: enough PhenoCam gcc_90, seasonal signal, and S2/S3 coverage for a calendar year.

Agent-oriented detail: AGENTS.md.


Quick start

From processing/:

uv sync
uv run python 1-phenocam.py --evaluation-year 2025

Stepped pipeline (resumable)

All steps use --evaluation-year (default 2025) and optional --site. See each script docstring for inputs/outputs under data/.

uv run python 1-phenocam.py --evaluation-year 2025
uv run python 2-phenocam-screening.py --evaluation-year 2025
uv run python 3-sentinel-data.py --evaluation-year 2025
uv run python 4-fusion.py --evaluation-year 2025
uv run python 5-metrics.py --evaluation-year 2025

# single site
uv run python 3-sentinel-data.py --evaluation-year 2025 --site innsbruck
uv run python 4-fusion.py --evaluation-year 2025 --site innsbruck
uv run python 5-metrics.py --evaluation-year 2025 --site innsbruck

Step 3 S3 uses CDSE OpenEO (SENTINEL3_SYN_L2_SYN); S2 uses AWS Earth Search COG range reads (no auth). CDSE credentials live in ../.env at the workspace root (CDSE_USER, CDSE_PASSWORD).


Outputs (under data/)

Artifact Step Role
phenocam/{year}.json 1 Site list + sites_dir pointer
phenocam/{year}/{site}.json, {site}_1day.csv 1 Raw API + GCC CSV
phenocam_screening/{year}.json / .csv 2 PhenoCam + SNR gate results
sentinel_data/{year}/{site}/prepared/s2/ 3 S2 REFL + DIST_CLOUD GeoTIFFs
sentinel_data/{year}/{site}/prepared/s3/ 3 S3 composite GeoTIFFs
fusion/{year}/{site}/ 4 BtI/ItB fused rasters
metrics/{year}/{site}/, metrics/manifest.json 5 Timeseries JSON, covariates, webapp manifest

The 2025 manifest currently lists 739 cameras with archive overlap; most per-site CSV/JSON files are cached under data/phenocam/2025/.


Web viewer

From the workspace root, make serve serves processing/ at http://localhost:8000/index.html. Requires step 5 (data/metrics/manifest.json).