Skip to content

[Fase 2d] Wildfire: archivio storico FIRMS (2000–oggi) — densità per cella e truth set per backtest/ML #66

Description

@gzileni

Contesto

La prevenzione incendi ha bisogno della storia: dove ha bruciato in passato brucia di nuovo (ricorrenza colturale/dolosa, combustibile che si rigenera). L'archivio FIRMS copre MODIS dal novembre 2000 e VIIRS S-NPP dal gennaio 2012 (NOAA-20 dal 2018), scaricabile per paese/anno in CSV/SHP/JSON (login Earthdata, consegna via email). Per l'Italia sono ~25 anni di detection datate al giorno e geolocalizzate: l'analogo per gli incendi di ciò che e-ITALICA è per le frane.

Vantaggio rispetto ai soli perimetri EFFIS (truth set previsto in #62): gli hotspot datano al giorno/orbita l'innesco (i perimetri EFFIS hanno una sola firedate) e catturano gli incendi piccoli sotto la soglia di mappatura EFFIS. I due dataset si validano a vicenda.

Design

1. Ingest archivio — limen ingest-fire-history (CLI, idempotente)

  • Stesso pattern di limen ingest-events (e-ITALICA da Zenodo): download cacheato in LIMEN_DATA_DIR, override con LIMEN_FIRMS_CSV per file locale / run offline.
  • Nota: il download archivio FIRMS richiede login Earthdata e viene consegnato via email — il comando accetta il CSV già scaricato (documentare il flusso in data/README.md, layout theme-first: data/fires/firms/).
  • Scrittura in fire_hotspots (stessa tabella dell'ingest NRT, stessa PK naturale ⇒ upsert idempotente).

2. Feature statica fire_density per cella (bootstrap PostGIS-only)

  • Estensione di integrations/static_bootstrap/: densità di hotspot storici per cella (conteggio per km² su finestra 2012–oggi VIIRS, opzionalmente kernel density con raggio in YAML), normalizzata per AOI come iffi_density_500.
  • Colonna nuova su cell_static_factors (migrazione nuova). Cella mai toccata dal fuoco ⇒ 0, nessun NULL ambiguo.
  • Variante stagionale opzionale (estate vs resto dell'anno) se il costo resta un'unica passata SQL set-based.

3. Truth set per backtest e ML

  • Vista/estrazione fire_events(cell_id, event_date) derivata dagli hotspot clusterizzati (DBSCAN spaziale + finestra temporale, parametri in YAML) — un "evento incendio" per cella/giorno, deduplicato dai passaggi multipli dello stesso rogo.
  • Alimenta: (a) il backtest wildfire di [Fase 2b] Wildfire: fattori statici (CORINE fuel, WUI), workflow MAF e backtest su perimetri EFFIS #62 (in aggiunta/confronto ai perimetri EFFIS), (b) le etichette del challenger ML incendi (issue dedicata).
  • Attenzione metodologica: FIRMS è presence-only — le pseudo-assenze vanno campionate (stesso approccio case-control già usato per il training frane), mai lette come "qui non è mai bruciato".

Acceptance criteria

  • limen ingest-fire-history idempotente; secondo run = skip (dataset_versions).
  • fire_density popolata su tutte le ~312k celle in una passata set-based; bootstrap-static resta idempotente.
  • Confronto di sanità EFFIS vs FIRMS su 2 stagioni estive (Puglia+Basilicata): % di perimetri EFFIS con almeno un hotspot FIRMS entro 1 km / ±2 giorni, riportata nel report.
  • Clustering eventi deterministico e testato (stessi input ⇒ stessi eventi).
  • make check verde.

Dipendenze e relazioni

Riferimenti

  • Archivio FIRMS: https://firms.modaps.eosdis.nasa.gov/download/ (MODIS 11/2000–oggi, VIIRS 01/2012–oggi)
  • Pattern nel codice: limen ingest-events (e-ITALICA), integrations/static_bootstrap/ (bootstrap set-based), ml/feature_store.py (labels da landslide_events).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-codeIssue pensata per una sessione Claude CodeenhancementNew feature or requestfase-2Modulo wildfire (FWI)multi-hazardEspansione multi-rischio (frana, esondazione, incendio)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions