From 0d6380d10a8ef7f696de7c57d85726eb6b5f8a35 Mon Sep 17 00:00:00 2001 From: Ben Best Date: Fri, 17 May 2024 14:20:05 +0200 Subject: [PATCH] + sst, slr; fix 2 days of prism --- data.qmd | 313 +- data/prism/prism_daily_01-01.tif | Bin 484546 -> 488027 bytes data/prism/prism_daily_05-07.tif | Bin 479479 -> 481037 bytes data/slr/monthly_sea_levels.csv | 1869 + data/sst/tbep_sst.csv | 92184 +++++++++++++++++++++++++++++ data/sst/tbep_sst.tif | Bin 0 -> 10074701 bytes data/sst/tbep_sst.tif.aux.json | 5 + 7 files changed, 94317 insertions(+), 54 deletions(-) create mode 100644 data/slr/monthly_sea_levels.csv create mode 100644 data/sst/tbep_sst.csv create mode 100644 data/sst/tbep_sst.tif create mode 100644 data/sst/tbep_sst.tif.aux.json diff --git a/data.qmd b/data.qmd index f003e4e..88674d6 100644 --- a/data.qmd +++ b/data.qmd @@ -6,6 +6,21 @@ editor_options: # Data +Themes for indicators seeking relevance to: +- Land & Sea +- People & Ecosystems + +Icons +- Bootstrap + - [water](https://icons.getbootstrap.com/icons/water/) + - [thermometer](https://icons.getbootstrap.com/icons/thermometer/) + - [moisture](https://icons.getbootstrap.com/icons/moisture/) + - [thermometer-sun](https://icons.getbootstrap.com/icons/thermometer-sun/) + - [cloud-rain-heavy-fill](https://icons.getbootstrap.com/icons/cloud-rain-heavy-fill/) + - [tornado](https://icons.getbootstrap.com/icons/tornado/) +- Fontawesome + - [water-rise](https://fontawesome.com/v5/icons/water-rise?f=classic&s=solid) PRO + ## Task 1. Assessment of available data and coverage Data descriptive of the risks of climate change can be obtained from several sources. These may include weather or climatological data, long-term tidal gauge data, or in situ water measurements responsive to climate change. Weather and climatological data could be obtained from local weather stations with long-term data, e.g., Tampa International Airport, and could include measures of air temperature, precipitation, and/or storm intensity/frequency. Tidal gauge data are readily available from the NOAA PORTS data retrieval system. Lastly, in situ water measurements could include water temperature, changes in flow hydrology, salinity, and/or pH. Data used to evaluate potential risks related to ocean acidification should also be explored. @@ -916,11 +931,17 @@ plet(r[[100]], tiles=providers$CartoDB.DarkMatter) ``` ```{r fetch_latest_prism} +librarian::shelf( + dplyr, fs, glue, here, lubridate, purrr, sf, stringr, terra, tibble, tidyr) + dir_daily <- here::here("data/prism") # https://services.nacse.org/prism/data/public/4km/ppt/20240512 vars <- c("tmin", "tmax", "tdmean", "ppt") prism_beg <- lubridate::date("1981-01-01") -yesterday <- lubridate::today(tzone = "UTC") - lubridate::days(1) +# yesterday <- lubridate::today(tzone = "UTC") - lubridate::days(1) +# accommodate up to 12 hrs to publish yesterday +yesterday_tz <- "Etc/GMT+12" +yesterday <- lubridate::today(tzone = yesterday_tz) - lubridate::days(1) dates_all <- (prism_beg:(yesterday)) |> as.Date() rx_tif <- "prism_daily_([0-9]{2})-([0-9]{2}).tif" @@ -942,37 +963,34 @@ d_done <- tibble::tibble( as.Date(format = "%Y%m%d")) |> dplyr::arrange(tif_md, lyr_date, lyr_var) # order by: month-day, date, variable -# rast("tmp/daily/prism_daily_01-01.tif") |> names() |> head() -# rast("tmp/daily/prism_daily_05-07.tif") |> names() - # define expected stability by date early_end <- lubridate::today(tzone = "UTC") - lubridate::days(1) -early_beg <- ym(glue("{year(early_end)}-{month(early_end)}")) +early_beg <- lubridate::ym(glue::glue("{lubridate::year(early_end)}-{lubridate::month(early_end)}")) prov_end <- early_beg - days(1) prov_beg <- early_beg - months(6) stable_end <- prov_beg - days(1) stable_beg <- prism_beg -# early: 2024-05-01 to 2024-05-06 -# provisional: 2023-11-01 to 2024-04-30 -# stable: 1981-01-01 to 2023-10-31 +# early: 2024-05-01 to 2024-05-06 (this month) +# provisional: 2023-11-01 to 2024-04-30 (previous 6 months) +# stable: 1981-01-01 to 2023-10-31 (before 6 months) -d_todo <- tibble( +d_todo <- tibble::tibble( lyr_var = vars |> sort()) |> - cross_join( - tibble( + dplyr::cross_join( + tibble::tibble( lyr_date = dates_all) |> - mutate( + dplyr::mutate( lyr_stability = cut( lyr_date, breaks = c(stable_beg, stable_end, prov_beg, prov_end, early_beg, early_end), labels = c("stable", "stable", "provisional", "provisional", "early"), include.lowest = T) ) ) |> - anti_join( + dplyr::anti_join( d_done |> - select(lyr_date, lyr_var, lyr_stability) |> - arrange(lyr_date, lyr_var, lyr_stability), + dplyr::select(lyr_date, lyr_var, lyr_stability) |> + dplyr::arrange(lyr_date, lyr_var, lyr_stability), by = c("lyr_date", "lyr_var", "lyr_stability")) |> - arrange(lyr_date, lyr_var, lyr_stability) + dplyr::arrange(lyr_date, lyr_var, lyr_stability) # 1 ppt 2024-05-07 early @@ -993,25 +1011,24 @@ prism_rast_parameters <- function(r){ prism_get_daily <- function( var, date, - dir_daily = here::here("tmp/daily"), + dir_daily = here::here("data/prism"), crs_proj = "+proj=longlat +datum=NAD83 +no_defs", bb = c(xmin = -82.9, ymin = 27.2, xmax = -81.7, ymax = 28.6)){ - # var="ppt"; date = as.Date("2024-05-07") - # var="tmax"; date = as.Date("1981-01-01") - - u <- glue("https://services.nacse.org/prism/data/public/4km/{var}/{format(date, '%Y%m%d')}") - ply_bb <- sf::st_bbox(bb, crs = terra::crs(r, proj=T)) |> + u <- glue::glue("https://services.nacse.org/prism/data/public/4km/{var}/{format(date, '%Y%m%d')}") + + ply_bb <- sf::st_bbox(bb, crs = crs_proj) |> sf::st_as_sfc() |> sf::st_as_sf() # date = as.Date("1981-01-01"); var = "tdmean" - z <- glue("{dir_daily}/temp_{date}_{var}.zip") - message(glue(" Downloading PRISM daily {date} {var}")) - download.file(u, z) + z <- glue::glue("{dir_daily}/temp_{date}_{var}.zip") + message(glue::glue("Downloading PRISM daily {date} {var}")) + download.file(u, z, quiet = T) - # If downloaded zip < 1 KB, probably this error: - # You have tried to download the file PRISM_tdmean_stable_4kmD2_19810101_bil.zip more than twice in one day (Pacific local time). Note that repeated offenses may result in your IP address being blocked. + # If downloaded zip < 1 KB, assume one of these errors: + # - You have tried to download the file PRISM_tdmean_stable_4kmD2_19810101_bil.zip more than twice in one day (Pacific local time). Note that repeated offenses may result in your IP address being blocked. + # - Invalid date: 20240513
Valid day ranges for the given month are 1 to 12 [real reason: requesting beyond available date, ie not yet published] if (file.size(z) < 1000) stop(readLines(z, warn=F)) @@ -1025,10 +1042,10 @@ prism_get_daily <- function( terra::rast() |> terra::crop(ply_bb, mask = T, touches = T) |> terra::trim() - terra::crs(r) <- crs_proj + terra::crs(r_new) <- crs_proj md_tif <- sprintf("%s/prism_daily_%02d-%02d.tif", dir_daily, month(date), day(date)) - + if (!file.exists(md_tif)){ terra::writeRaster( r_new, md_tif, @@ -1066,24 +1083,25 @@ prism_get_daily <- function( datatype = "FLT4S", filetype = "GTiff", gdal = c("COMPRESS=DEFLATE"), overwrite = T) - dir_delete(dir_z) + fs::dir_delete(dir_z) unlink(tmp) return(T) } -# rast("tmp/daily/prism_daily_01-01.tif") |> names() +msg <- ifelse( + nrow(d_todo) > 0, + glue::glue("Summary: {nrow(d_todo)} variable-dates {paste(range(d_todo$lyr_date), collapse=' to ')} to download and crop "), + glue::glue("Summary: up to date as of yesterday ({yesterday_tz}): {yesterday}")) +message(msg) d_todo |> select(var = lyr_var, date = lyr_date) |> - filter( - !(var == "tdmean" & date == as.Date("1981-01-01")), - !(var == "ppt" & date == as.Date("2024-05-07"))) |> pwalk(prism_get_daily) ``` -``` +``` # early: 2024-05-01 to 2024-05-06 -# provisional: 2023-11-01 to 2024-04-30 +# provisional: 2023-11-01 to 2024-04-30 # stable: 1981-01-01 to 2023-10-31 # https://prism.nacse.org/documents/PRISM_downloads_web_service.pdf # PRISM____