LANDFIRE Fuel Models

Overview

LANDFIRE (Landscape Fire and Resource Management Planning Tools) provides geospatial data for wildland fire management across the United States. This data loader provides fire behavior fuel model (FBFM) classifications at 30m resolution over the contiguous United States (CONUS).

Two fuel model products are available:

  • FBFM13: Anderson 13 fire behavior fuel models (codes 1–13), the classic fuel classification system.
  • FBFM40: Scott & Burgan 40 fuel models (codes 101–204), a more detailed classification.

Both products include non-burnable codes: 91 (urban/developed), 92 (snow/ice), 93 (agriculture), 98 (water), and 99 (barren). Code 0 indicates no fuel data.

The fuel model codes from LANDFIRE map directly to fuel property dictionaries (e.g., fuel bed depth, moisture of extinction, surface-area-to-volume ratios) used in fire spread models such as the Rothermel model.

Reference: LANDFIRE: Landscape Fire and Resource Management Planning Tools. U.S. Department of the Interior, Geological Survey. https://landfire.gov/

EarthSciData.LANDFIREFunction
LANDFIRE(
    domaininfo;
    name,
    product,
    version,
    resolution,
    stream
)

Create a ModelingToolkit System that provides fuel model data from LANDFIRE.

The system exposes a single variable fuel_model (dimensionless) interpolated to the simulation coordinates using nearest-neighbour interpolation (appropriate for categorical data).

Arguments

  • domaininfo: A DomainInfo specifying the spatial and temporal domain.
  • name: System name (default :LANDFIRE).
  • product: LANDFIRE product (default "FBFM13" for Anderson 13 fuel models).
  • version: LANDFIRE version (default "LF2022").
  • resolution: Target resolution in arc-seconds (default 1.0 ≈ 30m).
  • stream: Whether to stream data lazily (default true).

Example

using EarthSciData, EarthSciMLBase, ModelingToolkit, Dates
domain = DomainInfo(
    DateTime(2018, 11, 8), DateTime(2018, 11, 9);
    lonrange = deg2rad(-121.7):deg2rad(0.01):deg2rad(-121.5),
    latrange = deg2rad(39.7):deg2rad(0.01):deg2rad(39.8),
    levrange = 1:1
)
fuel = LANDFIRE(domain)
source

Implementation

Data is downloaded from the LANDFIRE ImageServer REST API as GeoTIFF files. Because this is categorical (integer-valued) data, nearest-neighbour interpolation (BSpline(Constant())) is used for regridding instead of the bilinear interpolation used by other data sources. This preserves the integer fuel model codes.

Variables

using EarthSciData, EarthSciMLBase
using ModelingToolkit, DynamicQuantities, DataFrames
using ModelingToolkit: t
using DynamicQuantities: dimension
using Dates

domain = DomainInfo(
    DateTime(2018, 11, 8), DateTime(2018, 11, 9);
    lonrange = deg2rad(-121.7):deg2rad(0.01):deg2rad(-121.5),
    latrange = deg2rad(39.7):deg2rad(0.01):deg2rad(39.8),
    levrange = 1:1
)

landfire = LANDFIRE(domain; resolution = 10.0)

function table(vars)
    DataFrame(
        :Name => [string(Symbolics.tosymbol(v, escape = false)) for v in vars],
        :Units => [dimension(ModelingToolkit.get_unit(v)) for v in vars],
        :Description => [ModelingToolkit.getdescription(v) for v in vars]
    )
end
table(unknowns(landfire))
1×3 DataFrame
RowNameUnitsDescription
StringDimensio…String
1fuel_modelFire behavior fuel model (Anderson 13)

Parameters

table(parameters(landfire))
2×3 DataFrame
RowNameUnitsDescription
StringDimensio…String
1t_refsReference time
2fuel_model_itpInterpolated fuel_model

Equations

equations(landfire)

\[ \begin{align} \mathtt{fuel\_model}\left( t \right) &= \mathtt{fuel\_model\_itp}\left( t + \mathtt{t\_ref}, \mathtt{lon}, \mathtt{lat} \right) \end{align} \]