Overview
fireR provides convenient access to USGS fire datasets and EPA/CEC ecoregion boundaries:
-
get_mtbs()/read_mtbs()for MTBS (Monitoring Trends in Burn Severity) wildfire perimeter data -
get_sefire()for SE FireMap Annual Burn Severity Mosaics -
get_nal1eco(),get_nal2eco(),get_nal3eco()for CEC North America ecoregion boundaries -
get_usl3eco(),get_usl4eco()for US EPA ecoregion boundaries
MTBS fire perimeters
All fires
With output = "sf", read_mtbs() returns an
sf object containing every fire perimeter
in the MTBS composite dataset — all years, all states.
fires <- read_mtbs(output = "sf")
fires
#> Simple feature collection with 31,386 features and 22 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: -178.3 ymin: 17.9 xmax: -65.3 ymax: 71.4
#> CRS: NAD83 / Conus Albers (EPSG:5070)Plot the burn area acreage to get a quick sense of the data:
plot(fires["BurnBndAc"], main = "MTBS Fire Perimeters — All Years")Filtering by year
Year range
Use R’s : operator to keep all fires within a contiguous
span of years:
Quickly visualise where the major fires of the last decade fell:
library(sf)
plot(st_geometry(fires_recent), col = "#E25822AA", border = NA,
main = "MTBS Fire Perimeters 2018–2023")Output formats
terra::SpatVector
Set output = "vect" (or "terra") to receive
a terra::SpatVector instead of an sf object —
handy when the rest of your workflow uses terra:
Attribute table only
Set geometry = FALSE to drop geometry and get a plain
data.frame. Useful when you only need the metadata (fire
name, year, acreage, etc.):
tbl <- read_mtbs(geometry = FALSE)
head(tbl[, c("Incid_Name", "Ig_Date", "BurnBndAc", "Incid_Type")])
#> Incid_Name Ig_Date BurnBndAc Incid_Type
#> 1 LOWDEN FIRE 1984-07-01 4537.35 Wildfire
#> 2 EUREKA FIRE 1984-08-15 11202.06 Wildfire
#> ...Caching downloads
The MTBS ZIP archive is ~100 MB. Download it once with
get_mtbs(), then read from disk with
read_mtbs() on every subsequent call.
Default cache directory
Pass cache = TRUE to read_mtbs() to look
for the ZIP in tools::R_user_dir("fireR", "cache") — a
platform-appropriate user directory that persists between R
sessions:
# Download once to the user cache directory
get_mtbs(directory = tools::R_user_dir("fireR", "cache"))
# Read from cache on every subsequent call
fires <- read_mtbs(cache = TRUE)Custom cache directory
Supply a directory path to both functions to control where the file is stored:
Force a fresh download
If the USGS releases an updated dataset, use
overwrite = TRUE on get_mtbs() to bypass the
cache and re-download:
get_mtbs(directory = tools::R_user_dir("fireR", "cache"), overwrite = TRUE)
fires <- read_mtbs(cache = TRUE)Quiet mode
Progress messages are printed by default. Suppress them with
verbose = FALSE:
fires <- read_mtbs(years = 2022, verbose = FALSE)SE FireMap mosaics
get_sefire() downloads Annual Burn Severity Mosaic ZIP
archives for the southeastern United States (2000–2022). Pass a single
year, a range, or a vector of specific years:
# Single year
zip_path <- get_sefire(2020)
# Contiguous range
zip_paths <- get_sefire(2015:2020, directory = "data/sefire")
# Specific years only
zip_paths <- get_sefire(c(2000, 2010, 2020))Ecoregion boundaries
North America (CEC Levels 1–3)
The Commission for Environmental Cooperation (CEC) ecoregion framework divides North America into hierarchical ecological units.
# Level 1 — broadest continental divisions
na_l1 <- get_nal1eco()
# Level 2 — finer continental subdivisions
na_l2 <- get_nal2eco()
# Level 3 — finest continental scale (= US EPA Level III)
na_l3 <- get_nal3eco()
plot(na_l1["NA_L1NAME"], main = "North America Level 1 Ecoregions")US EPA (Levels 3–4)
US EPA ecoregions are available at Levels 3 and 4, with an option to include state boundaries in the polygons.
# Level 3 — without state boundaries (default)
us_l3 <- get_usl3eco()
# Level 3 — with state boundaries dissolved in
us_l3_states <- get_usl3eco(state = TRUE)
# Level 4 — finest US subdivisions
us_l4 <- get_usl4eco()
us_l4_states <- get_usl4eco(state = TRUE)All ecoregion functions accept output = "vect" for a
terra::SpatVector and a cache argument to
persist downloads across sessions:
us_l3 <- get_usl3eco(output = "vect", cache = TRUE)Working with the data
Once you have an sf object, the full sf
and dplyr ecosystem is available to you.
Key MTBS columns
| Column | Description |
|---|---|
Incid_Name |
Name of the fire event |
Ig_Date |
Ignition date (YYYY-MM-DD) |
BurnBndAc |
Burned area in acres |
Incid_Type |
Incident type (Wildfire, Prescribed Fire, etc.) |
irwinID |
Unique IRWIN identifier |
geometry |
Fire perimeter polygon(s) |
Example: area burned and fires per year
fires_all |>
st_drop_geometry() |>
mutate(year = as.integer(substr(Ig_Date, 1, 4))) |>
group_by(year) |>
summarize(area_burned = sum(BurnBndAc)) |>
ggplot(aes(year, area_burned)) +
geom_col(fill = "#8B1A1A") +
labs(title = "Area Burned by Year",
x = "Year",
y = "Area Burned (Acres)") +
theme_classic()
fires_all |>
st_drop_geometry() |>
mutate(year = as.integer(substr(Ig_Date, 1, 4))) |>
count(year) |>
ggplot(aes(year, n)) +
geom_col(fill = "#8B1A1A") +
labs(title = "Number of Fires by Year",
x = "Year",
y = "Number of Fires") +
theme_classic()About MTBS
The Monitoring Trends in Burn Severity programme is a joint USGS / USFS initiative that maps the location, extent, and burn severity of all large wildfires (>1 000 acres in the western US; >500 acres in the eastern US) across the conterminous USA, Alaska, Hawaii, and Puerto Rico from 1984 to the present.
More information: https://www.mtbs.gov/