Ortho imagery in Lower Saxony is acquired by LGLN and distributed via STAC as COGs, here we access and plot basic metadata via R.
About LGLN opendata
The State Office for Geoinformation and Land Surveying Lower Saxony (LGLN) provides a lot of its geodata as open data. And since some years they provide ortho images as well as terrain models of Lower Saxony as Cloud Optimized GeoTIFFs (COG) and reference them via Spatio Temporal Asset Catalogs (STAC). Here we access the data via R to explore, vizualize and work with it programatically.
The index of available data is available as a geojson file which is stored in a cloud bucket. It consists of many polygons which cover Lower Saxony and represent image tiles (2x2 km). For each tile it contains some basic metadata and links to further metadata of the images and links to the image data itself.
The data catalog contains information about the acquisition date of images. We can plot this data to get more information about the available images.
earliest / latest
get min/max date
# first and last available acquisition datesdat |>arrange(date) |>slice(1) |>pull(date)dat |>arrange(desc(date)) |>slice(1) |>pull(date)
Most recent coverage
plot latest data
# latest acquisition date per tiledat |> dplyr::group_by(tile_id) |> dplyr::slice_max(date, n =1) |> ggplot2::ggplot() + ggplot2::geom_sf(aes(fill =as.factor(year)), color =NA) + ggplot2::theme_void() + ggplot2::scale_fill_viridis_d(option ="plasma")
First coverage
plot first data
# first acquisition date per tiledat |> dplyr::group_by(tile_id) |> dplyr::slice_min(date, n =1) |> ggplot2::ggplot() + ggplot2::geom_sf(aes(fill =as.factor(year)), color =NA) + ggplot2::theme_void() + ggplot2::scale_fill_viridis_d(option ="plasma")
Leaf-off coverage
plot leaf-off data
# latest leaf-off data per tiledat |> dplyr::filter(month %in%c("Nov", "Dez", "Jan", "Feb", "Mrz")) |> dplyr::arrange(date) |> ggplot2::ggplot() + ggplot2::geom_sf( aes(fill =as.factor(year)), color =NA) + ggplot2::theme_void() + ggplot2::scale_fill_viridis_d(option ="plasma")
Leaf-on coverage
plot leaf-on data
# latest leaf-on data per tiledat |> dplyr::filter(month %in%c("Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt")) |> dplyr::arrange(date) |> ggplot2::ggplot() + ggplot2::geom_sf( aes(fill =as.factor(year)), color =NA) + ggplot2::theme_void() + ggplot2::scale_fill_viridis_d(option ="plasma")
Acquisition month
plot month
# month of latest data per tiledat |> dplyr::group_by(tile_id) |> dplyr::slice_max(date, n =1) |> ggplot2::ggplot() + ggplot2::geom_sf( aes(fill = month), color =NA) + ggplot2::theme_void() + ggplot2::scale_fill_viridis_d(option ="plasma")