You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.5 KiB
85 lines
2.5 KiB
make_study_bounds <- function(range_shapefile, expand_degrees = 5) {
|
|
seal_range <- terra::vect(range_shapefile)
|
|
bbox <- terra::ext(seal_range) |> terra::extend(expand_degrees)
|
|
list(
|
|
seal_range = seal_range,
|
|
lon_range = c(bbox$xmin, bbox$xmax),
|
|
lat_range = c(bbox$ymin, bbox$ymax)
|
|
)
|
|
}
|
|
|
|
download_biooracle_slice <- function(dynamic_layers, scenario_value, decade_start, lon_range, lat_range, download_root = "./data/bio-oracle-2") {
|
|
scenario_layers <- dynamic_layers |>
|
|
dplyr::filter(scenario == scenario_value)
|
|
|
|
time_point <- paste0(decade_start, "-01-01T00:00:00Z")
|
|
slice_constraints <- list(
|
|
time = c(time_point, time_point),
|
|
longitude = lon_range,
|
|
latitude = lat_range
|
|
)
|
|
|
|
download_dir <- file.path(download_root, scenario_value, decade_start)
|
|
dir.create(download_dir, recursive = TRUE, showWarnings = FALSE)
|
|
|
|
sapply(
|
|
scenario_layers$dataset_id,
|
|
function(id) biooracler::download_layers(
|
|
id,
|
|
constraints = slice_constraints,
|
|
directory = download_dir
|
|
),
|
|
simplify = TRUE
|
|
)
|
|
}
|
|
|
|
download_biooracle_slice_subset <- function(dynamic_layers, scenario_value, decade_start, layers_to_download, lon_range, lat_range, download_root = "./data/bio-oracle-2") {
|
|
scenario_layers <- dynamic_layers |>
|
|
dplyr::filter(
|
|
scenario == scenario_value &
|
|
var %in% layers_to_download$var &
|
|
depth %in% layers_to_download$depth
|
|
)
|
|
|
|
time_point <- paste0(decade_start, "-01-01T00:00:00Z")
|
|
slice_constraints <- list(
|
|
time = c(time_point, time_point),
|
|
longitude = lon_range,
|
|
latitude = lat_range
|
|
)
|
|
|
|
download_dir <- file.path(download_root, scenario_value, decade_start)
|
|
dir.create(download_dir, recursive = TRUE, showWarnings = FALSE)
|
|
|
|
sapply(
|
|
scenario_layers$dataset_id,
|
|
function(id) biooracler::download_layers(
|
|
id,
|
|
constraints = slice_constraints,
|
|
directory = download_dir
|
|
),
|
|
simplify = TRUE
|
|
)
|
|
}
|
|
|
|
set_brick_names_with_depth <- function(r) {
|
|
r_depths <- names(r) |> stringr::str_extract("depth[:alpha:]+")
|
|
r_longnames <- terra::longnames(r)
|
|
names(r) <- paste(r_longnames, r_depths)
|
|
r
|
|
}
|
|
|
|
assert_required_files <- function(paths) {
|
|
missing_paths <- paths[!file.exists(paths)]
|
|
if (length(missing_paths) > 0) {
|
|
stop(
|
|
paste0(
|
|
"Missing required file(s): ",
|
|
paste(missing_paths, collapse = ", "),
|
|
". Run learning pipeline first."
|
|
),
|
|
call. = FALSE
|
|
)
|
|
}
|
|
}
|