From f9da4aef7daa76ebb55560e8d87a5793df664c40 Mon Sep 17 00:00:00 2001 From: Felix Delattre Date: Fri, 20 Feb 2026 13:44:53 +0100 Subject: [PATCH] offset --- call_efast.py | 8 ++++++-- run.py | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/call_efast.py b/call_efast.py index a170a9a..c9ec727 100644 --- a/call_efast.py +++ b/call_efast.py @@ -100,8 +100,12 @@ def prepare_s2(season, site_position, site_name, cleaning_strategy="aggressive", temp_normalized = s2_output_dir / f"temp_{s2_file.name}" with rasterio.open(s2_file) as src: - # S2 L2A: use DN/10000 (Earth Search AWS differs from ESA spec; offset caused many transparent pixels) - data = src.read().astype("float32") / 10000.0 + pb = src.tags().get("PROCESSING_BASELINE", "") + data = src.read().astype("float32") + mask_nodata = data == 0 + data = (data - 1000) / 10000.0 if pb >= "04.00" else data / 10000.0 + data = np.maximum(data, 0) + data[mask_nodata] = 0 profile = src.profile.copy() profile.update({"dtype": "float32", "nodata": 0}) with rasterio.open(temp_normalized, "w", **profile) as dst: diff --git a/run.py b/run.py index 3bd7116..7720ccc 100644 --- a/run.py +++ b/run.py @@ -16,16 +16,16 @@ from calculate_metrics import calculate_all_metrics def run_pipeline(season, site_position, site_name): - """Run pipeline from existing raw data (no downloads).""" + """Run pipeline (downloads + EFAST fusion + post-process + metrics).""" try: - # Download steps (skipped - use existing data in data/{site_name}/{season}/raw/) - #download_s2(season, site_position, site_name) - # download_s3(season, site_position, site_name) - # download_phenocam(season, site_position, site_name) - # download_phenocam_greenness(season, site_position, site_name) + # Download steps (needed for new site/season) + download_s2(season, site_position, site_name) + download_s3(season, site_position, site_name) + download_phenocam(season, site_position, site_name) + download_phenocam_greenness(season, site_position, site_name) - #print(f"Generating NDVI for raw data: {site_name}, {season}") - #create_ndvi_timeseries_raw(season, site_position, site_name) + print(f"Generating NDVI for raw data: {site_name}, {season}") + create_ndvi_timeseries_raw(season, site_position, site_name) print(f"Running EFAST fusion for all scenarios: {site_name}, {season}") run_all_efast_scenarios(season, site_position, site_name) @@ -48,4 +48,6 @@ def run_pipeline(season, site_position, site_name): if __name__ == "__main__": - run_pipeline(2024, (47.116171, 11.320308), "innsbruck") + # forthgr - FORTH Heraklion Greece, Agriculture, 2024 + # sites.geojson: lon=25.0743, lat=35.3045 + run_pipeline(2024, (35.3045, 25.0743), "forthgr")