rstac icon indicating copy to clipboard operation
rstac copied to clipboard

What is the recommended workflow for grouping bands from the same scene?

Open kadyb opened this issue 1 year ago • 0 comments
trafficstars

Is there any better way to create multiband rasters from URLs? And maybe you should implement a function to group the same scenes?

library("rstac")
library("terra")

stac("https://earth-search.aws.element84.com/v1") |>
  stac_search(collections = "sentinel-2-l2a", bbox = c(16, 53, 17, 54), limit = 2) |>
  post_request() |>
  assets_select(asset_names = c("blue", "green", "red")) |>
  assets_url(append_gdalvsi = TRUE) -> urls

group_urls = function(x, n) {
  group = strsplit(x, "/", fixed = TRUE)
  group = sapply(group, "[[", n)
  group = split(x, factor(group))
  return(group)
}

x = group_urls(urls, n = 12)
# $S2A_33UWU_20240214_0_L2A
# [1] "/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/33/U/WU/2024/2/S2A_33UWU_20240214_0_L2A/B02.tif"
# [2] "/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/33/U/WU/2024/2/S2A_33UWU_20240214_0_L2A/B03.tif"
# [3] "/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/33/U/WU/2024/2/S2A_33UWU_20240214_0_L2A/B04.tif"
# 
# $S2A_33UXU_20240214_0_L2A
# [1] "/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/33/U/XU/2024/2/S2A_33UXU_20240214_0_L2A/B02.tif"
# [2] "/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/33/U/XU/2024/2/S2A_33UXU_20240214_0_L2A/B03.tif"
# [3] "/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/33/U/XU/2024/2/S2A_33UXU_20240214_0_L2A/B04.tif"

sapply(x, vrt, options = "-separate")

kadyb avatar Feb 14 '24 20:02 kadyb