FIRMS — introduction#
NASA FIRMS (Fire Information for Resource Management System) distributes active-fire / thermal-anomaly detections from the MODIS (Terra/Aqua, C6.1), VIIRS (Suomi-NPP / NOAA-20 / NOAA-21), geostationary GOES (ABI), and Landsat (8/9) instruments. Each detection is a single fire pixel — a point with a location, an acquisition time, a brightness temperature, a detection confidence, and a fire-radiative-power (FRP) estimate. FIRMS serves both a near-real-time stream (detections within hours of overpass) and a standard-quality archive going back to the start of each mission.
This page orients the earthlens FIRMS backend. For the hands-on
download walkthrough see Usage; for credentials see
Authentication; the rendered API is the
Reference page.
What earthlens returns#
A FIRMS detection is an inherently vector datum — a geolocated point,
not a gridded cell — so the backend returns a pyramids
FeatureCollection (a geopandas.GeoDataFrame, CRS EPSG:4326), one
row per fire pixel:
| Column | Meaning |
|---|---|
latitude / longitude |
detection centroid (WGS84) |
acq_datetime |
acquisition timestamp (tz-aware UTC) |
sensor |
the requested FIRMS sensor code |
satellite |
reporting platform (Terra, Aqua, N, …) |
confidence |
raw confidence as a string — "85" (MODIS) or l/n/h (VIIRS); use confidence_pct for numeric work |
confidence_pct |
normalised 0-100 confidence (categorical tokens → 25/60/90; GOES passes its provider value through) |
brightness_k |
brightness temperature in kelvin |
frp |
fire radiative power (MW) |
daynight |
D (day) or N (night) overpass |
geometry |
Point(longitude, latitude) |
This makes FIRMS a vector backend (FIRMS.OUTPUT_KIND == "vector").
Because a detection table is not a gridded array, the EarthLens facade
rejects an aggregate= argument for this backend — the raster
time-window reducer has no meaning on point detections. Post-process the
returned GeoDataFrame directly instead (count per day, sum FRP, rasterise
with pyramids, …).
Why it matters here#
The raster backends (ERA5 via CDS, MODIS/VIIRS imagery and the burned-area products via Google Earth Engine) give you gridded fields with full spatial coverage. FIRMS is the complementary event feed: sparse but direct per-pixel fire detections, refreshed within hours. A common workflow pairs FIRMS detections with a GEE burned-area product (MCD64A1, FireCCI) or a CDS meteorology field over the same bbox and window to study fire onset, spread, and weather drivers.
Things to know up front#
- Detections, not perimeters. FIRMS reports where a sensor saw a
thermal anomaly at overpass time — not the final fire perimeter or the
total area burned. (FIRMS'
data_availabilityindex also listsBA_MODIS/BA_VIIRS, but those are burned-area raster products, not area-CSV active-fire sources — they return nothing through this backend and are deliberately not catalogued. For gridded burned-area rasters (MCD64A1, FireCCI) use the Google Earth Engine backend.) - A free
MAP_KEYis required. Every request carries aMAP_KEYas a URL path segment. Request a free key at https://firms.modaps.eosdis.nasa.gov/api/map_key/; see Authentication. - NRT vs archive.
*_NRTsensors cover only roughly the last two months; older data lives in the*_SPstandard-quality archive sensors. A request for an old window against an*_NRTsensor returns an empty result, so the backend logs a warning naming the*_SPvariant — it does not silently swap the sensor. - Confidence differs by family. MODIS reports a numeric
0-100confidence; VIIRS reports a categoricall/n/h; LANDSAT reportsl/m/h; GOES reports a provider-defined numeric value. The backend keeps the raw value and adds a uniformconfidence_pct(categorical tokens map to 25/60/90) so onemin_confidence=threshold works across MODIS / VIIRS / LANDSAT. GOES confidence is not a 0-100 percent, somin_confidenceis skipped for GOES (with a warning) rather than silently dropping its detections. - A 5-day-per-request cap and a transaction quota. FIRMS serves at most 5 days per request and one sensor per request, and allows ~5000 transactions per rolling 10 minutes. The backend chunks longer windows transparently and throttles against the quota with a back-off — both are invisible to the caller. See Usage.