Skip to content

Automatic case generation from open European data #170

Description

@HugoFara

FARSITE and FlamMap can offer a usable workflow because LANDFIRE gives the US a harmonised national fuel-model raster. Europe has no LANDFIRE, which is why users hit the landscape-file wall (#167, #169).

What is missing is one entry point:

ff.new_case(bbox=(...), date="2023-08-10T14:00Z")

Bounding box and date in, runnable case out, pulling Copernicus DEM plus CORINE or ESA CCI land cover plus ERA5 wind — all free and API-accessible across Europe. Mostly Python glue over existing pieces: no C++, no conflict with the session refactor, and it kills #167 as a side effect.

What already exists in the repository

  • tools/preprocessing/extract_from_eu_land_cover.py, satImage2fuel.py, learnFuelTifPng.py, tifToPngFuel.py, lidar2fuel.py — several independent attacks on the land-cover-to-fuel problem.
  • genForeFireCase.py — the NetCDF writer, currently deleted; see genForeFireCase.py is documented in four places but is not in the repository #167.
  • FUELCOVER.md — 88 lines cataloguing ESA CCI (11 classes), CORINE CLC and S2GLC, each with codes, definitions and colours.

A correction that changes the estimate

FUELCOVER.md is often described as containing the land-cover-to-fuel crosswalk. It does not. Its ESA CCI table has a "Corine Land Cover" column that is empty in all 11 rows, and nothing in the file mentions ForeFire fuel indices, fuels.csv, or any propagation model. The mapping from land-cover class to fuel index does not exist there or anywhere else in the repository.

So the expensive expert-judgement step is ahead of this work, not behind it — the main risk to scope, better known now than discovered midway. It is also the most valuable part to publish: a defensible European land-cover-to-fuel crosswalk is a citable artefact on its own.

Suggested decomposition

  1. Fix genForeFireCase.py (genForeFireCase.py is documented in four places but is not in the repository #167) — everything here writes through it.
  2. Build the crosswalk, CORINE first: pan-European, stable codes, 100 m.
  3. A single-source fetcher — Copernicus DEM by bounding box — with caching.
  4. Wind from ERA5, which forces the time dimension and so needs the 4-D bug in genForeFireCase.py is documented in four places but is not in the repository #167 fixed.
  5. Assemble into new_case(); validate with A landscape validation command #169.

Steps 1 and 2 are worth doing even if the rest is never built.


Drafted by Claude Opus 5 from a codebase audit. Reviewed by a maintainer before filing.

EDIT: rewrote for human readability.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions