Data

Site products, STAC, and downloads

Sources for maps and figures on this site are derived in emma_report from public eco-emma/emma_envdata GitHub Releases and the STAC catalog. This page summarizes available data, where to download it, and how to open Cloud-Optimized GeoTIFFs.

Data shown on this site

Product What you see Typical as-of
Fused EVI Latest greenness + monthly / long-term ΔEVI on park maps (EVI layer group) 2026-09-21
Veld Age (years) Continuous fire-age raster; true ages (not collapsed to 20) fireage release snapshot
Fire History Burn outlines (one layer; age-bin stroke colors) fireage release snapshot
Invasives Recent iNaturalist records in parks + 10 km buffer (10×10 px leaf markers) inat_data
Weather Nearest GSOD station climate when rows exist (≥2000 when published) weather_data

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.

STAC catalog

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

Latest VI item id: vi_20260921 · datetime 2026-09-21T00:00:00Z.

GitHub data releases

Release tags for common products (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>.

Coverage metrics

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

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 (is_censored = 1).

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

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()])

Coverage — domain 225,181 km² · parks-union 16,609 km² · valid latest fused EVI 225,000 km² (EVI as of 2026-09-21) · fire-age known 41,136 km² / censored 184,045 km². Fire-age known/censored exclude cells where all fireage bands (age, last burn, is_censored) are NA; censored = never-burned / right-censored (is_censored = 1). Definitions & downloads.

Data freshness — STAC VI datetime: 2026-09-21 · envdata release updated: 2026-10-17 · page built: 2026-10-20 20:00 UTC · STAC catalog · Data page