Data

Sources, status, STAC, and downloads

Maps and figures on this site are built from original public datasets (NASA MODIS/VIIRS, CapeNature and TMNP fire records, iNaturalist, GSOD/NCEI, and park boundaries). Processed COGs and tables are published for download via GitHub Releases and STAC.

As-of is the date maps and figures represent (composite, fire snapshot, station day). Last updated is when the published artifact was last refreshed (STAC item datetime or release updated_at).

EMMA Data Sources and Status

Product What you see As-of Last updated Source
Fused EVI Latest greenness + monthly / long-term ΔEVI on park maps (EVI layer group) 2026-09-21 — NASA MODIS/VIIRS
Veld Age (years) Continuous fire-age raster; true ages 2026-09-01 2026-10-16 CapeNature / TMNP fire records; MODIS/VIIRS burned area
Fire History Burn outlines 2026-09-01 2026-10-16 CapeNature / TMNP fire records; MODIS/VIIRS burned area
Invasives Recent iNaturalist records in parks + 10 km buffer Observations from 2020 onward 2026-10-15 iNaturalist
Weather Nearest GSOD station climate 2025-08-24 2026-10-20 GSOD / NCEI

Multi-sensor EVI fill order: VIIRS NOAA-20 → VIIRS S-NPP → Terra → Aqua (first non-NA wins). NA in EVI layers means all available sensors were missing after QA.

Download via GitHub Releases and the STAC catalog below (delivery packages only).

Coverage metrics

Domain and park coverage totals. Denominators use the 500 m domain grid.

  • Domain area — cells in the EMMA domain mask.
  • Parks-union area — domain cells intersecting any park polygon.
  • Valid latest fused EVI — domain cells with non-NA fused EVI on the composite date.
  • Fire-age known / censored — after dropping cells where all fireage bands are NA; censored = never-burned / right-censored.
Metric km²
Domain area 225,181
Parks-union area 16,609
Valid latest fused EVI 225,000
Fire-age known 41,136
Fire-age censored 184,045

EVI composite date: 2026-09-21.

Fire-age known/censored exclude cells where all fireage bands (age, last burn, is_censored) are NA; censored = never-burned / right-censored.

See coverage details for each park

Park area (VIIRS cells intersecting the park)

Park Park Area (km²) Valid EVI km² Fire known km² Fire censored km²
Addo-Elephant National Park 1,603 1,592 224 1,380
Namaqua National Park 1,516 1,515 19 1,497
Tankwa-Karoo National Park 1,503 1,502 81 1,422
Swartberg Nature Reserve Complex 1,474 1,474 1,259 216
Garden Route National Park 1,252 1,214 703 549
Knersvlakte Nature Reserve Complex 987 987 0 987
Cederberg Nature Reserve Complex 898 898 767 131
Anysberg Nature Reserve 860 860 167 694
Hottentots Holland Nature Reserve Complex 579 576 545 35
Limietberg Nature Reserve Complex 555 554 553 2
Gamkaberg Nature Reserve Complex 483 483 339 145
Outeniqua Nature Reserve Complex 473 473 469 5
Grootvadersbos Nature Reserve Complex 423 423 350 72
West Coast National Park 394 388 53 341
De Hoop Nature Reserve Complex 387 385 279 108
Waterval Nature Reserve Complex 355 355 343 12
Vrolijkheid Nature Reserve Complex 352 352 324 28
Table Mountain National Park 324 322 247 77
Richtersveld National Park 308 308 0 307
Grootwinterhoek Nature Reserve 307 307 307 0
Kammanassie Nature Reserve 305 305 297 8
Kogelberg Nature Reserve Complex 302 302 295 8
Agulhas National Park 246 243 185 61
Other 194 194 181 13
Marloth Nature Reserve Complex 186 186 184 1
Walker Bay Nature Reserve Complex 97 94 84 13
Bontebok National Park 44 44 26 19
Goukamma Nature Reserve Complex 38 38 28 10
De Mond Nature Reserve Complex 27 26 9 19
Riverlands Nature Reserve Complex 25 25 22 3
Babilonstoring Nature Reserve Complex 25 25 25 0
Dassen Coastal Complex 25 25 8 17
Geelkrans Nature Reserve Complex 23 23 6 17
Keurbooms River Nature Reserve Complex 14 14 4 11
Rocherpan Nature Reserve Complex 14 14 0 14
Salmonsdam Nature Reserve 13 13 13 0
Driftsands Nature Reserve 9 9 2 7
Bird Island Nature Reserve Complex 8 8 0 8
Dassen Island Nature Reserve 6 6 0 6
Robberg Nature Reserve Complex 5 4 1 4
Islands and Rocks Complex 3 2 0 3
Dyer Island Nature Reserve Complex 2 2 0 2

STAC catalog

Browse the public STAC root and VI collection for latest 16-day composites (EVI COGs by sensor):

Latest VI item id: NA · datetime NA.

GitHub data releases

Release tags are delivery packages (not scientific attribution). Open a tag page for its assets:

Tag Contents
static_data Domain grid, parks, covariates
fireage fireage_current.tif + dated fire-age parquet
vi_modis_terra_raster / vi_modis_aqua_raster / vi_viirs_raster 16-day VI COGs
vi_modis_parquet / vi_viirs_parquet Tabular EVI by pid
burn_modis_raster / burn_viirs_raster Monthly burn COGs
weather_data GSOD parquet + stations
inat_data Invasives GeoPackage
stac / stac-vi STAC JSON

Download pattern: https://github.com/eco-emma/emma_envdata/releases/download/<tag>/<filename>.

Using COGs & STAC

R

library(terra)
library(sf)
# Example: latest fire-age snapshot
r <- rast(paste0(
  "https://github.com/eco-emma/emma_envdata/releases/download/",
  "fireage/fireage_current.tif"
))
plot(r[["fire_age_days"]])
# STAC item → asset href (pystac-like workflow with rstac if installed)
# Or read collection JSON and pick an item link, then rast(asset_href)

Python

import rasterio
url = (
    "/vsicurl/"
    "https://github.com/eco-emma/emma_envdata/releases/download/"
    "fireage/fireage_current.tif"
)
with rasterio.open(url) as ds:
    print(ds.descriptions, ds.count)
# pip install pystac
from pystac import Catalog
cat = Catalog.from_file(
    "https://github.com/eco-emma/emma_envdata/releases/download/stac/catalog.json"
)
print([c.id for c in cat.get_children()])

Data status

Product As-of Updated Coverage
Fused EVI 2026-09-21 — 225,000 km²
Fire age 2026-09-01 2026-10-16 known 41,136 / censored 184,045 km²
Weather 2025-08-24 2026-10-20 —
Page — 2026-11-10 06:12 UTC domain 225,181 · parks-union 16,609 km²

Product dates and coverage for maps on this page. Sources and definitions: Data · Coverage metrics.