54 lines
1.8 KiB
R
54 lines
1.8 KiB
R
# Utils for ci extraction
|
|
date_list <- function(end_date, offset){
|
|
offset <- as.numeric(offset) - 1
|
|
end_date <- as.Date(end_date)
|
|
start_date <- end_date - lubridate::days(offset)
|
|
|
|
week <- week(start_date)
|
|
year <- year(start_date)
|
|
days_filter <- seq(from = start_date, to = end_date, by = "day")
|
|
|
|
return(list("week" = week, "year" = year, "days_filter" = days_filter))
|
|
}
|
|
|
|
create_mask_and_crop <- function(file, field_boundaries, merged_final_dir) {
|
|
message("starting ", file)
|
|
loaded_raster <- rast(file)
|
|
names(loaded_raster) <- c("Red", "Green", "Blue", "NIR")
|
|
message("raster loaded")
|
|
|
|
CI <- loaded_raster$NIR / loaded_raster$Green - 1
|
|
|
|
loaded_raster$CI <- CI
|
|
message("CI calculated")
|
|
loaded_raster <- terra::crop(loaded_raster, field_boundaries, mask = TRUE) #%>% CI_func()
|
|
|
|
loaded_raster[loaded_raster == 0] <- NA
|
|
new_file <- here(merged_final_dir, paste0(tools::file_path_sans_ext(basename(file)), ".tif"))
|
|
writeRaster(loaded_raster, new_file, overwrite = TRUE)
|
|
|
|
vrt_file <- here(daily_vrt, paste0(tools::file_path_sans_ext(basename(file)), ".vrt"))
|
|
terra::vrt(new_file, vrt_file, overwrite = TRUE)
|
|
|
|
return(loaded_raster)
|
|
}
|
|
|
|
date_extract <- function(file_path) {
|
|
str_extract(file_path, "\\d{4}-\\d{2}-\\d{2}")
|
|
}
|
|
|
|
extract_rasters_daily <- function(file, field_geojson, quadrants = TRUE, save_dir) {
|
|
field_geojson <- sf::st_as_sf(field_geojson)
|
|
x <- rast(file[1])
|
|
date <- date_extract(file)
|
|
|
|
pivot_stats <- cbind(field_geojson, mean_CI = round(exactextractr::exact_extract(x$CI, field_geojson, fun = "mean"), 2)) %>%
|
|
st_drop_geometry() %>% rename("{date}" := mean_CI)
|
|
|
|
save_suffix <- if (quadrants){"quadrant"} else {"whole_field"}
|
|
save_path <- here(save_dir, paste0("extracted_", date, "_", save_suffix, ".rds"))
|
|
|
|
saveRDS(pivot_stats, save_path)
|
|
}
|
|
|