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); theecmwf007.fwiof the EFFIS example answersLayerNotDefined; TIMEaccepts 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_fwireturnsNonefor 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.