Skip to content

Fire Weather Index (WMS)

effis_client.fwi

The official EFFIS Fire Weather Index from its WMS, as numbers, not colours.

EFFIS publishes the FWI chain computed on Météo-France weather on the same MapServer as the perimeters, but at /effis, not /gwis. Requested with FORMAT=image/tiff it returns a float32 GeoTIFF of raw values, which can be sampled at any point.

Verified against the live service (2026-10-19, again 2026-11-02), and not what the EFFIS documentation says:

  • the layers are mf010.<component> (fwi, ffmc, dmc, dc, isi, bui); the ecmwf007.fwi of the EFFIS example answers LayerNotDefined;
  • TIME accepts past days, today and the next two; beyond that the answer is a 200 with a raster that is all zeros -- the absence of data, not a calm day. :func:sample_fwi returns None for it;
  • the sea is zero on valid days too: a point on land reads its own pixel, and a single zero pixel stays a value;
  • errors come back as HTTP 200 with an XML exception report.

Public, no credentials, CC BY 4.0. Sampling needs the raster extra (pip install effis-client[raster]).

fwi_params

fwi_params(day: date, bbox: BBox, *, component: Component = 'fwi', step: float = DEFAULT_STEP) -> dict[str, str]

Query parameters of the WMS GetMap request for one component and day.

bbox is in the usual lon/lat order; WMS 1.3.0 with EPSG:4326 wants latitude first, and the swap happens here.

sample_fwi

sample_fwi(tiff: bytes, points: list[Point]) -> dict[Point, float] | None

The pixel value under each point; None when the raster is all zeros.

Points outside the raster, or on a non-finite pixel, are left out.

check_tiff

check_tiff(content_type: str, body: bytes) -> bytes

Return body if it is a GeoTIFF, else raise :class:EffisError.

fetch_fwi async

fetch_fwi(client: AsyncClient, day: date, points: list[Point], bbox: BBox, *, component: Component = 'fwi', step: float = DEFAULT_STEP, url: str = WMS_URL) -> dict[Point, float] | None

One component of the EFFIS chain for day, sampled at points.

None means EFFIS has no data for that day. Network and HTTP errors propagate; an XML error disguised as a 200 raises :class:EffisError.