stac_dem_bc
serves British Columbia’s LidarBC
digital elevation model collection — nearly 100,000 GeoTIFFs on the
provincial objectstore as of July 2026 — as a SpatioTemporal Asset Catalog (STAC),
searchable by location and time from the rstac R
package, QGIS (v3.42+), or any STAC-compliant client. The API
endpoint is https://images.a11s.one.
The catalog refreshes monthly: a scheduled GitHub Actions workflow detects
new tiles on the objectstore and appends them incrementally, with each
month’s changes landing as a commit to data/ — a git audit trail of what was
added, removed, and validated. How the automation works, its failure
modes, and where the evidence lives are documented in scripts/, alongside a
plain-language guide to the concepts behind the pipeline (COG, STAC,
pgstac, validation caching).
Use bcdata
to define an area of interest, then query the stac-dem-bc
collection for DEM tiles intersecting it. Below: all DEMs covering the
Bulkley River watershed group between 2018 and 2020.
aoi <- bcdata::bcdc_query_geodata("freshwater-atlas-watershed-groups") |>
bcdata::filter(WATERSHED_GROUP_NAME == "Bulkley River") |>
bcdata::collect() |>
sf::st_transform(crs = 4326)
date_start <- "2018-01-01T00:00:00Z"
date_end <- "2020-12-31T00:00:00Z"
# use rstac to query the collection
q <- rstac::stac("https://images.a11s.one/") |>
rstac::stac_search(
collections = "stac-dem-bc",
intersects = jsonlite::fromJSON(
geojsonsf::sf_geojson(
aoi, atomise = TRUE, simplify = FALSE
),
simplifyVector = FALSE
) |> (\(x) x$geometry)(),
datetime = paste0(date_start, "/", date_end)
) |>
rstac::post_request()
# get details of the items
r <- q |>
rstac::items_fetch()
# burn the results locally so we can serve it instantly on index.html builds
saveRDS(r, "data/stac_result.rds")
r <- readRDS("data/stac_result.rds")
# build the table to display the info
tab <- tibble::tibble(
url_download = purrr::map_chr(r$features, ~ purrr::pluck(.x, "assets", "image", "href"))
)
DEM download links. NOTE: To view all columns in the table - please click on one of the sort arrows within column headers before scrolling to the right.
QGIS 3.42 added native STAC support — connect directly to the catalog and filter by the current map view. See Lutra Consulting’s STAC-in-QGIS blog post for a walk-through.
Connecting to https://images.a11s.one
Using the field of view in QGIS to filter results
The same images.a11s.one STAC API serves several
complementary BC collections:
stac_uav_bc
— UAV imagery, organized by watershedstac_airphoto_bc
— historic airphoto thumbnails (1963–2019)The big one landed in 2026: the catalog is now self-updating (#23) — the goal open since the first build — and the July catch-up grew the collection from 58k to ~98k fully-validated items. Still ahead:
Browse open issues for the full backlog.
MIT.