This commit is contained in:
Felix Delattre 2026-02-20 13:44:53 +01:00
parent c2908724cf
commit f9da4aef7d
2 changed files with 17 additions and 11 deletions

View file

@ -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}" temp_normalized = s2_output_dir / f"temp_{s2_file.name}"
with rasterio.open(s2_file) as src: with rasterio.open(s2_file) as src:
# S2 L2A: use DN/10000 (Earth Search AWS differs from ESA spec; offset caused many transparent pixels) pb = src.tags().get("PROCESSING_BASELINE", "")
data = src.read().astype("float32") / 10000.0 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 = src.profile.copy()
profile.update({"dtype": "float32", "nodata": 0}) profile.update({"dtype": "float32", "nodata": 0})
with rasterio.open(temp_normalized, "w", **profile) as dst: with rasterio.open(temp_normalized, "w", **profile) as dst:

20
run.py
View file

@ -16,16 +16,16 @@ from calculate_metrics import calculate_all_metrics
def run_pipeline(season, site_position, site_name): 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: try:
# Download steps (skipped - use existing data in data/{site_name}/{season}/raw/) # Download steps (needed for new site/season)
#download_s2(season, site_position, site_name) download_s2(season, site_position, site_name)
# download_s3(season, site_position, site_name) download_s3(season, site_position, site_name)
# download_phenocam(season, site_position, site_name) download_phenocam(season, site_position, site_name)
# download_phenocam_greenness(season, site_position, site_name) download_phenocam_greenness(season, site_position, site_name)
#print(f"Generating NDVI for raw data: {site_name}, {season}") print(f"Generating NDVI for raw data: {site_name}, {season}")
#create_ndvi_timeseries_raw(season, site_position, site_name) create_ndvi_timeseries_raw(season, site_position, site_name)
print(f"Running EFAST fusion for all scenarios: {site_name}, {season}") print(f"Running EFAST fusion for all scenarios: {site_name}, {season}")
run_all_efast_scenarios(season, site_position, site_name) run_all_efast_scenarios(season, site_position, site_name)
@ -48,4 +48,6 @@ def run_pipeline(season, site_position, site_name):
if __name__ == "__main__": 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")