diff --git a/.Rbuildignore b/.Rbuildignore index 2fa4f269..d6d3f1d9 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -19,3 +19,7 @@ ^.covrignore$ ^CODE_OF_CONDUCT\.md$ ^CRAN-SUBMISSION$ + + +# flint files +^flint$ diff --git a/R/get_power.R b/R/get_power.R index eddf5f11..8d40d19f 100644 --- a/R/get_power.R +++ b/R/get_power.R @@ -1,4 +1,3 @@ - #' Get NASA POWER Data From the POWER API #' #' @description Get \acronym{POWER} global meteorology and surface solar energy @@ -193,10 +192,12 @@ #' @export get_power <- function(community = c("ag", "re", "sb"), pars, - temporal_api = c("daily", - "monthly", - "hourly", - "climatology"), + temporal_api = c( + "daily", + "monthly", + "hourly", + "climatology" + ), lonlat, dates = NULL, site_elevation = NULL, @@ -221,13 +222,15 @@ get_power <- function(community = c("ag", "re", "sb"), # remove this if POWER enables global queries for climatology again cli::cli_abort( c(x = "The POWER team have not enabled {.var global} data queries with - this version of the 'API'.") + this version of the 'API'."), + call = rlang::caller_env() ) } if (!is.null(site_elevation) && !is.numeric(site_elevation)) { cli::cli_abort( c(x = "You have entered an invalid value for {.arg site_elevation}, - {.val site_elevation}.") + {.val site_elevation}."), + call = rlang::caller_env() ) } if (length(lonlat) > 2 && !is.null(site_elevation)) { @@ -235,7 +238,8 @@ get_power <- function(community = c("ag", "re", "sb"), c( x = "You have provided {.arg site_elevation}, {.var {site_elevation}} for a region request. The {.arg site_elevation} value will be ignored." - ) + ), + call = rlang::caller_env() ) site_elevation <- NULL } @@ -243,10 +247,11 @@ get_power <- function(community = c("ag", "re", "sb"), if (length(lonlat) > 2 && !is.null(wind_elevation)) { cli::cli_inform( c( - "You have provided {.arg wind_elevation}, {.var {wind_elevation}}, + "You have provided {.arg wind_elevation}, {.var {wind_elevation}}, for a region request.", - i = "The {.arg wind_elevation} value will be ignored." - ) + i = "The {.arg wind_elevation} value will be ignored." + ), + call = rlang::caller_env() ) wind_elevation <- NULL } @@ -257,17 +262,19 @@ get_power <- function(community = c("ag", "re", "sb"), x = "If you provide a correct wind surface alias, {.arg wind_surface}, please include a surface elevation, {.arg wind_elevation}, with the request." - ) + ), + call = rlang::caller_env() ) } - if (!is.null(wind_elevation)) { - if (wind_elevation < 10 || wind_elevation > 300) { - cli::cli_abort( - c(x = "{.arg wind_elevation} values in metres are required to be between - 10m and 300m.") - ) - } + + if (!is.null(wind_elevation) && wind_elevation %notin% 10:300) { + cli::cli_abort( + c(x = "{.arg wind_elevation} values in metres are required to be between + 10m and 300m inclusive."), + call = rlang::caller_env() + ) } + if (is.character(lonlat)) { lonlat <- tolower(lonlat) if (lonlat != "global") { @@ -276,41 +283,54 @@ get_power <- function(community = c("ag", "re", "sb"), x = "You have entered an invalid value for {.arg lonlat}.", i = "Valid values are {.val global} with {.val climatology}", "or a string of lon and lat values." - ) + ), + call = rlang::caller_env() ) } } if (temporal_api == "hourly" && length(lonlat) == 4L) { cli::cli_abort(c(x = "{.arg temporal_api} does not support hourly values for - regional queries.")) + regional queries."), + call = rlang::caller_env() + ) } if (length(pars) > 15 && temporal_api == "hourly") { cli::cli_abort( call = rlang::caller_env(), - c(x = "A maximum of 15 parameters can currently be requested in one + c( + x = "A maximum of 15 parameters can currently be requested in one submission for hourly data.", - i = "You have submitted {.val {length(pars)}}") + i = "You have submitted {.val {length(pars)}}" + ), ) } else if (length(pars) > 20) { cli::cli_abort( call = rlang::caller_env(), - c(i = "A maximum of 20 parameters can currently be requested in one + c( + i = "A maximum of 20 parameters can currently be requested in one submission.", - i = "You have submitted {.val {length(pars)}}") + i = "You have submitted {.val {length(pars)}}" + ) ) } # see internal_functions.R for these functions prefixed with "." - pars <- .check_pars(pars = pars, - community = community, - temporal_api = temporal_api) - lonlat_identifier <- .check_lonlat(lonlat, - pars) - dates <- .check_dates(dates, - lonlat, - temporal_api) + pars <- .check_pars( + pars = pars, + community = community, + temporal_api = temporal_api + ) + lonlat_identifier <- .check_lonlat( + lonlat, + pars + ) + dates <- .check_dates( + dates, + lonlat, + temporal_api + ) # submit query ------------------------------------------------------------- query_list <- .build_query( @@ -331,25 +351,33 @@ get_power <- function(community = c("ag", "re", "sb"), ) response <- - .send_query(.query_list = query_list, - .url = power_url) + .send_query( + .query_list = query_list, + .url = power_url + ) response$raise_for_status() # create meta object power_data <- readr::read_lines(I(response$parse("UTF8"))) - meta <- power_data[c(grep("-BEGIN HEADER-", - power_data):grep("-END HEADER-", - power_data))] + meta <- power_data[c(grep( + "-BEGIN HEADER-", + power_data + ):grep( + "-END HEADER-", + power_data + ))] # strip BEGIN/END HEADER lines meta <- meta[-c(1, max(length(meta)))] # replace missing values with NA in metadata header for (i in c("-999", "-99", "-99.00")) { - meta <- gsub(pattern = i, - replacement = "NA", - x = meta) + meta <- gsub( + pattern = i, + replacement = "NA", + x = meta + ) } # create tibble object @@ -370,19 +398,20 @@ get_power <- function(community = c("ag", "re", "sb"), # if the temporal average is anything but climatology, add date fields if (temporal_api == "daily" && - query_list$community == "re" || - query_list$community == "sb") { + query_list$community == "re" || + query_list$community == "sb") { power_data <- .format_dates_re_sb(power_data) } if (temporal_api == "daily" && - query_list$community == "ag") { + query_list$community == "ag") { power_data <- .format_dates_ag(power_data) } # add new class power_data <- tibble::new_tibble(power_data, - class = "POWER.Info", - nrow = nrow(power_data)) + class = "POWER.Info", + nrow = nrow(power_data) + ) # add attributes for printing df attr(power_data, "POWER.Info") <- meta[1] @@ -393,7 +422,8 @@ get_power <- function(community = c("ag", "re", "sb"), attr(power_data, "POWER.Missing_value") <- meta[6] attr(power_data, "POWER.Parameters") <- paste(meta[7:length(meta)], - collapse = ";\n ") + collapse = ";\n " + ) return(power_data) } @@ -413,7 +443,8 @@ get_power <- function(community = c("ag", "re", "sb"), .check_dates <- function(dates, lonlat, temporal_api) { if (is.null(dates) & temporal_api != "climatology") { cli::cli_abort(c(i = "You have not entered dates for the query."), - call = rlang::caller_env()) + call = rlang::caller_env() + ) } if (temporal_api == "monthly") { if (length(unique(dates)) < 2) { @@ -436,90 +467,100 @@ get_power <- function(community = c("ag", "re", "sb"), return(dates) } if (temporal_api == "daily" || temporal_api == "hourly") { - if (is.numeric(lonlat)) { - if (length(dates) == 1) { - dates <- c(dates, dates) - } - if (length(dates) > 2) { - cli::cli_abort( - c( - i = "You have supplied more than two dates for start and end.", - x = "Please supply only two (2) dates for {.arg dates} as + if (is.numeric(lonlat) && length(dates) == 1) { + dates <- c(dates, dates) + } + if (length(dates) > 2) { + cli::cli_abort( + c( + i = "You have supplied more than two dates for start and end.", + x = "Please supply only two (2) dates for {.arg dates} as 'YYYY-MM-DD' (ISO8601 format)." - ), - call = rlang::caller_env() - ) - } + ), + call = rlang::caller_env() + ) + } + + # put dates in list to use lapply + dates <- as.list(dates) - # put dates in list to use lapply - dates <- as.list(dates) - - # check dates as entered by user - date_format <- function(x) { - rlang::try_fetch( - # try to parse the date format using lubridate - x <- lubridate::parse_date_time(x, - c( - "Ymd", - "dmY", - "mdY", - "BdY", - "Bdy", - "bdY", - "bdy" - )), - warning = function(c) { - cli::cli_abort( - call = rlang::caller_env(), - c(i = "{.var {x}} is not a valid entry for a date value.", - x = "Enter as 'YYYY-MM-DD' (ISO8601 format) and check that it - is a valid date.") + # check dates as entered by user + date_format <- function(x) { + rlang::try_fetch( + # try to parse the date format using lubridate + x <- lubridate::parse_date_time( + x, + c( + "Ymd", + "dmY", + "mdY", + "BdY", + "Bdy", + "bdY", + "bdy" + ) + ), + warning = function(c) { + cli::cli_abort( + call = rlang::caller_env(), + c( + i = "{.var {x}} is not a valid entry for a date value.", + x = "Enter as 'YYYY-MM-DD' (ISO8601 format) and check that it + is a valid date." ) - } - ) - as.Date(x) - } + ) + } + ) + as.Date(x) + } - # apply function to reformat/check dates - dates <- lapply(X = dates, FUN = date_format) + # apply function to reformat/check dates + dates <- lapply(X = dates, FUN = date_format) - # if the stdate is > endate, flip order - if (dates[[2]] < dates[[1]]) { - cli::cli_alert_info(c(i = "Your start and end dates were reversed. + # if the stdate is > endate, flip order + if (dates[[2]] < dates[[1]]) { + cli::cli_alert_info(c(i = "Your start and end dates were reversed. They have been reordered.")) - dates <- c(dates[2], dates[1]) - } + dates <- c(dates[2], dates[1]) + } - # check date to be sure it's not before POWER data start - if (temporal_api != "hourly" && - dates[[1]] < "1981-01-01") { - cli::cli_abort( - call = rlang::caller_env(), - c(i = "{.arg dates} = {.val {dates[[1]]}} is an invalid value.", - x = "1981-01-01 is the earliest available data from POWER.") + # check date to be sure it's not before POWER data start + if (temporal_api != "hourly" && + dates[[1]] < "1981-01-01") { + cli::cli_abort( + call = rlang::caller_env(), + c( + i = "{.arg dates} = {.val {dates[[1]]}} is an invalid value.", + x = "1981-01-01 is the earliest available data from POWER." ) - } else if (temporal_api == "hourly" & - dates[[1]] < "2001-01-01") - cli::cli_abort( - call = rlang::caller_env(), - c(i = "{.arg dates} = {.val {dates[[1]]}} is an invalid value.", - x = "2001-01-01 is the earliest available hourly data from POWER.") + ) + } else if (temporal_api == "hourly" & + dates[[1]] < "2001-01-01") { + cli::cli_abort( + call = rlang::caller_env(), + c( + i = "{.arg dates} = {.val {dates[[1]]}} is an invalid value.", + x = "2001-01-01 is the earliest available hourly data from POWER." ) - # check end date to be sure it's not _after_ - if (dates[[2]] > Sys.Date()) { - cli::cli_abort( - call = rlang::caller_env(), - c(i = "{.arg dates} = {.val {dates[[2]]}} is invalid.", - x = "The weather data cannot possibly extend beyond this day.") + ) + } + # check end date to be sure it's not _after_ + if (dates[[2]] > Sys.Date()) { + cli::cli_abort( + call = rlang::caller_env(), + c( + i = "{.arg dates} = {.val {dates[[2]]}} is invalid.", + x = "The weather data cannot possibly extend beyond this day." ) - } - - dates <- lapply(dates, as.character) - dates <- gsub("-", "", dates, ignore.case = TRUE) + ) } + + dates <- lapply(dates, as.character) + dates <- gsub("-", "", dates, ignore.case = TRUE) } } + #' Check user-supplied `lonlat` for validity when querying API #' #' Validates user entered `lonlat` values and checks against `pars` @@ -538,8 +579,10 @@ get_power <- function(community = c("ag", "re", "sb"), if (lonlat == "global") { identifier <- "global" } else if (is.character(lonlat)) { - cli::cli_abort(call = rlang::caller_env(), - c(i = "You have entered an invalid request for `lonlat`.")) + cli::cli_abort( + call = rlang::caller_env(), + c(i = "You have entered an invalid request for `lonlat`.") + ) } } else if (is.numeric(lonlat) & length(lonlat) == 2) { if (lonlat[1] < -180 | lonlat[1] > 180) { @@ -550,7 +593,7 @@ get_power <- function(community = c("ag", "re", "sb"), ) } if (lonlat[2] < -90 | - lonlat[2] > 90) { + lonlat[2] > 90) { cli::cli_abort( call = rlang::caller_env(), c(i = "Please check your latitude, {.val {lonlat[2]}}, @@ -571,18 +614,18 @@ get_power <- function(community = c("ag", "re", "sb"), ) ) } else if (any(lonlat[1] < -180 | - lonlat[3] < -180 | - lonlat[1] > 180 | - lonlat[3] > 180)) { + lonlat[3] < -180 | + lonlat[1] > 180 | + lonlat[3] > 180)) { cli::cli_abort( call = rlang::caller_env(), c(i = "Please check your longitude values, {.var {lonlat[1]}} and {.var {lonlat[3]}}, to be sure they are valid.") ) } else if (any(lonlat[2] < -90 | - lonlat[4] < -90 | - lonlat[2] > 90 | - lonlat[4] > 90)) { + lonlat[4] < -90 | + lonlat[2] > 90 | + lonlat[4] > 90)) { cli::cli_abort( call = rlang::caller_env(), c(i = "Please check your latitude values, {.var {lonlat[2]}} and @@ -592,13 +635,15 @@ get_power <- function(community = c("ag", "re", "sb"), cli::cli_abort( call = rlang::caller_env(), c( - i = "The first `lonlat` {.arg lat} value must be the minimum value.") + i = "The first `lonlat` {.arg lat} value must be the minimum value." + ) ) } else if (lonlat[1] > lonlat[3]) { cli::cli_abort( call = rlang::caller_env(), c( - i = "The first `lonlat` {.arg lon} value must be the minimum value.") + i = "The first `lonlat` {.arg lon} value must be the minimum value." + ) ) } identifier <- "regional" @@ -612,7 +657,8 @@ get_power <- function(community = c("ag", "re", "sb"), cli::cli_abort( call = rlang::caller_env(), c(i = "You have entered an invalid request for `lonlat` - {.arg {lonlat}}.")) + {.arg {lonlat}}.") + ) } if (!is.null(bbox)) { @@ -716,24 +762,26 @@ get_power <- function(community = c("ag", "re", "sb"), power_response <- tibble::add_column( power_response, YYYYMMDD = as.Date(power_response$DOY - 1, - origin = as.Date( - paste(power_response$YEAR, "-01-01", - sep = "") - )), + origin = as.Date( + paste0(power_response$YEAR, "-01-01") + ) + ), .after = "DOY" ) # Extract month as integer power_response <- tibble::add_column(power_response, - MM = as.integer(substr(power_response$YYYYMMDD, 6, 7)), - .after = "YEAR") + MM = as.integer(substr(power_response$YYYYMMDD, 6, 7)), + .after = "YEAR" + ) # Extract day as integer return(tibble::add_column(power_response, - DD = as.integer(substr( - power_response$YYYYMMDD, 9, 10 - )), - .after = "MM")) + DD = as.integer(substr( + power_response$YYYYMMDD, 9, 10 + )), + .after = "MM" + )) } #' Format date columns in POWER data frame for the re community diff --git a/R/internal_functions.R b/R/internal_functions.R index 5dd3bbda..9522eece 100644 --- a/R/internal_functions.R +++ b/R/internal_functions.R @@ -1,4 +1,3 @@ - #' Adds a %notin% Function #' #' Negates `%in%` for easier (mis)matching. @@ -47,27 +46,29 @@ community_temporal_api <- paste( rep(temporal_api, each = length(temporal_api)), - community, sep = "_") + community, + sep = "_" + ) - p <- unlist(parameters[community_temporal_api]) + p <- unlist(parameters[community_temporal_api]) - # check pars to make sure that they are valid for both the par and - # temporal_api - if (any(pars %notin% p)) { - nopar <- pars[which(pars %notin% p)] + # check pars to make sure that they are valid for both the par and + # temporal_api + if (any(pars %notin% p)) { + nopar <- pars[which(pars %notin% p)] - cli::cli_abort( - call = rlang::caller_env(), - c( - i = "{.arg nopar} {?is/are} not valid in {.var pars}.", - x = "Check that the {.arg pars}, {.arg community} and + cli::cli_abort( + call = rlang::caller_env(), + c( + i = "{.arg nopar} {?is/are} not valid in {.var pars}.", + x = "Check that the {.arg pars}, {.arg community} and {.arg temporal_api} all align." - ) ) - } + ) + } # all good? great. now we format it for the API - pars <- paste0(pars, collapse = ",") + pars <- paste(pars, collapse = ",") return(pars) } @@ -77,10 +78,10 @@ #' @param x an object to check #' @return a logical value indicating whether provided object is a Boolean #' @examples -#' is_boolean(TRUE) # [1] TRUE -#' # the following will work on most systems, unless you have tweaked global Rprofile -#' is_boolean(T) # [1] TRUE -#' is_boolean(1) # [1] FALSE +#' is_boolean(TRUE) # [1] TRUE +#' # the following will work on most systems, unless you have tweaked global Rprofile +#' is_boolean(T) # [1] TRUE +#' is_boolean(1) # [1] FALSE #' @note Taken from #' #' @@ -137,9 +138,11 @@ client <- crul::HttpClient$new(url = .url) # nocov begin - response <- client$get(query = .query_list, - retry = 6L, - timeout = 30L) + response <- client$get( + query = .query_list, + retry = 6L, + timeout = 30L + ) # check to see if request failed or succeeded # - a custom approach this time combining status code, @@ -148,7 +151,8 @@ mssg <- jsonlite::fromJSON(response$parse("UTF-8"))$message x <- response$status_http() cli::cli_abort( - sprintf("HTTP (%s) - %s\n %s", x$status_code, x$explanation, mssg)) + sprintf("HTTP (%s) - %s\n %s", x$status_code, x$explanation, mssg) + ) } # parse response return(response) @@ -170,8 +174,10 @@ client <- crul::HttpClient$new(url = .url) # nocov begin - response <- client$get(retry = 6L, - timeout = 30L) + response <- client$get( + retry = 6L, + timeout = 30L + ) # check to see if request failed or succeeded # - a custom approach this time combining status code, @@ -180,7 +186,8 @@ mssg <- jsonlite::fromJSON(response$parse("UTF-8"))$message x <- response$status_http() cli::cli_abort( - sprintf("HTTP (%s) - %s\n %s", x$status_code, x$explanation, mssg)) + sprintf("HTTP (%s) - %s\n %s", x$status_code, x$explanation, mssg) + ) } # parse response return(response) diff --git a/R/print_POWER_Info.R b/R/print_POWER_Info.R index a4996931..3972b9be 100644 --- a/R/print_POWER_Info.R +++ b/R/print_POWER_Info.R @@ -6,25 +6,17 @@ #' @noRd print.POWER.Info <- function(x, ...) { if (!is.null(attr(x, "POWER.Info"))) { - cat( - attr(x, "POWER.Info"), - "\n", - attr(x, "POWER.Dates"), - "\n", - attr(x, "POWER.Location"), - "\n", - attr(x, "POWER.Elevation"), - "\n", - attr(x, "POWER.Climate_zone"), - "\n", - attr(x, "POWER.Missing_value"), - "\n", - "\n", - "Parameters: \n", - attr(x, "POWER.Parameters"), - "\n", - "\n" - ) + cli::cat_rule() + cli::cli_h1(attr(x, "POWER.Info")) + cli::cli_text(attr(x, "POWER.Dates")) + cli::cli_text(attr(x, "POWER.Location")) + cli::cli_text(attr(x, "POWER.Elevation")) + cli::cli_text(attr(x, "POWER.Climate_zone")) + cli::cli_text(attr(x, "POWER.Missing_value")) + cli::cat_rule() + cli::cli_text("{.strong Parameters:}") + cli::cli_text(attr(x, "POWER.Parameters")) + cli::cat_rule() format(x) } NextMethod(x) diff --git a/R/query_groupings.R b/R/query_groupings.R index 3bba421e..0faf2b66 100644 --- a/R/query_groupings.R +++ b/R/query_groupings.R @@ -1,4 +1,3 @@ - #' Query the POWER API for Detailed Information on Available Parameter Groupings #' #' Queries the \acronym{POWER} \acronym{API} returning detailed information on @@ -28,8 +27,10 @@ query_groupings <- function(global = FALSE) { if (!.is_boolean(global)) { cli::cli_abort( - c(x = "{.arg global} should be a Boolean value.", - i = "{Please provide either {.var TRUE} or {.var FALSE}.") + c( + x = "{.arg global} should be a Boolean value.", + i = "{Please provide either {.var TRUE} or {.var FALSE}." + ) ) } @@ -42,7 +43,6 @@ query_groupings <- function(global = FALSE) { response$raise_for_status() return(jsonlite::fromJSON(response$parse("UTF8"))) - } else { power_url <- sprintf("%s/global", power_url) response <- diff --git a/R/query_parameters.R b/R/query_parameters.R index 9bdc9003..a2739638 100644 --- a/R/query_parameters.R +++ b/R/query_parameters.R @@ -1,4 +1,3 @@ - #' Query the POWER API for Detailed Information on Available Parameters #' #' Queries the \acronym{POWER} \acronym{API} returning detailed information on @@ -34,14 +33,18 @@ #' #' # fetch complete temporal and community specific attribute information #' # for "T2M" in the "ag" community for the "hourly" temporal API. -#' query_parameters(pars = "T2M", -#' community = "ag", -#' temporal_api = "hourly") +#' query_parameters( +#' pars = "T2M", +#' community = "ag", +#' temporal_api = "hourly" +#' ) #' #' # fetch complete temporal and community specific attribute information #' # for all parameters in the "ag" community for the "hourly" temporal API. -#' query_parameters(community = "ag", -#' temporal_api = "hourly") +#' query_parameters( +#' community = "ag", +#' temporal_api = "hourly" +#' ) #' #' @author Adam H. Sparks, \email{adamhsparks@@gmail.com} #' @@ -82,9 +85,11 @@ query_parameters <- function(community = NULL, if (!is.null(pars)) { pars <- toupper(pars) pars <- - .check_pars(pars = pars, - community = community_vals, - temporal_api = temporal_api_vals) + .check_pars( + pars = pars, + community = community_vals, + temporal_api = temporal_api_vals + ) } power_url <- "https://power.larc.nasa.gov/api/system/manager/parameters" diff --git a/R/query_surfaces.R b/R/query_surfaces.R index c1a37518..a3de08f8 100644 --- a/R/query_surfaces.R +++ b/R/query_surfaces.R @@ -1,4 +1,3 @@ - #' Query the POWER API for Detailed Information on Wind Type Surfaces #' #' Queries the \acronym{POWER} \acronym{API} returning detailed information on @@ -33,7 +32,6 @@ query_surfaces <- function(surface_alias = NULL) { response$raise_for_status() return(jsonlite::fromJSON(response$parse("UTF8"))) - } else { wind_surface <- .match_surface_alias(surface_alias) power_url <- sprintf("%s/%s", power_url, wind_surface) diff --git a/codemeta.json b/codemeta.json index 3d320c28..19d239c1 100644 --- a/codemeta.json +++ b/codemeta.json @@ -13,7 +13,7 @@ "name": "R", "url": "https://r-project.org" }, - "runtimePlatform": "R version 4.4.1 (2024-06-14)", + "runtimePlatform": "R version 4.4.2 (2024-10-31)", "provider": { "@id": "https://cran.r-project.org", "@type": "Organization", @@ -251,7 +251,7 @@ "applicationCategory": "Tools", "isPartOf": "https://ropensci.org", "keywords": ["NASA", "meteorological-data", "weather", "global", "weather-data", "meteorology", "NASA-POWER", "agroclimatology", "earth-science", "data-access", "climate-data", "r", "nasa-power", "nasa", "agroclimatology-data", "weather-variables", "rstats", "r-package"], - "fileSize": "496.898KB", + "fileSize": "496.728KB", "citation": [ { "@type": "ScholarlyArticle", diff --git a/data-raw/README.Rmd b/data-raw/README.Rmd index a381e7d0..8c735a11 100644 --- a/data-raw/README.Rmd +++ b/data-raw/README.Rmd @@ -77,11 +77,13 @@ community <- vals[, 2] base_url <- "https://power.larc.nasa.gov/api/system/manager/parameters?" -power_pars <- map2(.x = temporal_api, - .y = community, - .f = ~ fromJSON(sprintf( - "%stemporal=%s&community=%s", base_url, .x, .y) - )) +power_pars <- map2( + .x = temporal_api, + .y = community, + .f = ~ fromJSON(sprintf( + "%stemporal=%s&community=%s", base_url, .x, .y + )) +) names(power_pars) <- paste(temporal_api, community, sep = "_") @@ -90,7 +92,7 @@ names(power_pars) <- paste(temporal_api, community, sep = "_") parameters <- vector(mode = "list", length = length(power_pars)) names(parameters) <- names(power_pars) for (i in names(power_pars)) { - parameters[[i]] <- names(power_pars[[i]]) + parameters[[i]] <- names(power_pars[[i]]) } parameters <- map(.x = parameters, .f = sort) diff --git a/man/query_parameters.Rd b/man/query_parameters.Rd index 5bdb873a..b7425ce1 100644 --- a/man/query_parameters.Rd +++ b/man/query_parameters.Rd @@ -56,14 +56,18 @@ query_parameters(pars = "T2M") # fetch complete temporal and community specific attribute information # for "T2M" in the "ag" community for the "hourly" temporal API. -query_parameters(pars = "T2M", - community = "ag", - temporal_api = "hourly") +query_parameters( + pars = "T2M", + community = "ag", + temporal_api = "hourly" +) # fetch complete temporal and community specific attribute information # for all parameters in the "ag" community for the "hourly" temporal API. -query_parameters(community = "ag", - temporal_api = "hourly") +query_parameters( + community = "ag", + temporal_api = "hourly" +) \dontshow{\}) # examplesIf} } \author{ diff --git a/tests/fixtures/adjusted_air_pressure.json b/tests/fixtures/adjusted_air_pressure.json index 59fd8d25..72760bb3 100644 --- a/tests/fixtures/adjusted_air_pressure.json +++ b/tests/fixtures/adjusted_air_pressure.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M%2CPS&community=ag&start=19830101&end=19830101&site-elevation=0&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"912","content-type":"text/csv","date":"Sun, 04 Aug 2024 04:31:12 GMT","status":"HTTP/2 200 ","via":"1.1 4ae3e3a5c48b45cacd83dbaeabcd3076.cloudfront.net (CloudFront), 1.1 4574c0224474f0e2381f9ad25426b186.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92SWHIHvHcEbAA=","x-amz-cf-id":"Z7GEKlmIkDMMDxrDoftS7gTy2fA6-MXm04Lnzo7YQm6kCCizf9oVsA==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"912","x-amzn-requestid":"98238f69-b30f-4206-a124-5bd980593a98","x-amzn-trace-id":"Root=1-66af040e-0efce35328c1c31b6593458d","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.567","x-cache":"Miss from cloudfront","x-data-sources":"merra2,power","x-objects-time":"0.011","x-process-time":"0.14","x-service-time":"1.719"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\nPS MERRA-2 Surface Pressure (kPa) \r\nPSC MERRA-2 Corrected Atmospheric Pressure (Adjusted For Site Elevation) (kPa) \r\n-END HEADER-\r\nYEAR,DOY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M,PS,PSC\n1983,1,-24.36,-25.37,-22.7,92.44,1.93,69.23,101.38\n"}},"recorded_at":"2024-08-04 04:31:12 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M%2CPS&community=ag&start=19830101&end=19830101&site-elevation=0&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"912","content-type":"text/csv","date":"Sun, 08 Dec 2024 11:00:13 GMT","status":"HTTP/2 200 ","via":"1.1 b718e11bf71e8301f401cd088b516d24.cloudfront.net (CloudFront), 1.1 8be79ddbe59dfc1e97ef4d2546e2968e.cloudfront.net (CloudFront)","x-amz-apigw-id":"CeBZUEUwvHcEmMQ=","x-amz-cf-id":"JBUg6IeaIGLg1IoT9VmM2NN6oLibf1lWCAtQPUUtR_RwpLK1wUWbww==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"912","x-amzn-requestid":"b34ee63d-a079-45a0-9db1-71c9186c68e2","x-amzn-trace-id":"Root=1-67557c3b-2cdf386f6a019510599df21c","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.607","x-cache":"Miss from cloudfront","x-data-sources":"merra2,power","x-objects-time":"0.008","x-process-time":"0.15","x-service-time":"1.767"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\nPS MERRA-2 Surface Pressure (kPa) \r\nPSC MERRA-2 Corrected Atmospheric Pressure (Adjusted For Site Elevation) (kPa) \r\n-END HEADER-\r\nYEAR,DOY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M,PS,PSC\n1983,1,-24.36,-25.37,-22.7,92.44,1.93,69.23,101.38\n"}},"recorded_at":"2024-12-08 11:00:13 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/adjusted_wind_elevation.json b/tests/fixtures/adjusted_wind_elevation.json index f79398b2..386570b1 100644 --- a/tests/fixtures/adjusted_wind_elevation.json +++ b/tests/fixtures/adjusted_wind_elevation.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M%2CPS&community=ag&start=19830101&end=19830101&wind-elevation=300&wind-surface=vegtype_1&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"1024","content-type":"text/csv","date":"Sun, 04 Aug 2024 04:31:14 GMT","status":"HTTP/2 200 ","vary":"Accept-Encoding","via":"1.1 2deffda4b53adbb3d0691a446053c72a.cloudfront.net (CloudFront), 1.1 4574c0224474f0e2381f9ad25426b186.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92SvG6hvHcEjOA=","x-amz-cf-id":"GhJs8AucmeRKtrz_ZzcoFMoEkBSudPs2jmTgSAKBvoqbxWGIT9h_eA==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"1024","x-amzn-requestid":"20a19a08-77bb-4308-9871-23f4e201d25e","x-amzn-trace-id":"Root=1-66af0411-7e6769057ebef41c1e03c482","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.199","x-cache":"Miss from cloudfront","x-data-sources":"merra2,power","x-objects-time":"0.007","x-process-time":"0.13","x-service-time":"1.338"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\nPS MERRA-2 Surface Pressure (kPa) \r\nWSC MERRA-2 Corrected Wind Speed (Adjusted For Elevation) (m/s) \r\nMessage(s): \r\nCorrected Wind Speed has a custom surface implemented: 35-m broadleaf-evergreen trees (70% coverage) (vegtype_1) \r\n-END HEADER-\r\nYEAR,DOY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M,PS,WSC\n1983,1,-24.36,-25.37,-22.7,92.44,1.93,69.23,6.49\n"}},"recorded_at":"2024-08-04 04:31:14 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M%2CPS&community=ag&start=19830101&end=19830101&wind-elevation=300&wind-surface=vegtype_1&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"1024","content-type":"text/csv","date":"Sun, 08 Dec 2024 10:41:08 GMT","status":"HTTP/2 200 ","via":"1.1 66bae0e3cde8b3deaed6e98fc4cfda2e.cloudfront.net (CloudFront), 1.1 66bae0e3cde8b3deaed6e98fc4cfda2e.cloudfront.net (CloudFront)","x-amz-apigw-id":"Cd-mfHMaPHcEVeA=","x-amz-cf-id":"e4o7_SZDO78v_MHnB7ereAj54BCggaGQxHOhOKlPN-4f7I_GNDmIHA==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"1024","x-amzn-requestid":"cea5cbdd-074a-40fc-a664-97d453ec8fb7","x-amzn-trace-id":"Root=1-675577c2-44e5bce934bb50391850e4a9","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.527","x-cache":"Miss from cloudfront","x-data-sources":"power,merra2","x-objects-time":"0.015","x-process-time":"0.15","x-service-time":"1.694"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\nPS MERRA-2 Surface Pressure (kPa) \r\nWSC MERRA-2 Corrected Wind Speed (Adjusted For Elevation) (m/s) \r\nMessage(s): \r\nCorrected Wind Speed has a custom surface implemented: 35-m broadleaf-evergreen trees (70% coverage) (vegtype_1) \r\n-END HEADER-\r\nYEAR,DOY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M,PS,WSC\n1983,1,-24.36,-25.37,-22.7,92.44,1.93,69.23,6.49\n"}},"recorded_at":"2024-12-08 10:41:08 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/climatology_ag_point.json b/tests/fixtures/climatology_ag_point.json index ba86997b..e290a34d 100644 --- a/tests/fixtures/climatology_ag_point.json +++ b/tests/fixtures/climatology_ag_point.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/climatology/point?parameters=T2M&community=ag&longitude=-179.5&latitude=-89.5&format=csv&time-standard=LST&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Climatology_Climatology_2001_2020_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"663","content-type":"text/csv","date":"Sun, 04 Aug 2024 04:31:22 GMT","status":"HTTP/2 200 ","via":"1.1 4ae3e3a5c48b45cacd83dbaeabcd3076.cloudfront.net (CloudFront), 1.1 4574c0224474f0e2381f9ad25426b186.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92T4GhfvHcEU_A=","x-amz-cf-id":"WBzdlfjfpW2FccSGMo2wys4LLhqTJsi678EuZsY5IKvxm92LsDqqgw==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"663","x-amzn-requestid":"00fc9a8f-ed84-408f-8cec-6654b02db6f2","x-amzn-trace-id":"Root=1-66af0418-2bd41ba6149774ac7062a6fc","x-app-name":"climatology","x-app-version":"v2.5.9","x-archive-time":"1.271","x-cache":"Miss from cloudfront","x-data-sources":"merra2","x-objects-time":"0.009","x-process-time":"0.14","x-service-time":"1.422"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Climatology Climatologies \r\n20-year Meteorological and Solar Monthly & Annual Climatologies (January 2001 - December 2020) \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\n-END HEADER-\r\nPARAMETER,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,ANN\nT2M,-29.16,-40.68,-52.56,-57.06,-57.9,-59.46,-62.02,-61.4,-60.25,-52.29,-38.76,-28.66,-50.04\n"}},"recorded_at":"2024-08-04 04:31:22 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/climatology/point?parameters=T2M&community=ag&longitude=-179.5&latitude=-89.5&format=csv&time-standard=LST&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Climatology_Climatology_2001_2020_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"663","content-type":"text/csv","date":"Sun, 08 Dec 2024 11:00:19 GMT","status":"HTTP/2 200 ","via":"1.1 4a7e3364ba9929ca17ffba06a4295ec2.cloudfront.net (CloudFront), 1.1 8be79ddbe59dfc1e97ef4d2546e2968e.cloudfront.net (CloudFront)","x-amz-apigw-id":"CeBabHnEPHcEDQQ=","x-amz-cf-id":"DdiYjEq5sa1Ef4lcq7aBPIYPXAUs7CvTAp6GL6Ep9TCr2KzbPyqRIA==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"663","x-amzn-requestid":"1c77fae0-14ab-4af5-8391-3aa2da5e9053","x-amzn-trace-id":"Root=1-67557c42-7e716438434c44036ef2ffe9","x-app-name":"climatology","x-app-version":"v2.5.9","x-archive-time":"1.237","x-cache":"Miss from cloudfront","x-data-sources":"merra2","x-objects-time":"0.009","x-process-time":"0.14","x-service-time":"1.388"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Climatology Climatologies \r\n20-year Meteorological and Solar Monthly & Annual Climatologies (January 2001 - December 2020) \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\n-END HEADER-\r\nPARAMETER,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,ANN\nT2M,-29.16,-40.68,-52.56,-57.06,-57.9,-59.46,-62.02,-61.4,-60.25,-52.29,-38.76,-28.66,-50.04\n"}},"recorded_at":"2024-12-08 11:00:19 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/daily_ag_point.json b/tests/fixtures/daily_ag_point.json index 33b973c5..8cc242ea 100644 --- a/tests/fixtures/daily_ag_point.json +++ b/tests/fixtures/daily_ag_point.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M%2CPS&community=ag&start=19830101&end=19830101&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"812","content-type":"text/csv","date":"Sun, 04 Aug 2024 04:31:09 GMT","status":"HTTP/2 200 ","via":"1.1 8be79ddbe59dfc1e97ef4d2546e2968e.cloudfront.net (CloudFront), 1.1 4574c0224474f0e2381f9ad25426b186.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92R5HqSPHcEVqA=","x-amz-cf-id":"ycUAuyAf2cQ2UPrqFSchE59l9eXy9ZghwAYADYBGV3LsgFkVZmHfxw==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"812","x-amzn-requestid":"22035f04-6380-4f45-9b03-3b6e55cd746e","x-amzn-trace-id":"Root=1-66af040b-7a0c686248b8359202a9d453","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.843","x-cache":"Miss from cloudfront","x-data-sources":"power,merra2","x-objects-time":"0.025","x-process-time":"0.12","x-service-time":"1.989"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\nPS MERRA-2 Surface Pressure (kPa) \r\n-END HEADER-\r\nYEAR,DOY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M,PS\n1983,1,-24.36,-25.37,-22.7,92.44,1.93,69.23\n"}},"recorded_at":"2024-08-04 04:31:10 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M%2CPS&community=ag&start=19830101&end=19830101&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"812","content-type":"text/csv","date":"Sun, 08 Dec 2024 11:00:10 GMT","status":"HTTP/2 200 ","via":"1.1 66bae0e3cde8b3deaed6e98fc4cfda2e.cloudfront.net (CloudFront), 1.1 8be79ddbe59dfc1e97ef4d2546e2968e.cloudfront.net (CloudFront)","x-amz-apigw-id":"CeBY9EpOPHcEFfQ=","x-amz-cf-id":"SdCcQpKF9MDhqQ_qq6W-VKg-U3JnPYZZnJjsfL3S1fKYnrXRAxieRg==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"812","x-amzn-requestid":"59034273-6f6d-4de2-8376-33a88ce0fea9","x-amzn-trace-id":"Root=1-67557c38-0957ac03635221fa2c2ae7e7","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.243","x-cache":"Miss from cloudfront","x-data-sources":"power,merra2","x-objects-time":"0.023","x-process-time":"0.12","x-service-time":"1.388"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\nPS MERRA-2 Surface Pressure (kPa) \r\n-END HEADER-\r\nYEAR,DOY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M,PS\n1983,1,-24.36,-25.37,-22.7,92.44,1.93,69.23\n"}},"recorded_at":"2024-12-08 11:00:10 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/daily_sb_point_LST.json b/tests/fixtures/daily_sb_point_LST.json index 4ebfb4a1..431e6869 100644 --- a/tests/fixtures/daily_sb_point_LST.json +++ b/tests/fixtures/daily_sb_point_LST.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M&community=sb&start=19830101&end=19830101&longitude=-179.5&latitude=-89.5&format=csv&time-standard=LST&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_LST.csv","content-language":"en-US","content-length":"763","content-type":"text/csv","date":"Sun, 04 Aug 2024 04:31:17 GMT","status":"HTTP/2 200 ","via":"1.1 7881e15286e8135974281c95e26f0d34.cloudfront.net (CloudFront), 1.1 4574c0224474f0e2381f9ad25426b186.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92TSHCwvHcEGcw=","x-amz-cf-id":"UqGWGR8wD_367gqbMW95w53kHpzBOkGXTeolvs3Lx3BoXrudsv63lg==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"763","x-amzn-requestid":"b8b14f5b-8a07-448d-a89c-677e41084b86","x-amzn-trace-id":"Root=1-66af0414-671190247eb530bb4df113e6","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.101","x-cache":"Miss from cloudfront","x-data-sources":"merra2,power","x-objects-time":"0.022","x-process-time":"0.11","x-service-time":"1.234"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\n-END HEADER-\r\nYEAR,MO,DY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M\n1983,1,1,-25.24,-25.67,-24.88,94.25,2.32\n"}},"recorded_at":"2024-08-04 04:31:18 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M&community=sb&start=19830101&end=19830101&longitude=-179.5&latitude=-89.5&format=csv&time-standard=LST&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_LST.csv","content-language":"en-US","content-length":"763","content-type":"text/csv","date":"Sun, 08 Dec 2024 11:00:16 GMT","status":"HTTP/2 200 ","via":"1.1 ae4a6ab6272b232e72ab5eac7012f0c2.cloudfront.net (CloudFront), 1.1 8be79ddbe59dfc1e97ef4d2546e2968e.cloudfront.net (CloudFront)","x-amz-apigw-id":"CeBZ-EI6PHcEq0w=","x-amz-cf-id":"kbj6lh1R4sAN69R9wRCvQ3Hl7Qk7Fv0gZ030i6hL4dB39i3_wjcBhg==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"763","x-amzn-requestid":"80309479-069a-4200-9aea-955cc94655e8","x-amzn-trace-id":"Root=1-67557c3f-265631cb0399f4340f5c237e","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.206","x-cache":"Miss from cloudfront","x-data-sources":"power,merra2","x-objects-time":"0.008","x-process-time":"0.12","x-service-time":"1.335"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\n-END HEADER-\r\nYEAR,MO,DY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M\n1983,1,1,-25.24,-25.67,-24.88,94.25,2.32\n"}},"recorded_at":"2024-12-08 11:00:16 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/daily_sb_point_UTC.json b/tests/fixtures/daily_sb_point_UTC.json index 141bb14e..58ff8eb5 100644 --- a/tests/fixtures/daily_sb_point_UTC.json +++ b/tests/fixtures/daily_sb_point_UTC.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M&community=sb&start=19830101&end=19830101&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"762","content-type":"text/csv","date":"Sun, 04 Aug 2024 04:31:16 GMT","status":"HTTP/2 200 ","via":"1.1 94b573886362d1ce66fa5bb617a707b6.cloudfront.net (CloudFront), 1.1 4574c0224474f0e2381f9ad25426b186.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92TDFlmvHcEn6Q=","x-amz-cf-id":"VidZIL7FMpXh0VvD30BWbyKsVKcOB_8m5u593QpHlgDxR18c_F0w0w==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"762","x-amzn-requestid":"64f01b41-c65c-48c5-906f-8061e4531d3c","x-amzn-trace-id":"Root=1-66af0413-0a7a0f7930a075cd193104e3","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.025","x-cache":"Miss from cloudfront","x-data-sources":"merra2,power","x-objects-time":"0.006","x-process-time":"0.13","x-service-time":"1.162"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\n-END HEADER-\r\nYEAR,MO,DY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M\n1983,1,1,-24.36,-25.37,-22.7,92.44,1.93\n"}},"recorded_at":"2024-08-04 04:31:16 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CT2M_MIN%2CT2M_MAX%2CRH2M%2CWS10M&community=sb&start=19830101&end=19830101&longitude=-179.5&latitude=-89.5&format=csv&time-standard=UTC&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-disposition":"attachment; filename=POWER_Point_Daily_19830101_19830101_089d50S_0179d50W_UTC.csv","content-language":"en-US","content-length":"762","content-type":"text/csv","date":"Sun, 08 Dec 2024 11:00:14 GMT","status":"HTTP/2 200 ","via":"1.1 eb8e467efb1945f2730b0687e6227800.cloudfront.net (CloudFront), 1.1 8be79ddbe59dfc1e97ef4d2546e2968e.cloudfront.net (CloudFront)","x-amz-apigw-id":"CeBZqHigvHcEqlQ=","x-amz-cf-id":"Bhi2NQEfIM4a_6S8xPLr2d6ygHLWBY6o_8Qwj7jXZbfW7N0MyVhT4w==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"762","x-amzn-requestid":"181a5672-02b1-4d2a-8bb4-9ef962c6f47b","x-amzn-trace-id":"Root=1-67557c3d-669447142b4390e561e8f475","x-app-name":"daily","x-app-version":"v2.5.9","x-archive-time":"1.121","x-cache":"Miss from cloudfront","x-data-sources":"power,merra2","x-objects-time":"0.01","x-process-time":"0.13","x-service-time":"1.262"},"body":{"encoding":"","file":false,"string":"-BEGIN HEADER-\r\nNASA/POWER CERES/MERRA2 Native Resolution Daily Data \r\nDates (month/day/year): 01/01/1983 through 01/01/1983 \r\nLocation: Latitude -89.5 Longitude -179.5 \r\nElevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 2885.03 meters\r\nThe value for missing source data that cannot be computed or is outside of the sources availability range: -999 \r\nParameter(s): \r\nT2M MERRA-2 Temperature at 2 Meters (C) \r\nT2M_MIN MERRA-2 Temperature at 2 Meters Minimum (C) \r\nT2M_MAX MERRA-2 Temperature at 2 Meters Maximum (C) \r\nRH2M MERRA-2 Relative Humidity at 2 Meters (%) \r\nWS10M MERRA-2 Wind Speed at 10 Meters (m/s) \r\n-END HEADER-\r\nYEAR,MO,DY,T2M,T2M_MIN,T2M_MAX,RH2M,WS10M\n1983,1,1,-24.36,-25.37,-22.7,92.44,1.93\n"}},"recorded_at":"2024-12-08 11:00:14 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/query_groupings.json b/tests/fixtures/query_groupings.json index e9a39da3..4d614578 100644 --- a/tests/fixtures/query_groupings.json +++ b/tests/fixtures/query_groupings.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/system/groupings","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"111516","content-type":"application/json","date":"Sun, 04 Aug 2024 04:31:07 GMT","etag":"b1b413f97eb7603a3610f148ee692e05","last-modified":"Fri, 22 Mar 2024 20:08:36 GMT","status":"HTTP/2 200 ","vary":"Accept-Encoding","via":"1.1 a701af6388ab41a625a2219cf1e43490.cloudfront.net (CloudFront), 1.1 94b573886362d1ce66fa5bb617a707b6.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92R5FLVPHcEtGA=","x-amz-cf-id":"fMn1RFtwCO9jhF0Qtr73K1KB4JIP3ExV5ysOrYsLr-b2LMtCe3wRzw==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"111516","x-amzn-requestid":"d9bdb948-b61e-46e9-8e95-b3015a781746","x-amzn-trace-id":"Root=1-66af040b-4b1849dc6fdf3dce66faee1e","x-app-name":"manager","x-app-version":"v2.5.6","x-cache":"Miss from cloudfront","x-service-time":"0.02"},"body":{"encoding":"","file":false,"string":"{\r\n \"groups\": {\r\n \"AG\": {\r\n \"Hourly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Daily\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Soil Properties\": [\r\n [\r\n \"Surface Soil Wetness (surface to 5 cm below)\",\r\n \"GWETTOP\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Root Zone Soil Wetness (surface to 100 cm below)\",\r\n \"GWETROOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Profile Soil Moisture (surface to bedrock)\",\r\n \"GWETPROF\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Monthly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Soil Properties\": [\r\n [\r\n \"Surface Soil Wetness (surface to 5 cm below)\",\r\n \"GWETTOP\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Root Zone Soil Wetness (surface to 100 cm below)\",\r\n \"GWETROOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Profile Soil Moisture (surface to bedrock)\",\r\n \"GWETPROF\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Maximum\",\r\n \"TS_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Minimum\",\r\n \"TS_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Frost Days\",\r\n \"FROST_DAYS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Soil Properties\": [\r\n [\r\n \"Surface Soil Wetness (surface to 5 cm below)\",\r\n \"GWETTOP\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Root Zone Soil Wetness (surface to 100 cm below)\",\r\n \"GWETROOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Profile Soil Moisture (surface to bedrock)\",\r\n \"GWETPROF\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n },\r\n \"SB\": {\r\n \"Hourly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Integrated Solar Zenith Angle\",\r\n \"SZA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Daily\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"DOE/ASHRAE Climate Building\": [\r\n [\r\n \"Cooling Degree Days Above 0 C\",\r\n \"CDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 10 C\",\r\n \"CDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 18.3 C\",\r\n \"CDD18_3\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 0 C\",\r\n \"HDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 10 C\",\r\n \"HDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 18.3 C\",\r\n \"HDD18_3\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Monthly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"DOE/ASHRAE Climate Building\": [\r\n [\r\n \"Cooling Degree Days Above 0 C\",\r\n \"CDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 10 C\",\r\n \"CDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 18.3 C\",\r\n \"CDD18_3\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 0 C\",\r\n \"HDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 10 C\",\r\n \"HDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 18.3 C\",\r\n \"HDD18_3\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance at GMT Times\",\r\n \"ALLSKY_SFC_SW_DWN_HR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DNI_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DNI_Min\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DIFF_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DIFF_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Solar Noon Time for Climatological Month\",\r\n \"SG_NOON\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Daylight Hours for Climatological Month\",\r\n \"SG_DAY_HOURS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Maximum\",\r\n \"TS_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Minimum\",\r\n \"TS_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Frost Days\",\r\n \"FROST_DAYS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"DOE/ASHRAE Climate Building\": [\r\n [\r\n \"Cooling Degree Days Above 0 C\",\r\n \"CDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 10 C\",\r\n \"CDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 18.3 C\",\r\n \"CDD18_3\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 0 C\",\r\n \"HDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 10 C\",\r\n \"HDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 18.3 C\",\r\n \"HDD18_3\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Diurnal Cloud Amounts\": [\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount at GMT Times\",\r\n \"CLOUD_AMT_HR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Energy-Storage System Sizing\": [\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 1-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 3-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 7-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 14-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 21-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive Month Period\",\r\n \"EQUIV_NO_SUN_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 1-day Period\",\r\n \"INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 3-day Period\",\r\n \"INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 7-day Period\",\r\n \"INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 14-day Period\",\r\n \"INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 21-day Period\",\r\n \"INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive Month Period\",\r\n \"INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 1-day Period\",\r\n \"INSOL_CONSEC_01_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 3-day Period\",\r\n \"INSOL_CONSEC_03_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 7-day Period\",\r\n \"INSOL_CONSEC_07_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 14-day Period\",\r\n \"INSOL_CONSEC_14_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 21-day Period\",\r\n \"INSOL_CONSEC_21_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive Month Period\",\r\n \"INSOL_CONSEC_MONTH_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 1-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 3-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 7-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 14-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 21-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive Month Period\",\r\n \"SOLAR_DEFICITS_CONSEC_MONTH\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n },\r\n \"RE\": {\r\n \"Hourly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Integrated Solar Zenith Angle\",\r\n \"SZA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Daily\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance (thermal infrared)\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Solar Cooking\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Monthly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Tilted PV Panels\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Solar Cooking\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance at GMT Times\",\r\n \"ALLSKY_SFC_SW_DWN_HR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Tilted PV Panels\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Direct Normal Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DNI_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Direct Normal Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DNI_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DIFF_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DIFF_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance for Equator Facing Tilted Surfaces (Set of Surfaces)\",\r\n \"SI_EF_TILTED_SURFACE\",\r\n [\r\n \"Line\",\r\n \"Histogram\"\r\n ],\r\n [\r\n \"Regional\",\r\n \"Global\"\r\n ]\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Solar Cooking\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Midday Insolation Incident\",\r\n \"MIDDAY_INSOL\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Solar Geometry\": [\r\n [\r\n \"Average Solar Noon Time for Climatological Month\",\r\n \"SG_NOON\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Sunset Hour Angle for Climatological Month\",\r\n \"SG_HR_SET_ANG\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Cosine Solar Zenith Angle At Mid-Time Between Sunrise And Solar Noon for Climatological Month\",\r\n \"SG_MID_COZ_ZEN_ANG\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Daylight Average Of Hourly Cosine Solar Zenith Angles for Climatological Month\",\r\n \"SG_DAY_COZ_ZEN_AVG\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Hourly Solar Angles Relative To The Horizon for Climatological Month\",\r\n \"SG_HRZ_HR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Solar Angle Relative To The Horizon for Climatological Month\",\r\n \"SG_HRZ_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Daylight Hours\",\r\n \"SG_DAY_HOURS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Declination for Climatological Month\",\r\n \"SG_DEC\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Maximum\",\r\n \"TS_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Minimum\",\r\n \"TS_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Frost Days\",\r\n \"FROST_DAYS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Diurnal Cloud Amounts\": [\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount at GMT Times\",\r\n \"CLOUD_AMT_HR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Energy-Storage System Sizing\": [\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 1-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 3-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 7-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 14-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 21-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive Month Period\",\r\n \"EQUIV_NO_SUN_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 1-day Period\",\r\n \"INSOL_CONSEC_01_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 3-day Period\",\r\n \"INSOL_CONSEC_03_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 7-day Period\",\r\n \"INSOL_CONSEC_07_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 14-day Period\",\r\n \"INSOL_CONSEC_14_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 21-day Period\",\r\n \"INSOL_CONSEC_21_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive Month Period\",\r\n \"INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 1-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 3-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 7-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 14-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 21-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive Month Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 1-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 3-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 7-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 14-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 21-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive Month Period\",\r\n \"SOLAR_DEFICITS_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 1-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 3-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 7-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 14-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 21-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive Month Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 1-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 3-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 7-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 14-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 21-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive Month Period\",\r\n \"SURPLUS_INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Solar Deficit\",\r\n \"MAX_SOLAR_DEFICIT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Equivalent No Sun Days\",\r\n \"MAX_EQUIV_NO_SUN_DAYS\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n }\r\n }\r\n}"}},"recorded_at":"2024-08-04 04:31:08 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/system/groupings","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"111516","content-type":"application/json","date":"Sun, 08 Dec 2024 10:36:33 GMT","etag":"b1b413f97eb7603a3610f148ee692e05","last-modified":"Fri, 22 Mar 2024 20:08:36 GMT","status":"HTTP/2 200 ","via":"1.1 7eecfb820779d04c823d58ecbcf8431c.cloudfront.net (CloudFront), 1.1 321858d4742e069b01ae7a24fe470d96.cloudfront.net (CloudFront)","x-amz-apigw-id":"Cd97wHv7vHcEqlQ=","x-amz-cf-id":"MQn2eEEaNUQUGZcoX8NahkmiulLW6MKXQixepoEjM42K_4omw38Rug==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"111516","x-amzn-requestid":"a8a2d12a-5f59-449a-8116-8395191cd2ff","x-amzn-trace-id":"Root=1-675576b1-1d3fd32b6fb2622c576ddd2a","x-app-name":"manager","x-app-version":"v2.5.22","x-cache":"Miss from cloudfront","x-service-time":"0.018"},"body":{"encoding":"","file":false,"string":"{\r\n \"groups\": {\r\n \"AG\": {\r\n \"Hourly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Daily\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Soil Properties\": [\r\n [\r\n \"Surface Soil Wetness (surface to 5 cm below)\",\r\n \"GWETTOP\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Root Zone Soil Wetness (surface to 100 cm below)\",\r\n \"GWETROOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Profile Soil Moisture (surface to bedrock)\",\r\n \"GWETPROF\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Monthly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Soil Properties\": [\r\n [\r\n \"Surface Soil Wetness (surface to 5 cm below)\",\r\n \"GWETTOP\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Root Zone Soil Wetness (surface to 100 cm below)\",\r\n \"GWETROOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Profile Soil Moisture (surface to bedrock)\",\r\n \"GWETPROF\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Maximum\",\r\n \"TS_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Minimum\",\r\n \"TS_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Frost Days\",\r\n \"FROST_DAYS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 2 Meters\",\r\n \"WD2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Soil Properties\": [\r\n [\r\n \"Surface Soil Wetness (surface to 5 cm below)\",\r\n \"GWETTOP\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Root Zone Soil Wetness (surface to 100 cm below)\",\r\n \"GWETROOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Profile Soil Moisture (surface to bedrock)\",\r\n \"GWETPROF\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n },\r\n \"SB\": {\r\n \"Hourly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Integrated Solar Zenith Angle\",\r\n \"SZA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Daily\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"DOE/ASHRAE Climate Building\": [\r\n [\r\n \"Cooling Degree Days Above 0 C\",\r\n \"CDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 10 C\",\r\n \"CDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 18.3 C\",\r\n \"CDD18_3\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 0 C\",\r\n \"HDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 10 C\",\r\n \"HDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 18.3 C\",\r\n \"HDD18_3\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Monthly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"DOE/ASHRAE Climate Building\": [\r\n [\r\n \"Cooling Degree Days Above 0 C\",\r\n \"CDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 10 C\",\r\n \"CDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 18.3 C\",\r\n \"CDD18_3\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 0 C\",\r\n \"HDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 10 C\",\r\n \"HDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 18.3 C\",\r\n \"HDD18_3\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance at GMT Times\",\r\n \"ALLSKY_SFC_SW_DWN_HR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DNI_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DNI_Min\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DIFF_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DIFF_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Solar Noon Time for Climatological Month\",\r\n \"SG_NOON\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Daylight Hours for Climatological Month\",\r\n \"SG_DAY_HOURS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Maximum\",\r\n \"TS_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Minimum\",\r\n \"TS_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Frost Days\",\r\n \"FROST_DAYS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"DOE/ASHRAE Climate Building\": [\r\n [\r\n \"Cooling Degree Days Above 0 C\",\r\n \"CDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 10 C\",\r\n \"CDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cooling Degree Days Above 18.3 C\",\r\n \"CDD18_3\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 0 C\",\r\n \"HDD0\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 10 C\",\r\n \"HDD10\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Heating Degree Days Below 18.3 C\",\r\n \"HDD18_3\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Diurnal Cloud Amounts\": [\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount at GMT Times\",\r\n \"CLOUD_AMT_HR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Energy-Storage System Sizing\": [\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 1-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 3-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 7-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 14-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 21-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive Month Period\",\r\n \"EQUIV_NO_SUN_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 1-day Period\",\r\n \"INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 3-day Period\",\r\n \"INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 7-day Period\",\r\n \"INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 14-day Period\",\r\n \"INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive 21-day Period\",\r\n \"INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Insolation Over A Consecutive Month Period\",\r\n \"INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 1-day Period\",\r\n \"INSOL_CONSEC_01_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 3-day Period\",\r\n \"INSOL_CONSEC_03_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 7-day Period\",\r\n \"INSOL_CONSEC_07_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 14-day Period\",\r\n \"INSOL_CONSEC_14_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive 21-day Period\",\r\n \"INSOL_CONSEC_21_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Over A Consecutive Month Period\",\r\n \"INSOL_CONSEC_MONTH_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 1-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 3-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 7-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 14-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 21-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive Month Period\",\r\n \"SOLAR_DEFICITS_CONSEC_MONTH\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n },\r\n \"RE\": {\r\n \"Hourly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Integrated Solar Zenith Angle\",\r\n \"SZA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Daily\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance (thermal infrared)\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Solar Cooking\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Monthly\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Tilted PV Panels\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Solar Cooking\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ]\r\n },\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance at GMT Times\",\r\n \"ALLSKY_SFC_SW_DWN_HR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Photosynthetically Active Radiation (PAR) Total\",\r\n \"CLRSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVA Irradiance\",\r\n \"ALLSKY_SFC_UVA\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UVB Irradiance\",\r\n \"ALLSKY_SFC_UVB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface UV Index\",\r\n \"ALLSKY_SFC_UV_INDEX\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Tilted PV Panels\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Direct Normal Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DNI_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Direct Normal Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DNI_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Maximum\",\r\n \"ALLSKY_SFC_SW_DIFF_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance Minimum\",\r\n \"ALLSKY_SFC_SW_DIFF_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Insolation Clearness Index\",\r\n \"ALLSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Insolation Clearness Index\",\r\n \"CLRSKY_KT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance for Equator Facing Tilted Surfaces (Set of Surfaces)\",\r\n \"SI_EF_TILTED_SURFACE\",\r\n [\r\n \"Line\",\r\n \"Histogram\"\r\n ],\r\n [\r\n \"Regional\",\r\n \"Global\"\r\n ]\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Parameters for Solar Cooking\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Midday Insolation Incident\",\r\n \"MIDDAY_INSOL\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Solar Geometry\": [\r\n [\r\n \"Average Solar Noon Time for Climatological Month\",\r\n \"SG_NOON\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Sunset Hour Angle for Climatological Month\",\r\n \"SG_HR_SET_ANG\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Cosine Solar Zenith Angle At Mid-Time Between Sunrise And Solar Noon for Climatological Month\",\r\n \"SG_MID_COZ_ZEN_ANG\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Daylight Average Of Hourly Cosine Solar Zenith Angles for Climatological Month\",\r\n \"SG_DAY_COZ_ZEN_AVG\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Hourly Solar Angles Relative To The Horizon for Climatological Month\",\r\n \"SG_HRZ_HR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Solar Angle Relative To The Horizon for Climatological Month\",\r\n \"SG_HRZ_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Daylight Hours\",\r\n \"SG_DAY_HOURS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Average Declination for Climatological Month\",\r\n \"SG_DEC\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperature/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Maximum\",\r\n \"TS_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature Minimum\",\r\n \"TS_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Frost Days\",\r\n \"FROST_DAYS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Average\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation Sum Average\",\r\n \"PRECTOTCORR_SUM\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters\",\r\n \"WS50M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 10 Meters\",\r\n \"WD10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Maximum\",\r\n \"WS50M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Minimum\",\r\n \"WS50M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 50 Meters Range\",\r\n \"WS50M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Direction at 50 Meters\",\r\n \"WD50M\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Diurnal Cloud Amounts\": [\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount at GMT Times\",\r\n \"CLOUD_AMT_HR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Energy-Storage System Sizing\": [\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 1-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 3-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 7-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 14-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive 21-day Period\",\r\n \"EQUIV_NO_SUN_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Equivalent No-Sun Days Over A Consecutive Month Period\",\r\n \"EQUIV_NO_SUN_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 1-day Period\",\r\n \"INSOL_CONSEC_01_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 3-day Period\",\r\n \"INSOL_CONSEC_03_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 7-day Period\",\r\n \"INSOL_CONSEC_07_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 14-day Period\",\r\n \"INSOL_CONSEC_14_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive 21-day Period\",\r\n \"INSOL_CONSEC_21_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Insolation Percentage Over A Consecutive Month Period\",\r\n \"INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 1-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 3-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 7-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 14-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive 21-day Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Minimum Available Insolation Over A Consecutive Month Period\",\r\n \"MIN_AVAIL_INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 1-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 3-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 7-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 14-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive 21-day Period\",\r\n \"SOLAR_DEFICITS_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Solar Irradiance Deficit Over A Consecutive Month Period\",\r\n \"SOLAR_DEFICITS_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 1-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 3-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 7-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 14-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive 21-day Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Avialable Insolation Over A Consecutive Month Period\",\r\n \"MAX_AVAIL_INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 1-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_01\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 3-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_03\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 7-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_07\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 14-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_14\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive 21-day Period\",\r\n \"SURPLUS_INSOL_CONSEC_21\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Surplus Insolation Over A Consecutive Month Period\",\r\n \"SURPLUS_INSOL_CONSEC_MONTH\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Solar Deficit\",\r\n \"MAX_SOLAR_DEFICIT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Maximum Equivalent No Sun Days\",\r\n \"MAX_EQUIV_NO_SUN_DAYS\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n }\r\n }\r\n}"}},"recorded_at":"2024-12-08 10:36:34 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/query_groupings_global.json b/tests/fixtures/query_groupings_global.json index 07bda735..bce66783 100644 --- a/tests/fixtures/query_groupings_global.json +++ b/tests/fixtures/query_groupings_global.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/system/groupings/global","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"4528","content-type":"application/json","date":"Sun, 04 Aug 2024 04:31:08 GMT","etag":"c3dddd085e958f819a2f5fddc40e57c1","last-modified":"Fri, 22 Mar 2024 20:08:36 GMT","status":"HTTP/2 200 ","vary":"Accept-Encoding","via":"1.1 7d12790a96743b0a0b6a0cb36a1a6642.cloudfront.net (CloudFront), 1.1 94b573886362d1ce66fa5bb617a707b6.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92SDFy9PHcEWdg=","x-amz-cf-id":"ZzdZ01Ep8x3y8mgcL5tTb1G2fKC-YexKniaRaMxUFjoIaeAEqZ636g==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"4528","x-amzn-requestid":"76d36a68-c0b7-4a3b-86cf-60d8dc49d0e6","x-amzn-trace-id":"Root=1-66af040c-7d7dea80561c099917383864","x-app-name":"manager","x-app-version":"v2.5.6","x-cache":"Miss from cloudfront","x-service-time":"0.002"},"body":{"encoding":"","file":false,"string":"{\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface PAR Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n}"}},"recorded_at":"2024-08-04 04:31:08 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/system/groupings/global","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"4528","content-type":"application/json","date":"Sun, 08 Dec 2024 10:36:34 GMT","etag":"c3dddd085e958f819a2f5fddc40e57c1","last-modified":"Fri, 22 Mar 2024 20:08:36 GMT","status":"HTTP/2 200 ","via":"1.1 f71c31e99f3931658ed7adc18e1dc202.cloudfront.net (CloudFront), 1.1 321858d4742e069b01ae7a24fe470d96.cloudfront.net (CloudFront)","x-amz-apigw-id":"Cd979Gg6vHcEbzA=","x-amz-cf-id":"8tZyQ0jq61gu_zXetaBXTRYm1F75kFWZWeuij_5qNnpJeuCgDf1hJg==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"4528","x-amzn-requestid":"18bfd70e-23f2-44fd-8dc3-b3fced834544","x-amzn-trace-id":"Root=1-675576b2-6fcc522c19c3819d6014aa50","x-app-name":"manager","x-app-version":"v2.5.22","x-cache":"Miss from cloudfront","x-service-time":"0.002"},"body":{"encoding":"","file":false,"string":"{\r\n \"Climatology\": {\r\n \"Solar Fluxes and Related\": [\r\n [\r\n \"All Sky Surface Shortwave Downward Irradiance\",\r\n \"ALLSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface Shortwave Downward Irradiance\",\r\n \"CLRSKY_SFC_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Downward Direct Normal Irradiance\",\r\n \"ALLSKY_SFC_SW_DNI\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Shortwave Diffuse Irradiance\",\r\n \"ALLSKY_SFC_SW_DIFF\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Clear Sky Surface PAR Total\",\r\n \"ALLSKY_SFC_PAR_TOT\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Albedo\",\r\n \"ALLSKY_SRF_ALB\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Top-Of-Atmosphere Shortwave Downward Irradiance\",\r\n \"TOA_SW_DWN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Cloud Amount\",\r\n \"CLOUD_AMT\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Temperatures/Thermal IR Flux\": [\r\n [\r\n \"Temperature at 2 Meters\",\r\n \"T2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Dew/Frost Point at 2 Meters\",\r\n \"T2MDEW\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wet Bulb Temperature at 2 Meters\",\r\n \"T2MWET\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Earth Skin Temperature\",\r\n \"TS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Range\",\r\n \"T2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Maximum\",\r\n \"T2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Temperature at 2 Meters Minimum\",\r\n \"T2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"All Sky Surface Longwave Downward Irradiance\",\r\n \"ALLSKY_SFC_LW_DWN\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Humidity/Precipitation\": [\r\n [\r\n \"Specific Humidity at 2 Meters\",\r\n \"QV2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Relative Humidity at 2 Meters\",\r\n \"RH2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Precipitation\",\r\n \"PRECTOTCORR\",\r\n [],\r\n []\r\n ]\r\n ],\r\n \"Wind/Pressure\": [\r\n [\r\n \"Surface Pressure\",\r\n \"PS\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters\",\r\n \"WS2M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Maximum\",\r\n \"WS2M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Minimum\",\r\n \"WS2M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 2 Meters Range\",\r\n \"WS2M_RANGE\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters\",\r\n \"WS10M\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Maximum\",\r\n \"WS10M_MAX\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Minimum\",\r\n \"WS10M_MIN\",\r\n [],\r\n []\r\n ],\r\n [\r\n \"Wind Speed at 10 Meters Range\",\r\n \"WS10M_RANGE\",\r\n [],\r\n []\r\n ]\r\n ]\r\n }\r\n}"}},"recorded_at":"2024-12-08 10:36:34 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/query_parameters_comm&temporal_api.json b/tests/fixtures/query_parameters_comm&temporal_api.json index dabfdded..f0805f9f 100644 --- a/tests/fixtures/query_parameters_comm&temporal_api.json +++ b/tests/fixtures/query_parameters_comm&temporal_api.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/parameters?community=AG¶meters=T2M&temporal=DAILY&metadata=FALSE&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"260","content-type":"application/json","date":"Sun, 04 Aug 2024 04:31:07 GMT","status":"HTTP/2 200 ","via":"1.1 a701af6388ab41a625a2219cf1e43490.cloudfront.net (CloudFront), 1.1 72d31124659406c0dd03444b04403c16.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92R5G0mvHcEjkQ=","x-amz-cf-id":"w8QszhOEvawIqgYo_5-EaDfnO4mMHO18lI6vKzSnqCZFFqzwaCCrDQ==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"260","x-amzn-requestid":"e5a0fd1e-6a4d-48b4-a417-54bd138dc839","x-amzn-trace-id":"Root=1-66af040b-28d6b83f34cc118e68420c15","x-app-name":"manager","x-app-version":"v2.5.6","x-cache":"Miss from cloudfront","x-service-time":"0.018"},"body":{"encoding":"","file":false,"string":"{\"T2M\":{\"type\":\"METEOROLOGY\",\"temporal\":\"DAILY\",\"source\":\"MERRA2\",\"community\":\"AG\",\"calculated\":false,\"inputs\":null,\"units\":\"C\",\"name\":\"Temperature at 2 Meters\",\"definition\":\"The average air (dry bulb) temperature at 2 meters above the surface of the earth.\"}}"}},"recorded_at":"2024-08-04 04:31:08 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/parameters?community=AG¶meters=T2M&temporal=DAILY&metadata=FALSE&user=nasapower4r","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"260","content-type":"application/json","date":"Sun, 08 Dec 2024 10:36:33 GMT","status":"HTTP/2 200 ","via":"1.1 72d31124659406c0dd03444b04403c16.cloudfront.net (CloudFront), 1.1 06825f2d85189bd8f162987eeb0f3b86.cloudfront.net (CloudFront)","x-amz-apigw-id":"Cd97wFNOvHcEnzQ=","x-amz-cf-id":"ITl2oI6kh0YTkq_wWlc6d9aGKEqBZkD5zlhRgBN9OpV5BVYZp_4iXQ==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"260","x-amzn-requestid":"a5215630-067d-4269-98f0-37dd63bc37a0","x-amzn-trace-id":"Root=1-675576b1-3618aabe307396234c214b1f","x-app-name":"manager","x-app-version":"v2.5.22","x-cache":"Miss from cloudfront","x-service-time":"0.023"},"body":{"encoding":"","file":false,"string":"{\"T2M\":{\"type\":\"METEOROLOGY\",\"temporal\":\"DAILY\",\"source\":\"MERRA2\",\"community\":\"AG\",\"calculated\":false,\"inputs\":null,\"units\":\"C\",\"name\":\"Temperature at 2 Meters\",\"definition\":\"The average air (dry bulb) temperature at 2 meters above the surface of the earth.\"}}"}},"recorded_at":"2024-12-08 10:36:33 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/query_surfaces_all.json b/tests/fixtures/query_surfaces_all.json index 06f27f65..01e7967d 100644 --- a/tests/fixtures/query_surfaces_all.json +++ b/tests/fixtures/query_surfaces_all.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/surface","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"5001","content-type":"application/json","date":"Sun, 04 Aug 2024 04:31:09 GMT","status":"HTTP/2 200 ","vary":"Accept-Encoding","via":"1.1 a701af6388ab41a625a2219cf1e43490.cloudfront.net (CloudFront), 1.1 7eecfb820779d04c823d58ecbcf8431c.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92SFEZ6vHcEGKQ=","x-amz-cf-id":"x-QVyZKE7fKYl8AF4W5eUBKSj3wf3S6oPkyFZaTmABx-ZxTWlXLPRA==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"5001","x-amzn-requestid":"721bf23b-5127-495a-a16e-1d6c18e4cb82","x-amzn-trace-id":"Root=1-66af040d-4b01f2da50fa1fef2f5ad743","x-app-name":"manager","x-app-version":"v2.5.6","x-cache":"Miss from cloudfront","x-service-time":"0.001"},"body":{"encoding":"","file":false,"string":"{\"vegtype_1\":{\"Long_Name\":\"35-m broadleaf-evergreen trees (70% coverage)\",\"IGBP_Type\":\"2,13\",\"Veg_Type\":\"1\",\"Roughness\":{\"January\":0.47,\"February\":0.47,\"March\":0.47,\"April\":0.47,\"May\":0.47,\"June\":0.47,\"July\":0.47,\"August\":0.47,\"September\":0.47,\"October\":0.47,\"November\":0.47,\"December\":0.47,\"Annual\":0.47}},\"vegtype_2\":{\"Long_Name\":\"20-m broadleaf-deciduous trees (75% coverage)\",\"IGBP_Type\":\"\",\"Veg_Type\":\"2\",\"Roughness\":{\"January\":0.34,\"February\":0.35,\"March\":0.36,\"April\":0.37,\"May\":0.39,\"June\":0.42,\"July\":0.44,\"August\":0.42,\"September\":0.39,\"October\":0.37,\"November\":0.36,\"December\":0.35,\"Annual\":0.38}},\"vegtype_3\":{\"Long_Name\":\"20-m broadleaf and needleleaf trees (75% coverage)\",\"IGBP_Type\":\"\",\"Veg_Type\":\"3\",\"Roughness\":{\"January\":0.51,\"February\":0.47,\"March\":0.43,\"April\":0.41,\"May\":0.39,\"June\":0.38,\"July\":0.38,\"August\":0.41,\"September\":0.43,\"October\":0.46,\"November\":0.48,\"December\":0.5,\"Annual\":0.44}},\"vegtype_4\":{\"Long_Name\":\"17-m needleleaf-evergreen trees (75% coverage)\",\"IGBP_Type\":\"1,5\",\"Veg_Type\":\"4\",\"Roughness\":{\"January\":0.43,\"February\":0.39,\"March\":0.36,\"April\":0.34,\"May\":0.35,\"June\":0.36,\"July\":0.37,\"August\":0.37,\"September\":0.37,\"October\":0.38,\"November\":0.39,\"December\":0.41,\"Annual\":0.38}},\"vegtype_5\":{\"Long_Name\":\"14-m needleleaf-deciduous trees (50% coverage)\",\"IGBP_Type\":\"3\",\"Veg_Type\":\"5\",\"Roughness\":{\"January\":0.41,\"February\":0.39,\"March\":0.37,\"April\":0.35,\"May\":0.35,\"June\":0.34,\"July\":0.34,\"August\":0.38,\"September\":0.42,\"October\":0.44,\"November\":0.44,\"December\":0.43,\"Annual\":0.39}},\"vegtype_6\":{\"Long_Name\":\"Savanna:18-m broadleaf trees (30%) & groundcover\",\"IGBP_Type\":\"4,8,9,11\",\"Veg_Type\":\"6\",\"Roughness\":{\"January\":0.41,\"February\":0.41,\"March\":0.41,\"April\":0.41,\"May\":0.41,\"June\":0.41,\"July\":0.41,\"August\":0.41,\"September\":0.41,\"October\":0.41,\"November\":0.41,\"December\":0.41,\"Annual\":0.41}},\"vegtype_7\":{\"Long_Name\":\"0.6-m perennial groundcover (100%)\",\"IGBP_Type\":\"6,7,10,12,16,18 \",\"Veg_Type\":\"7\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_8\":{\"Long_Name\":\"0.5-m broadleaf shrubs (variable %) & groundcover\",\"IGBP_Type\":\"\",\"Veg_Type\":\"8\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_9\":{\"Long_Name\":\"0.5-m broadleaf shrubs (10%) with bare soil\",\"IGBP_Type\":\"\",\"Veg_Type\":\"9\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_10\":{\"Long_Name\":\"Tundra: 0.6-m trees/shrubs (variable %) & groundcover\",\"IGBP_Type\":\"\",\"Veg_Type\":\"10\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_11\":{\"Long_Name\":\"Rough bare soil\",\"IGBP_Type\":\"\",\"Veg_Type\":\"11\",\"Roughness\":{\"January\":0.22,\"February\":0.22,\"March\":0.22,\"April\":0.22,\"May\":0.22,\"June\":0.22,\"July\":0.22,\"August\":0.22,\"September\":0.22,\"October\":0.22,\"November\":0.22,\"December\":0.22,\"Annual\":0.22}},\"vegtype_12\":{\"Long_Name\":\"Crop: 20-m broadleaf-deciduous trees (10%) & wheat\",\"IGBP_Type\":\"14\",\"Veg_Type\":\"12\",\"Roughness\":{\"January\":0.28,\"February\":0.3,\"March\":0.23,\"April\":0.35,\"May\":0.35,\"June\":0.35,\"July\":0.35,\"August\":0.35,\"September\":0.35,\"October\":0.33,\"November\":0.31,\"December\":0.29,\"Annual\":0.32}},\"vegtype_20\":{\"Long_Name\":\"Rough glacial snow/ice\",\"IGBP_Type\":\"15\",\"Veg_Type\":\"20\",\"Roughness\":{\"January\":0.35,\"February\":0.33,\"March\":0.3,\"April\":0.28,\"May\":0.28,\"June\":0.28,\"July\":0.28,\"August\":0.28,\"September\":0.3,\"October\":0.33,\"November\":0.34,\"December\":0.35,\"Annual\":0.31}},\"seaice\":{\"Long_Name\":\"Smooth sea ice\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.18,\"February\":0.15,\"March\":0.12,\"April\":0.09,\"May\":0.09,\"June\":0.09,\"July\":0.09,\"August\":0.12,\"September\":0.15,\"October\":0.19,\"November\":0.19,\"December\":0.19,\"Annual\":0.14}},\"openwater\":{\"Long_Name\":\"Open water\",\"IGBP_Type\":\"17\",\"Veg_Type\":\"0\",\"Roughness\":{\"January\":0.1,\"February\":0.1,\"March\":0.1,\"April\":0.1,\"May\":0.1,\"June\":0.1,\"July\":0.1,\"August\":0.1,\"September\":0.1,\"October\":0.1,\"November\":0.1,\"December\":0.1,\"Annual\":0.1}},\"airportice\":{\"Long_Name\":\"Airport: flat ice/snow\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.1,\"February\":0.1,\"March\":0.1,\"April\":0.1,\"May\":0.1,\"June\":0.1,\"July\":0.1,\"August\":0.1,\"September\":0.1,\"October\":0.1,\"November\":0.1,\"December\":0.1,\"Annual\":0.1}},\"airportgrass\":{\"Long_Name\":\"Airport: flat rough grass\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.15,\"February\":0.15,\"March\":0.15,\"April\":0.15,\"May\":0.15,\"June\":0.15,\"July\":0.15,\"August\":0.15,\"September\":0.15,\"October\":0.15,\"November\":0.15,\"December\":0.15,\"Annual\":0.15}}}"}},"recorded_at":"2024-08-04 04:31:09 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/surface","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"5001","content-type":"application/json","date":"Sun, 08 Dec 2024 10:36:33 GMT","status":"HTTP/2 200 ","via":"1.1 4a7e3364ba9929ca17ffba06a4295ec2.cloudfront.net (CloudFront), 1.1 bb4f2c03a7a099ebf06c70ae96460dc4.cloudfront.net (CloudFront)","x-amz-apigw-id":"Cd973HecvHcEjvA=","x-amz-cf-id":"uqQ_G3LoKaNMSPS1nxBHSPPxf-FX4hixoku7xu3djYPiU_O_kNCYWQ==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"5001","x-amzn-requestid":"04c90827-e9ed-4b99-b480-76232e82dbdf","x-amzn-trace-id":"Root=1-675576b1-732a003e494b93071d5c3a37","x-app-name":"manager","x-app-version":"v2.5.22","x-cache":"Miss from cloudfront","x-service-time":"0.001"},"body":{"encoding":"","file":false,"string":"{\"vegtype_1\":{\"Long_Name\":\"35-m broadleaf-evergreen trees (70% coverage)\",\"IGBP_Type\":\"2,13\",\"Veg_Type\":\"1\",\"Roughness\":{\"January\":0.47,\"February\":0.47,\"March\":0.47,\"April\":0.47,\"May\":0.47,\"June\":0.47,\"July\":0.47,\"August\":0.47,\"September\":0.47,\"October\":0.47,\"November\":0.47,\"December\":0.47,\"Annual\":0.47}},\"vegtype_2\":{\"Long_Name\":\"20-m broadleaf-deciduous trees (75% coverage)\",\"IGBP_Type\":\"\",\"Veg_Type\":\"2\",\"Roughness\":{\"January\":0.34,\"February\":0.35,\"March\":0.36,\"April\":0.37,\"May\":0.39,\"June\":0.42,\"July\":0.44,\"August\":0.42,\"September\":0.39,\"October\":0.37,\"November\":0.36,\"December\":0.35,\"Annual\":0.38}},\"vegtype_3\":{\"Long_Name\":\"20-m broadleaf and needleleaf trees (75% coverage)\",\"IGBP_Type\":\"\",\"Veg_Type\":\"3\",\"Roughness\":{\"January\":0.51,\"February\":0.47,\"March\":0.43,\"April\":0.41,\"May\":0.39,\"June\":0.38,\"July\":0.38,\"August\":0.41,\"September\":0.43,\"October\":0.46,\"November\":0.48,\"December\":0.5,\"Annual\":0.44}},\"vegtype_4\":{\"Long_Name\":\"17-m needleleaf-evergreen trees (75% coverage)\",\"IGBP_Type\":\"1,5\",\"Veg_Type\":\"4\",\"Roughness\":{\"January\":0.43,\"February\":0.39,\"March\":0.36,\"April\":0.34,\"May\":0.35,\"June\":0.36,\"July\":0.37,\"August\":0.37,\"September\":0.37,\"October\":0.38,\"November\":0.39,\"December\":0.41,\"Annual\":0.38}},\"vegtype_5\":{\"Long_Name\":\"14-m needleleaf-deciduous trees (50% coverage)\",\"IGBP_Type\":\"3\",\"Veg_Type\":\"5\",\"Roughness\":{\"January\":0.41,\"February\":0.39,\"March\":0.37,\"April\":0.35,\"May\":0.35,\"June\":0.34,\"July\":0.34,\"August\":0.38,\"September\":0.42,\"October\":0.44,\"November\":0.44,\"December\":0.43,\"Annual\":0.39}},\"vegtype_6\":{\"Long_Name\":\"Savanna:18-m broadleaf trees (30%) & groundcover\",\"IGBP_Type\":\"4,8,9,11\",\"Veg_Type\":\"6\",\"Roughness\":{\"January\":0.41,\"February\":0.41,\"March\":0.41,\"April\":0.41,\"May\":0.41,\"June\":0.41,\"July\":0.41,\"August\":0.41,\"September\":0.41,\"October\":0.41,\"November\":0.41,\"December\":0.41,\"Annual\":0.41}},\"vegtype_7\":{\"Long_Name\":\"0.6-m perennial groundcover (100%)\",\"IGBP_Type\":\"6,7,10,12,16,18 \",\"Veg_Type\":\"7\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_8\":{\"Long_Name\":\"0.5-m broadleaf shrubs (variable %) & groundcover\",\"IGBP_Type\":\"\",\"Veg_Type\":\"8\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_9\":{\"Long_Name\":\"0.5-m broadleaf shrubs (10%) with bare soil\",\"IGBP_Type\":\"\",\"Veg_Type\":\"9\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_10\":{\"Long_Name\":\"Tundra: 0.6-m trees/shrubs (variable %) & groundcover\",\"IGBP_Type\":\"\",\"Veg_Type\":\"10\",\"Roughness\":{\"January\":0.27,\"February\":0.27,\"March\":0.27,\"April\":0.27,\"May\":0.27,\"June\":0.27,\"July\":0.27,\"August\":0.27,\"September\":0.27,\"October\":0.27,\"November\":0.27,\"December\":0.27,\"Annual\":0.27}},\"vegtype_11\":{\"Long_Name\":\"Rough bare soil\",\"IGBP_Type\":\"\",\"Veg_Type\":\"11\",\"Roughness\":{\"January\":0.22,\"February\":0.22,\"March\":0.22,\"April\":0.22,\"May\":0.22,\"June\":0.22,\"July\":0.22,\"August\":0.22,\"September\":0.22,\"October\":0.22,\"November\":0.22,\"December\":0.22,\"Annual\":0.22}},\"vegtype_12\":{\"Long_Name\":\"Crop: 20-m broadleaf-deciduous trees (10%) & wheat\",\"IGBP_Type\":\"14\",\"Veg_Type\":\"12\",\"Roughness\":{\"January\":0.28,\"February\":0.3,\"March\":0.23,\"April\":0.35,\"May\":0.35,\"June\":0.35,\"July\":0.35,\"August\":0.35,\"September\":0.35,\"October\":0.33,\"November\":0.31,\"December\":0.29,\"Annual\":0.32}},\"vegtype_20\":{\"Long_Name\":\"Rough glacial snow/ice\",\"IGBP_Type\":\"15\",\"Veg_Type\":\"20\",\"Roughness\":{\"January\":0.35,\"February\":0.33,\"March\":0.3,\"April\":0.28,\"May\":0.28,\"June\":0.28,\"July\":0.28,\"August\":0.28,\"September\":0.3,\"October\":0.33,\"November\":0.34,\"December\":0.35,\"Annual\":0.31}},\"seaice\":{\"Long_Name\":\"Smooth sea ice\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.18,\"February\":0.15,\"March\":0.12,\"April\":0.09,\"May\":0.09,\"June\":0.09,\"July\":0.09,\"August\":0.12,\"September\":0.15,\"October\":0.19,\"November\":0.19,\"December\":0.19,\"Annual\":0.14}},\"openwater\":{\"Long_Name\":\"Open water\",\"IGBP_Type\":\"17\",\"Veg_Type\":\"0\",\"Roughness\":{\"January\":0.1,\"February\":0.1,\"March\":0.1,\"April\":0.1,\"May\":0.1,\"June\":0.1,\"July\":0.1,\"August\":0.1,\"September\":0.1,\"October\":0.1,\"November\":0.1,\"December\":0.1,\"Annual\":0.1}},\"airportice\":{\"Long_Name\":\"Airport: flat ice/snow\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.1,\"February\":0.1,\"March\":0.1,\"April\":0.1,\"May\":0.1,\"June\":0.1,\"July\":0.1,\"August\":0.1,\"September\":0.1,\"October\":0.1,\"November\":0.1,\"December\":0.1,\"Annual\":0.1}},\"airportgrass\":{\"Long_Name\":\"Airport: flat rough grass\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.15,\"February\":0.15,\"March\":0.15,\"April\":0.15,\"May\":0.15,\"June\":0.15,\"July\":0.15,\"August\":0.15,\"September\":0.15,\"October\":0.15,\"November\":0.15,\"December\":0.15,\"Annual\":0.15}}}"}},"recorded_at":"2024-12-08 10:36:34 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/fixtures/query_surfaces_seaice.json b/tests/fixtures/query_surfaces_seaice.json index b98afe18..da0d585d 100644 --- a/tests/fixtures/query_surfaces_seaice.json +++ b/tests/fixtures/query_surfaces_seaice.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/surface/seaice","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/5.2.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"257","content-type":"application/json","date":"Sun, 04 Aug 2024 04:31:09 GMT","status":"HTTP/2 200 ","via":"1.1 aeb94c96beb6ba91ddbea2d86b049ce0.cloudfront.net (CloudFront), 1.1 7eecfb820779d04c823d58ecbcf8431c.cloudfront.net (CloudFront)","x-amz-apigw-id":"b92SIG-MPHcEp3A=","x-amz-cf-id":"aLSRQERO-qSZ06KxVb0G6Z7PevDOR7nSrXRJXJjS3qdNwXDQOmD8Ag==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"257","x-amzn-requestid":"07ec16ed-b3d8-45c4-abef-f2def06652b4","x-amzn-trace-id":"Root=1-66af040d-7aa9eba83aca266a6e1a8a8f","x-app-name":"manager","x-app-version":"v2.5.6","x-cache":"Miss from cloudfront","x-service-time":"0.001"},"body":{"encoding":"","file":false,"string":"{\"Long_Name\":\"Smooth sea ice\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.18,\"February\":0.15,\"March\":0.12,\"April\":0.09,\"May\":0.09,\"June\":0.09,\"July\":0.09,\"August\":0.12,\"September\":0.15,\"October\":0.19,\"November\":0.19,\"December\":0.19,\"Annual\":0.14}}"}},"recorded_at":"2024-08-04 04:31:09 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} +{"http_interactions":[{"request":{"method":"get","uri":"https://power.larc.nasa.gov/api/system/manager/surface/seaice","body":{"encoding":"","string":""},"headers":{"User-Agent":"libcurl/8.7.1 r-curl/6.0.1 crul/1.5.0","Accept-Encoding":"gzip, deflate","Accept":"application/json, text/xml, application/xml, */*"}},"response":{"status":{"status_code":"200","message":"OK","explanation":"Request fulfilled, document follows"},"headers":{"content-language":"en-US","content-length":"257","content-type":"application/json","date":"Sun, 08 Dec 2024 10:36:34 GMT","status":"HTTP/2 200 ","via":"1.1 a701af6388ab41a625a2219cf1e43490.cloudfront.net (CloudFront), 1.1 bb4f2c03a7a099ebf06c70ae96460dc4.cloudfront.net (CloudFront)","x-amz-apigw-id":"Cd976F1AvHcEIFg=","x-amz-cf-id":"aVttIpaku1llo_Pm3bnWLrZWr0FOIMcBD0Zi5gfNMcMhTAqgYm2Pkg==","x-amz-cf-pop":["PER50-P1","PER50-P1"],"x-amzn-remapped-content-length":"257","x-amzn-requestid":"aec97443-cebe-41ac-b271-d5afc87c18a3","x-amzn-trace-id":"Root=1-675576b2-3b031a4c57a00c5306cdce07","x-app-name":"manager","x-app-version":"v2.5.22","x-cache":"Miss from cloudfront","x-service-time":"0.001"},"body":{"encoding":"","file":false,"string":"{\"Long_Name\":\"Smooth sea ice\",\"IGBP_Type\":\"\",\"Veg_Type\":\"\",\"Roughness\":{\"January\":0.18,\"February\":0.15,\"March\":0.12,\"April\":0.09,\"May\":0.09,\"June\":0.09,\"July\":0.09,\"August\":0.12,\"September\":0.15,\"October\":0.19,\"November\":0.19,\"December\":0.19,\"Annual\":0.14}}"}},"recorded_at":"2024-12-08 10:36:34 GMT","recorded_with":"vcr/1.6.0, webmockr/1.0.0"}]} diff --git a/tests/spelling.R b/tests/spelling.R index bc1ad1ed..d60e024c 100644 --- a/tests/spelling.R +++ b/tests/spelling.R @@ -1,4 +1,7 @@ -if (requireNamespace("spelling", quietly = TRUE)) - spelling::spell_check_test(vignettes = TRUE, - error = FALSE, - skip_on_cran = TRUE) +if (requireNamespace("spelling", quietly = TRUE)) { + spelling::spell_check_test( + vignettes = TRUE, + error = FALSE, + skip_on_cran = TRUE + ) +} diff --git a/tests/testthat/test-get_power.R b/tests/testthat/test-get_power.R index e59df25d..8dca665f 100644 --- a/tests/testthat/test-get_power.R +++ b/tests/testthat/test-get_power.R @@ -1,4 +1,3 @@ - # test queries using vcr ------------------------------------------------------- test_that("get_power() returns daily point ag data", { skip_if_offline() @@ -6,12 +5,14 @@ test_that("get_power() returns daily point ag data", { power_query <- get_power( community = "ag", lonlat = c(-179.5, -89.5), - pars = c("T2M", + pars = c( + "T2M", "T2M_MIN", "T2M_MAX", "RH2M", "WS10M", - "PS"), + "PS" + ), dates = c("1983-01-01"), temporal_api = "Daily", time_standard = "UTC" @@ -21,11 +22,11 @@ test_that("get_power() returns daily point ag data", { expect_s3_class(power_query, "data.frame") expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) expect_equal(power_query$LON, -179.5, tolerance = 1e-3) - expect_equal(power_query$YEAR, 1983) - expect_equal(power_query$MM, 1) - expect_equal(power_query$DD, 1) - expect_equal(power_query$DOY, 1) - expect_equal(power_query$YYYYMMDD, as.Date("1983-01-01")) + expect_identical(power_query$YEAR, 1983) + expect_identical(power_query$MM, 1L) + expect_identical(power_query$DD, 1L) + expect_identical(power_query$DOY, 1L) + expect_identical(power_query$YYYYMMDD, as.Date("1983-01-01")) expect_equal(power_query$T2M, -24.4, tolerance = 1e-2) expect_equal(power_query$T2M_MIN, -25.4, tolerance = 1e-2) expect_equal(power_query$T2M_MAX, -22.7, tolerance = 1e-2) @@ -53,120 +54,122 @@ test_that("get_power() returns daily point ag data", { }) test_that("get_power() returns daily point ag data with adjusted atmospheric - air pressure", - { - skip_if_offline() - vcr::use_cassette("adjusted_air_pressure", { - power_query <- get_power( - community = "ag", - lonlat = c(-179.5, -89.5), - pars = c("T2M", - "T2M_MIN", - "T2M_MAX", - "RH2M", - "WS10M", - "PS"), - dates = c("1983-01-01"), - temporal_api = "Daily", - site_elevation = 0, - time_standard = "UTC" - ) - }) - - expect_s3_class(power_query, "data.frame") - expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) - expect_equal(power_query$LON, -179.5, tolerance = 1e-3) - expect_equal(power_query$YEAR, 1983) - expect_equal(power_query$MM, 1) - expect_equal(power_query$DD, 1) - expect_equal(power_query$DOY, 1) - expect_equal(power_query$YYYYMMDD, as.Date("1983-01-01")) - expect_equal(power_query$T2M, -24.4, tolerance = 1e-2) - expect_equal(power_query$T2M_MIN, -25.4, tolerance = 1e-2) - expect_equal(power_query$T2M_MAX, -22.7, tolerance = 1e-2) - expect_equal(power_query$RH2M, 92.4, tolerance = 1e-2) - expect_equal(power_query$WS10M, 1.93, tolerance = 1e-2) - expect_equal(power_query$PS, 69.2, tolerance = 1e-2) - expect_equal(power_query$PSC, 101, tolerance = 1e-2) - expect_named( - power_query, - c( - "LON", - "LAT", - "YEAR", - "MM", - "DD", - "DOY", - "YYYYMMDD", + air pressure", { + skip_if_offline() + vcr::use_cassette("adjusted_air_pressure", { + power_query <- get_power( + community = "ag", + lonlat = c(-179.5, -89.5), + pars = c( "T2M", "T2M_MIN", "T2M_MAX", "RH2M", "WS10M", - "PS", - "PSC" - ) + "PS" + ), + dates = c("1983-01-01"), + temporal_api = "Daily", + site_elevation = 0, + time_standard = "UTC" ) }) -test_that("get_power() returns daily point ag data with adjusted wind - elevation", - { - skip_if_offline() - vcr::use_cassette("adjusted_wind_elevation", { - power_query <- get_power( - community = "ag", - lonlat = c(-179.5, -89.5), - pars = c("T2M", - "T2M_MIN", - "T2M_MAX", - "RH2M", - "WS10M", - "PS"), - dates = c("1983-01-01"), - temporal_api = "Daily", - wind_elevation = 300, - wind_surface = "vegtype_1", - time_standard = "UTC" - ) - }) + expect_s3_class(power_query, "data.frame") + expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) + expect_equal(power_query$LON, -179.5, tolerance = 1e-3) + expect_identical(power_query$YEAR, 1983) + expect_identical(power_query$MM, 1L) + expect_identical(power_query$DD, 1L) + expect_identical(power_query$DOY, 1L) + expect_identical(power_query$YYYYMMDD, as.Date("1983-01-01")) + expect_equal(power_query$T2M, -24.4, tolerance = 1e-2) + expect_equal(power_query$T2M_MIN, -25.4, tolerance = 1e-2) + expect_equal(power_query$T2M_MAX, -22.7, tolerance = 1e-2) + expect_equal(power_query$RH2M, 92.4, tolerance = 1e-2) + expect_equal(power_query$WS10M, 1.93, tolerance = 1e-2) + expect_equal(power_query$PS, 69.2, tolerance = 1e-2) + expect_equal(power_query$PSC, 101, tolerance = 1e-2) + expect_named( + power_query, + c( + "LON", + "LAT", + "YEAR", + "MM", + "DD", + "DOY", + "YYYYMMDD", + "T2M", + "T2M_MIN", + "T2M_MAX", + "RH2M", + "WS10M", + "PS", + "PSC" + ) + ) +}) - expect_s3_class(power_query, "data.frame") - expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) - expect_equal(power_query$LON, -179.5, tolerance = 1e-3) - expect_equal(power_query$YEAR, 1983) - expect_equal(power_query$MM, 1) - expect_equal(power_query$DD, 1) - expect_equal(power_query$DOY, 1) - expect_equal(power_query$YYYYMMDD, as.Date("1983-01-01")) - expect_equal(power_query$T2M, -24.4, tolerance = 1e-2) - expect_equal(power_query$T2M_MIN, -25.4, tolerance = 1e-2) - expect_equal(power_query$T2M_MAX, -22.7, tolerance = 1e-2) - expect_equal(power_query$RH2M, 92.4, tolerance = 1e-2) - expect_equal(power_query$WS10M, 1.93, tolerance = 1e-2) - expect_equal(power_query$PS, 69.06, tolerance = 1e-2) - expect_equal(power_query$WSC, 6.49, tolerance = 1e-2) - expect_named( - power_query, - c( - "LON", - "LAT", - "YEAR", - "MM", - "DD", - "DOY", - "YYYYMMDD", +test_that("get_power() returns daily point ag data with adjusted wind + elevation", { + skip_if_offline() + vcr::use_cassette("adjusted_wind_elevation", { + power_query <- get_power( + community = "ag", + lonlat = c(-179.5, -89.5), + pars = c( "T2M", "T2M_MIN", "T2M_MAX", "RH2M", "WS10M", - "PS", - "WSC" - ) + "PS" + ), + dates = c("1983-01-01"), + temporal_api = "Daily", + wind_elevation = 300, + wind_surface = "vegtype_1", + time_standard = "UTC" ) }) + expect_s3_class(power_query, "data.frame") + expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) + expect_equal(power_query$LON, -179.5, tolerance = 1e-3) + expect_identical(power_query$YEAR, 1983) + expect_identical(power_query$MM, 1L) + expect_identical(power_query$DD, 1L) + expect_identical(power_query$DOY, 1L) + expect_identical(power_query$YYYYMMDD, as.Date("1983-01-01")) + expect_equal(power_query$T2M, -24.4, tolerance = 1e-2) + expect_equal(power_query$T2M_MIN, -25.4, tolerance = 1e-2) + expect_equal(power_query$T2M_MAX, -22.7, tolerance = 1e-2) + expect_equal(power_query$RH2M, 92.4, tolerance = 1e-2) + expect_equal(power_query$WS10M, 1.93, tolerance = 1e-2) + expect_equal(power_query$PS, 69.06, tolerance = 1e-2) + expect_equal(power_query$WSC, 6.49, tolerance = 1e-2) + expect_named( + power_query, + c( + "LON", + "LAT", + "YEAR", + "MM", + "DD", + "DOY", + "YYYYMMDD", + "T2M", + "T2M_MIN", + "T2M_MAX", + "RH2M", + "WS10M", + "PS", + "WSC" + ) + ) +}) + test_that("get_power() returns daily point SB data", { skip_if_offline() @@ -174,11 +177,13 @@ test_that("get_power() returns daily point SB data", { power_query <- get_power( community = "sb", lonlat = c(-179.5, -89.5), - pars = c("T2M", + pars = c( + "T2M", "T2M_MIN", "T2M_MAX", "RH2M", - "WS10M"), + "WS10M" + ), dates = c("1983-01-01"), temporal_api = "Daily", time_standard = "UTC" @@ -188,16 +193,16 @@ test_that("get_power() returns daily point SB data", { expect_s3_class(power_query, "data.frame") expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) expect_equal(power_query$LON, -179.5, tolerance = 1e-3) - expect_equal(power_query$YEAR, 1983) - expect_equal(power_query$MM, 1) - expect_equal(power_query$DD, 1) - expect_equal(power_query$DOY, 1) - expect_equal(power_query$YYYYMMDD, as.Date("1983-01-01")) + expect_identical(power_query$YEAR, 1983) + expect_identical(power_query$MM, 1L) + expect_identical(power_query$DD, 1L) + expect_identical(power_query$DOY, 1) + expect_identical(power_query$YYYYMMDD, as.Date("1983-01-01")) expect_equal(power_query$T2M, -24.4, tolerance = 1e-2) expect_equal(power_query$T2M_MIN, -25.4, tolerance = 1e-2) expect_equal(power_query$T2M_MAX, -22.7, tolerance = 1e-2) expect_equal(power_query$RH2M, 92.4, tolerance = 1e-2) - expect_equal(power_query$WS10M, 1.93, tolerance = 1e-2) + expect_equal(power_query$WS10M, 1.93, tolerance = 1e-2) }) test_that("get_power() returns daily point SB data for LST", { @@ -206,11 +211,13 @@ test_that("get_power() returns daily point SB data for LST", { power_query <- get_power( community = "sb", lonlat = c(-179.5, -89.5), - pars = c("T2M", + pars = c( + "T2M", "T2M_MIN", "T2M_MAX", "RH2M", - "WS10M"), + "WS10M" + ), dates = c("1983-01-01"), temporal_api = "Daily", time_standard = "LST" @@ -220,16 +227,16 @@ test_that("get_power() returns daily point SB data for LST", { expect_s3_class(power_query, "data.frame") expect_equal(power_query$LAT, -89.5, tolerance = 1e-3) expect_equal(power_query$LON, -179.5, tolerance = 1e-3) - expect_equal(power_query$YEAR, 1983) - expect_equal(power_query$MM, 1) - expect_equal(power_query$DD, 1) - expect_equal(power_query$DOY, 1) - expect_equal(power_query$YYYYMMDD, as.Date("1983-01-01")) + expect_identical(power_query$YEAR, 1983) + expect_identical(power_query$MM, 1L) + expect_identical(power_query$DD, 1L) + expect_identical(power_query$DOY, 1) + expect_identical(power_query$YYYYMMDD, as.Date("1983-01-01")) expect_equal(power_query$T2M, -25.2, tolerance = 1e-2) expect_equal(power_query$T2M_MIN, -25.7, tolerance = 1e-2) expect_equal(power_query$T2M_MAX, -24.9, tolerance = 1e-2) expect_equal(power_query$RH2M, 94.2, tolerance = 1e-2) - expect_equal(power_query$WS10M, 2.32, tolerance = 1e-2) + expect_equal(power_query$WS10M, 2.32, tolerance = 1e-2) }) test_that("get_power() returns daily regional ag data", { @@ -242,7 +249,7 @@ test_that("get_power() returns daily regional ag data", { temporal_api = "Daily" ) - expect_equal(nrow(power_query), 60) + expect_identical(nrow(power_query), 60L) expect_equal( unique(power_query$LAT), c( @@ -260,20 +267,23 @@ test_that("get_power() returns daily regional ag data", { tolerance = 0.1 ) expect_equal(unique(power_query$LON), - c(112.8, + c( + 112.8, 113.2, 113.8, 114.2, 114.8, - 115.2), - tolerance = 0.1) - expect_equal(power_query$YEAR[1], 1983) - expect_equal(power_query$MM[1], 1) - expect_equal(power_query$DD[1], 1) - expect_equal(power_query$DOY[1], 1) - expect_equal(power_query$YYYYMMDD[1], as.Date("1983-01-01")) - expect_equal(power_query$DOY[1], 1) - expect_equal(power_query$T2M[1], 3.28) + 115.2 + ), + tolerance = 0.1 + ) + expect_identical(power_query$YEAR[1], 1983) + expect_identical(power_query$MM[1], 1L) + expect_identical(power_query$DD[1], 1L) + expect_identical(power_query$DOY[1], 1L) + expect_identical(power_query$YYYYMMDD[1], as.Date("1983-01-01")) + expect_identical(power_query$DOY[1], 1L) + expect_identical(power_query$T2M[1], 3.28) }) test_that("get_power() returns point ag data for climatology", { @@ -287,8 +297,8 @@ test_that("get_power() returns point ag data for climatology", { ) }) - expect_equal(nrow(power_query), 1) - expect_equal(power_query$PARAMETER[1], "T2M") + expect_identical(nrow(power_query), 1L) + expect_identical(power_query$PARAMETER[1], "T2M") expect_named( power_query, c( @@ -359,21 +369,20 @@ test_that("get_power() stops if site_elevation is invalid", { ) }) -test_that("get_power() stops wind_surface is supplied w/ no wind_elevation", - { - skip_if_offline() - expect_error( - get_power( - community = "ag", - lonlat = c(112.5, -55.5), - pars = "T2M", - dates = "1983-01-01", - temporal_api = "daily", - wind_surface = "vegtype_6" - ), - regexp = "If you provide a correct wind surface alias*" - ) - }) +test_that("get_power() stops wind_surface is supplied w/ no wind_elevation", { + skip_if_offline() + expect_error( + get_power( + community = "ag", + lonlat = c(112.5, -55.5), + pars = "T2M", + dates = "1983-01-01", + temporal_api = "daily", + wind_surface = "vegtype_6" + ), + regexp = "If you provide a correct wind surface alias*" + ) +}) test_that("get_power() stops wind_elevation is invalid", { skip_if_offline() @@ -473,7 +482,8 @@ test_that("get_power() stops if lonlat = is invalid", { lonlat = "x", pars = "T2M", dates = "1983-01-01", - temporal_api = "daily" + temporal_api = "daily", + wind_elevation = NULL ), regexp = "You have entered an invalid value for `lonlat`. *" ) @@ -534,4 +544,4 @@ test_that("get_power() stops if lonlat = regional for hourly", { temporal_api = "hourly" ) ) -}) \ No newline at end of file +}) diff --git a/tests/testthat/test-internal_functions.R b/tests/testthat/test-internal_functions.R index d6f58e62..70da0eb2 100644 --- a/tests/testthat/test-internal_functions.R +++ b/tests/testthat/test-internal_functions.R @@ -1,4 +1,3 @@ - # Date handling and checking --------------------------------------------------- test_that("Missing `dates` are properly handled", { temporal_api <- "daily" @@ -14,8 +13,8 @@ test_that("`dates` with one value set one day query", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL dates <- .check_dates(dates, lonlat, temporal_api) - expect_equal(dates[1], "19830101") - expect_equal(dates[2], "19830101") + expect_identical(dates[1], "19830101") + expect_identical(dates[2], "19830101") }) test_that("`dates` > 2 cause an error", { @@ -24,8 +23,9 @@ test_that("`dates` > 2 cause an error", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL expect_error(.check_dates(dates, lonlat, temporal_api), - regexp = - "You have supplied more than two dates for start and end*") + regexp = + "You have supplied more than two dates for start and end*" + ) }) test_that("`dates` entered in incorrect formats are corrected", { @@ -34,11 +34,11 @@ test_that("`dates` entered in incorrect formats are corrected", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL dates <- .check_dates(dates, lonlat, temporal_api) - expect_equal(dates[1], "19830101") + expect_identical(dates[1], "19830101") dates <- "Jan-01-1983" dates <- .check_dates(dates, lonlat, temporal_api) - expect_equal(dates[1], "19830101") + expect_identical(dates[1], "19830101") }) test_that("daily `dates` entered in reverse order are corrected", { @@ -48,7 +48,8 @@ test_that("daily `dates` entered in reverse order are corrected", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL expect_message(.check_dates(dates, lonlat, temporal_api), - regexp = "*Your start and end dates were reversed.*") + regexp = "*Your start and end dates were reversed.*" + ) }) test_that("monthly `dates` entered in reverse order are corrected", { @@ -58,7 +59,8 @@ test_that("monthly `dates` entered in reverse order are corrected", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL expect_message(.check_dates(dates, lonlat, temporal_api), - regexp = "*Your start and end dates were reversed.*") + regexp = "*Your start and end dates were reversed.*" + ) }) test_that("`dates` before the start of POWER data cause error", { @@ -68,7 +70,8 @@ test_that("`dates` before the start of POWER data cause error", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL expect_error(.check_dates(dates, lonlat, temporal_api), - regexp = "*1981-01-01 is the earliest available data from*") + regexp = "*1981-01-01 is the earliest available data from*" + ) }) test_that("`dates` after today POWER cause error", { @@ -77,7 +80,8 @@ test_that("`dates` after today POWER cause error", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL expect_error(.check_dates(tomorrow, lonlat, temporal_api), - regexp = "The weather data cannot possibly extend beyond*") + regexp = "The weather data cannot possibly extend beyond*" + ) }) test_that("Invalid `dates` are handled", { @@ -86,7 +90,8 @@ test_that("Invalid `dates` are handled", { lonlat <- c(-179.5, -89.5) site_elevation <- NULL expect_error(.check_dates(dates, lonlat, temporal_api), - regexp = "`1983-02-31` is not a valid entry for a date value.*") + regexp = "`1983-02-31` is not a valid entry for a date value.*" + ) }) test_that("Dates are returned as a vector of characters", { @@ -100,23 +105,24 @@ test_that("Dates are returned as a vector of characters", { test_that( "If temporal_api == monthly and dates are specified, that only years - are returned", { + are returned", + { temporal_api <- "monthly" dates <- c("1983-01-01", "1984-01-01") lonlat <- c(-179.5, -89.5) site_elevation <- NULL dates <- .check_dates(dates, lonlat, temporal_api) - expect_equal(nchar(dates[1]), 4) + expect_identical(nchar(dates[1]), 4L) } ) test_that("If temporal_api == monthly and <2 dates provided, error", { - temporal_api <- "monthly" - dates <- c("1983-01-01") - lonlat <- c(-179.5, -89.5) - site_elevation <- NULL - expect_error(.check_dates(dates, lonlat, temporal_api)) - }) + temporal_api <- "monthly" + dates <- c("1983-01-01") + lonlat <- c(-179.5, -89.5) + site_elevation <- NULL + expect_error(.check_dates(dates, lonlat, temporal_api)) +}) # community checks ------------------------------------------------------------- @@ -178,11 +184,13 @@ test_that(".check_lonlat() properly reports errors", { test_that(".check_lonlat() handles single point properly", { temporal_api <- "daily" - test <- .check_lonlat(lonlat = c(-179.5, -89.5), - pars) + test <- .check_lonlat( + lonlat = c(-179.5, -89.5), + pars + ) expect_equal(test$lon, -179.5) expect_equal(test$lat, -89.5) - expect_equal(test$identifier, "point") + expect_identical(test$identifier, "point") }) test_that(".check_lonlat() checks validity of single lon values", { @@ -192,72 +200,109 @@ test_that(".check_lonlat() checks validity of single lon values", { test_that(".check_lonlat() checks validity of single lat values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(182, 90), - pars), - regexp = "Please check your longitude, `182`,*") + expect_error( + .check_lonlat( + lonlat = c(182, 90), + pars + ), + regexp = "Please check your longitude, `182`,*" + ) }) # bbox checks ------------------------------------------------------------------ test_that(".check_lonlat() handles bboxes that are too large", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(-179.5, -89.5, 179.5, 89.5), - pars), - regexp = "Please provide correct bounding box values*") + expect_error( + .check_lonlat( + lonlat = c(-179.5, -89.5, 179.5, 89.5), + pars + ), + regexp = "Please provide correct bounding box values*" + ) }) test_that(".check_lonlat() checks order of the latitude values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(-179.5, 89.5, 179.5, -89.5), - pars), - regexp = "The first `lonlat` `lat` value must be the minimum value.") + expect_error( + .check_lonlat( + lonlat = c(-179.5, 89.5, 179.5, -89.5), + pars + ), + regexp = "The first `lonlat` `lat` value must be the minimum value." + ) }) test_that(".check_lonlat() checks order of the longitude values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(179.5, -89.5, -179.5, 89.5), - pars), - regexp = "The first `lonlat` `lon` value must be the minimum value.") + expect_error( + .check_lonlat( + lonlat = c(179.5, -89.5, -179.5, 89.5), + pars + ), + regexp = "The first `lonlat` `lon` value must be the minimum value." + ) }) test_that(".check_lonlat() checks validity of bbox latmin values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(-179.5, 91, -179.5, 90), - pars), - regexp = "Please check your latitude values*") + expect_error( + .check_lonlat( + lonlat = c(-179.5, 91, -179.5, 90), + pars + ), + regexp = "Please check your latitude values*" + ) }) test_that(".check_lonlat() checks validity of bbox latmax values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(-179.5, 90, -179.5, 93), - pars), - regexp = "Please check your latitude values*") + expect_error( + .check_lonlat( + lonlat = c(-179.5, 90, -179.5, 93), + pars + ), + regexp = "Please check your latitude values*" + ) }) test_that(".check_lonlat() checks validity of bbox lonmin values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(-181.5, 89.5, -179.5, 89.5), - pars), - regexp = "Please check your longitude*") + expect_error( + .check_lonlat( + lonlat = c(-181.5, 89.5, -179.5, 89.5), + pars + ), + regexp = "Please check your longitude*" + ) }) test_that(".check_lonlat() checks validity of bbox lonmax values", { temporal_api <- "daily" - expect_error(.check_lonlat(lonlat = c(-179.5, 89.5, 181, 89.5), - pars), - regexp = "Please check your longitude*") + expect_error( + .check_lonlat( + lonlat = c(-179.5, 89.5, 181, 89.5), + pars + ), + regexp = "Please check your longitude*" + ) }) test_that( ".check_lonlat() returns message with proper identifier when valid - coordinates are given", { + coordinates are given", + { temporal_api <- "daily" - test <- .check_lonlat(lonlat = c(-179.5, - 88.5, - -179.5, - 89.5), - pars) + test <- .check_lonlat( + lonlat = c( + -179.5, + 88.5, + -179.5, + 89.5 + ), + pars + ) expect_named(test$bbox, c("xmin", "ymin", "xmax", "ymax")) - expect_equal(test$identifier, "regional") + expect_identical(test$identifier, "regional") } ) @@ -267,18 +312,22 @@ test_that(".check_pars() stops if no `pars` provided", { temporal_api <- "daily" community <- "ag" - expect_error(.check_pars(temporal_api, - community, - pars)) + expect_error(.check_pars( + temporal_api, + community, + pars + )) }) test_that(".check_pars() stops if no `temporal_api` provided", { pars <- "AG" community <- "ag" - expect_error(.check_pars(temporal_api, - community, - pars)) + expect_error(.check_pars( + temporal_api, + community, + pars + )) }) test_that(".check_pars() stops if `pars` not valid", { @@ -286,241 +335,283 @@ test_that(".check_pars() stops if `pars` not valid", { temporal_api <- "daily" community <- "ag" - expect_error(.check_pars(pars, - community, - temporal_api)) + expect_error(.check_pars( + pars, + community, + temporal_api + )) }) test_that(".check_pars() stops if `pars` not valid for given temporal_api", { - pars <- "ALLSKY_SFC_SW_DWN_03_GMT" - temporal_api <- "monthly" - lonlat <- c(-179.5, -89.5) - community <- "ag" + pars <- "ALLSKY_SFC_SW_DWN_03_GMT" + temporal_api <- "monthly" + lonlat <- c(-179.5, -89.5) + community <- "ag" - expect_error(.check_pars(pars, - community, - temporal_api)) - }) + expect_error(.check_pars( + pars, + community, + temporal_api + )) +}) test_that("pars are returned as a comma separated string with no spaces", { pars <- c("RH2M", "T2M") temporal_api <- "climatology" community <- "ag" - pars <- .check_pars(pars, - community, - temporal_api) - expect_equal(nchar(pars), 8) - expect_equal(pars, "RH2M,T2M") + pars <- .check_pars( + pars, + community, + temporal_api + ) + expect_identical(nchar(pars), 8L) + expect_identical(pars, "RH2M,T2M") }) test_that("Only unique `pars` are queried", { - pars <- c("RH2M", - "RH2M", - "RH2M") + pars <- c( + "RH2M", + "RH2M", + "RH2M" + ) temporal_api <- "climatology" community <- "ag" pars <- .check_pars(pars, community, temporal_api) - expect_equal(pars[[1]], "RH2M") - expect_equal(length(pars[[1]]), 1) + expect_identical(pars[[1]], "RH2M") + expect_length(pars[[1]], 1) }) test_that("If an invalid temporal average is given for `pars`, an error occurs", { - pars <- "ALLSKY_SFC_SW_DWN_00_GMT" - temporal_api <- "daily" - community <- "ag" - expect_error(.check_pars(pars, community, temporal_api)) - }) + pars <- "ALLSKY_SFC_SW_DWN_00_GMT" + temporal_api <- "daily" + community <- "ag" + expect_error(.check_pars(pars, community, temporal_api)) +}) # query constructs ------------------------------------------------------------- test_that(".build_query assembles a proper query for single point and != NULL dates", { - temporal_api <- "daily" - dates <- c("1983-01-01", "1983-02-02") - lonlat <- c(-179.5, -89.5) - site_elevation <- 50 - community <- "ag" - pars <- "T2M" - site_elevation <- NULL - wind_elevation <- NULL - wind_surface <- NULL - time_standard <- "UTC" - - dates <- .check_dates(dates, - lonlat, - temporal_api) - pars <- .check_pars(pars, - community, - temporal_api) - lonlat_identifier <- .check_lonlat(lonlat, - pars) - user_agent <- "nasapower" - - query_list <- .build_query(community, - lonlat_identifier, - pars, - dates, - site_elevation, - wind_elevation, - wind_surface, - time_standard) - - expect_named( - query_list, - c( - "parameters", - "community", - "start", - "end", - "longitude", - "latitude", - "format", - "time-standard", - "user" - ) - ) - }) + temporal_api <- "daily" + dates <- c("1983-01-01", "1983-02-02") + lonlat <- c(-179.5, -89.5) + site_elevation <- 50 + community <- "ag" + pars <- "T2M" + site_elevation <- NULL + wind_elevation <- NULL + wind_surface <- NULL + time_standard <- "UTC" + + dates <- .check_dates( + dates, + lonlat, + temporal_api + ) + pars <- .check_pars( + pars, + community, + temporal_api + ) + lonlat_identifier <- .check_lonlat( + lonlat, + pars + ) + user_agent <- "nasapower" + + query_list <- .build_query( + community, + lonlat_identifier, + pars, + dates, + site_elevation, + wind_elevation, + wind_surface, + time_standard + ) + + expect_named( + query_list, + c( + "parameters", + "community", + "start", + "end", + "longitude", + "latitude", + "format", + "time-standard", + "user" + ) + ) +}) test_that(".build_query assembles a proper query for single point and NULL dates", { - temporal_api <- "climatology" - dates <- NULL - lonlat <- c(-179.5, -89.5) - site_elevation <- NULL - community <- "ag" - pars <- "T2M" - site_elevation <- NULL - wind_elevation <- NULL - wind_surface <- NULL - time_standard <- "UTC" - - dates <- .check_dates(dates, - lonlat, - temporal_api) - pars <- .check_pars(pars, - community, - temporal_api) - lonlat_identifier <- .check_lonlat(lonlat, - pars) - user_agent <- "nasapower" - - query_list <- .build_query(community, - lonlat_identifier, - pars, - dates, - site_elevation, - wind_elevation, - wind_surface, - time_standard) - - expect_named( - query_list, - c( - "parameters", - "community", - "longitude", - "latitude", - "format", - "time-standard", - "user" - ) - ) - }) + temporal_api <- "climatology" + dates <- NULL + lonlat <- c(-179.5, -89.5) + site_elevation <- NULL + community <- "ag" + pars <- "T2M" + site_elevation <- NULL + wind_elevation <- NULL + wind_surface <- NULL + time_standard <- "UTC" + + dates <- .check_dates( + dates, + lonlat, + temporal_api + ) + pars <- .check_pars( + pars, + community, + temporal_api + ) + lonlat_identifier <- .check_lonlat( + lonlat, + pars + ) + user_agent <- "nasapower" + + query_list <- .build_query( + community, + lonlat_identifier, + pars, + dates, + site_elevation, + wind_elevation, + wind_surface, + time_standard + ) + + expect_named( + query_list, + c( + "parameters", + "community", + "longitude", + "latitude", + "format", + "time-standard", + "user" + ) + ) +}) test_that(".build_query assembles a proper query for regional and != NULL dates", { - temporal_api <- "daily" - dates <- c("1983-01-01", "1983-02-02") - lonlat <- c(112.5, -55.5, 115.5, -50.5) - site_elevation <- NULL - community <- "ag" - pars <- "T2M" - site_elevation <- NULL - wind_elevation <- NULL - wind_surface <- NULL - time_standard <- "UTC" - - dates <- .check_dates(dates, - community, - temporal_api) - pars <- .check_pars(pars, - community, - temporal_api) - lonlat_identifier <- .check_lonlat(lonlat, - pars) - user_agent <- "nasapower" - - query_list <- .build_query(community, - lonlat_identifier, - pars, - dates, - site_elevation, - wind_elevation, - wind_surface, - time_standard) - - expect_named( - query_list, - c( - "parameters", - "community", - "latitude-min", - "latitude-max", - "longitude-min", - "longitude-max", - "format", - "time-standard", - "user" - ) - ) - }) + temporal_api <- "daily" + dates <- c("1983-01-01", "1983-02-02") + lonlat <- c(112.5, -55.5, 115.5, -50.5) + site_elevation <- NULL + community <- "ag" + pars <- "T2M" + site_elevation <- NULL + wind_elevation <- NULL + wind_surface <- NULL + time_standard <- "UTC" + + dates <- .check_dates( + dates, + community, + temporal_api + ) + pars <- .check_pars( + pars, + community, + temporal_api + ) + lonlat_identifier <- .check_lonlat( + lonlat, + pars + ) + user_agent <- "nasapower" + + query_list <- .build_query( + community, + lonlat_identifier, + pars, + dates, + site_elevation, + wind_elevation, + wind_surface, + time_standard + ) + + expect_named( + query_list, + c( + "parameters", + "community", + "start", + "end", + "latitude-min", + "latitude-max", + "longitude-min", + "longitude-max", + "format", + "time-standard", + "user" + ) + ) +}) test_that(".build_query assembles a proper query for regional and NULL dates", { - temporal_api <- "climatology" - dates <- NULL - lonlat <- c(112.5, -55.5, 115.5, -50.5) - site_elevation <- NULL - community <- "ag" - pars <- "T2M" - - dates <- .check_dates(dates, - lonlat, - temporal_api) - pars <- .check_pars(pars, - community, - temporal_api) - lonlat_identifier <- .check_lonlat(lonlat, - pars) - user_agent <- "nasapower" - time_standard <- "UTC" - - query_list <- .build_query(community, - lonlat_identifier, - pars, - dates, - site_elevation, - wind_elevation, - wind_surface, - time_standard) - - expect_named( - query_list, - c( - "parameters", - "community", - "latitude-min", - "latitude-max", - "longitude-min", - "longitude-max", - "format", - "time-standard", - "user" - ) - ) - }) + temporal_api <- "climatology" + dates <- NULL + lonlat <- c(112.5, -55.5, 115.5, -50.5) + site_elevation <- NULL + community <- "ag" + pars <- "T2M" + + dates <- .check_dates( + dates, + lonlat, + temporal_api + ) + pars <- .check_pars( + pars, + community, + temporal_api + ) + lonlat_identifier <- .check_lonlat( + lonlat, + pars + ) + user_agent <- "nasapower" + time_standard <- "UTC" + + query_list <- .build_query( + community, + lonlat_identifier, + pars, + dates, + site_elevation, + wind_elevation, + wind_surface, + time_standard + ) + + expect_named( + query_list, + c( + "parameters", + "community", + "latitude-min", + "latitude-max", + "longitude-min", + "longitude-max", + "format", + "time-standard", + "user" + ) + ) +}) # Boolean checks --------------------------------------------------------------- diff --git a/tests/testthat/test-query_groupings.R b/tests/testthat/test-query_groupings.R index 62e050cb..b1f85780 100644 --- a/tests/testthat/test-query_groupings.R +++ b/tests/testthat/test-query_groupings.R @@ -1,4 +1,3 @@ - test_that("query_groupings() returns proper list of info", { skip_if_offline() vcr::use_cassette("query_groupings", { @@ -6,8 +5,7 @@ test_that("query_groupings() returns proper list of info", { expect_type(grouping_query, "list") expect_length(grouping_query, 1) - expect_named(grouping_query, "groups" - ) + expect_named(grouping_query, "groups") }) }) diff --git a/tests/testthat/test-query_parameters.R b/tests/testthat/test-query_parameters.R index f1e5278e..c08c1b7c 100644 --- a/tests/testthat/test-query_parameters.R +++ b/tests/testthat/test-query_parameters.R @@ -1,10 +1,11 @@ - test_that("query_parameters() returns proper list of info", { skip_if_offline() vcr::use_cassette("query_parameters_comm&temporal_api", { - par_query <- query_parameters(community = "ag", - pars = "T2M", - temporal_api = "Daily") + par_query <- query_parameters( + community = "ag", + pars = "T2M", + temporal_api = "Daily" + ) expect_type(par_query, "list") expect_length(par_query, 1) @@ -12,25 +13,28 @@ test_that("query_parameters() returns proper list of info", { }) }) -test_that("query_parameters() returns list of parameter information", - { - skip_if_offline() - par_query <- query_parameters(pars = "T2M") - expect_type(par_query, "list") - expect_length(par_query, 1) - expect_named(par_query, "T2M") - }) +test_that("query_parameters() returns list of parameter information", { + skip_if_offline() + par_query <- query_parameters(pars = "T2M") + expect_type(par_query, "list") + expect_length(par_query, 1) + expect_named(par_query, "T2M") +}) test_that("query_parameters() stops if par and community only supplied", { skip_if_offline() - expect_error(query_parameters(pars = "T2M", - community = "AG")) + expect_error(query_parameters( + pars = "T2M", + community = "AG" + )) }) test_that("query_parameters() stops if par and community only supplied", { skip_if_offline() - expect_error(query_parameters(pars = "T2M", - temporal_api = "daily")) + expect_error(query_parameters( + pars = "T2M", + temporal_api = "daily" + )) }) test_that("query_parameters() stops if metadata is not Boolean", { diff --git a/tests/testthat/test-query_surfaces.R b/tests/testthat/test-query_surfaces.R index e7fb2399..e75965b1 100644 --- a/tests/testthat/test-query_surfaces.R +++ b/tests/testthat/test-query_surfaces.R @@ -1,4 +1,3 @@ - test_that("query_surfaces() returns proper list of info", { skip_if_offline() vcr::use_cassette("query_surfaces_all", { @@ -37,7 +36,9 @@ test_that("query_surfaces() returns list of surface information", { surface_query <- query_surfaces(surface_alias = "seaice") expect_type(surface_query, "list") expect_length(surface_query, 4) - expect_named(surface_query, - c("Long_Name", "IGBP_Type", "Veg_Type", "Roughness")) + expect_named( + surface_query, + c("Long_Name", "IGBP_Type", "Veg_Type", "Roughness") + ) }) }) diff --git a/vignettes/nasapower.Rmd b/vignettes/nasapower.Rmd index 3ee9a167..5bc87799 100644 --- a/vignettes/nasapower.Rmd +++ b/vignettes/nasapower.Rmd @@ -37,18 +37,20 @@ daily_single_ag <- get_power( ) daily_single_ag -#> NASA/POWER CERES/MERRA2 Native Resolution Daily Data -#> Dates (month/day/year): 01/01/1985 through 01/31/1985 -#> Location: Latitude -27.48 Longitude 151.81 -#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 442.77 meters -#> The value for missing source data that cannot be computed or is outside of the sources availability range: NA -#> Parameter(s): -#> -#> Parameters: -#> RH2M MERRA-2 Relative Humidity at 2 Meters (%) ; -#> T2M MERRA-2 Temperature at 2 Meters (C) ; -#> PRECTOTCORR MERRA-2 Precipitation Corrected (mm/day) -#> +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> +#> ── NASA/POWER CERES/MERRA2 Native Resolution Daily Data ─────────────────────────────────────────── +#> Dates (month/day/year): 01/01/1985 through 01/31/1985 +#> Location: Latitude -27.48 Longitude 151.81 +#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 442.77 meters +#> The value for missing source data that cannot be computed or is outside of the sources availability +#> range: NA +#> Parameter(s): +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> Parameters: +#> RH2M MERRA-2 Relative Humidity at 2 Meters (%) ; T2M MERRA-2 Temperature at 2 Meters (C) ; +#> PRECTOTCORR MERRA-2 Precipitation Corrected (mm/day) +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── #> # A tibble: 31 × 10 #> LON LAT YEAR MM DD DOY YYYYMMDD RH2M T2M PRECTOTCORR #> @@ -80,17 +82,19 @@ daily_region_ag <- get_power( ) daily_region_ag -#> NASA/POWER CERES/MERRA2 Native Resolution Daily Data -#> Dates (month/day/year): 01/01/1985 through 01/02/1985 -#> Location: Regional -#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = na meters -#> The value for missing source data that cannot be computed or is outside of the sources availability range: NA -#> Parameter(s): -#> -#> Parameters: -#> RH2M MERRA-2 Relative Humidity at 2 Meters (%) ; -#> T2M MERRA-2 Temperature at 2 Meters (C) -#> +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> +#> ── NASA/POWER CERES/MERRA2 Native Resolution Daily Data ─────────────────────────────────────────── +#> Dates (month/day/year): 01/01/1985 through 01/02/1985 +#> Location: Regional +#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = na meters +#> The value for missing source data that cannot be computed or is outside of the sources availability +#> range: NA +#> Parameter(s): +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> Parameters: +#> RH2M MERRA-2 Relative Humidity at 2 Meters (%) ; T2M MERRA-2 Temperature at 2 Meters (C) +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── #> # A tibble: 72 × 9 #> LAT LON YEAR MM DD DOY YYYYMMDD RH2M T2M #> @@ -123,30 +127,33 @@ interannual_re <- get_power( ) interannual_re -#> NASA/POWER CERES/MERRA2 Native Resolution Monthly and Annual -#> Dates (month/day/year): 01/01/1984 through 12/31/1985 -#> Location: Regional -#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = na meters -#> The value for missing source data that cannot be computed or is outside of the sources availability range: NA -#> Parameter(s): -#> -#> Parameters: -#> ALLSKY_SFC_SW_DWN CERES SYN1deg All Sky Surface Shortwave Downward Irradiance (kW-hr/m^2/day) ; -#> CLRSKY_SFC_SW_DWN CERES SYN1deg Clear Sky Surface Shortwave Downward Irradiance (kW-hr/m^2/day) -#> +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> +#> ── NASA/POWER CERES/MERRA2 Native Resolution Monthly and Annual ─────────────────────────────────── +#> Dates (month/day/year): 01/01/1984 through 12/31/1985 +#> Location: Regional +#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = na meters +#> The value for missing source data that cannot be computed or is outside of the sources availability +#> range: NA +#> Parameter(s): +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> Parameters: +#> ALLSKY_SFC_SW_DWN CERES SYN1deg All Sky Surface Shortwave Downward Irradiance (kW-hr/m^2/day) ; +#> CLRSKY_SFC_SW_DWN CERES SYN1deg Clear Sky Surface Shortwave Downward Irradiance (kW-hr/m^2/day) +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── #> # A tibble: 144 × 17 -#> PARAMETER YEAR LAT LON JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV -#> -#> 1 ALLSKY_SFC_SW… 1984 -25.8 151. 6.01 6.49 5.79 4.67 4.12 3.77 2.46 4.87 6.11 5.5 7.97 -#> 2 ALLSKY_SFC_SW… 1984 -25.8 151. 5.92 5.97 5.64 4.37 4.01 3.61 2.6 4.8 5.84 5.24 7.6 -#> 3 ALLSKY_SFC_SW… 1984 -25.8 152. 5.92 5.97 5.64 4.37 4.01 3.61 2.6 4.8 5.84 5.24 7.6 -#> 4 ALLSKY_SFC_SW… 1984 -25.8 152. 5.96 5.85 5.56 4.26 3.92 3.52 2.66 4.59 5.58 4.94 7.23 -#> 5 ALLSKY_SFC_SW… 1984 -25.8 153. 5.96 5.85 5.56 4.26 3.92 3.52 2.66 4.59 5.58 4.94 7.23 -#> 6 ALLSKY_SFC_SW… 1984 -25.8 153. 6.23 6.05 5.88 4.26 3.81 3.3 2.96 4.73 5.66 5.25 7.6 -#> 7 ALLSKY_SFC_SW… 1984 -26.2 151. 5.97 6.65 6 4.66 4.02 3.72 2.28 4.86 6.08 5.74 7.74 -#> 8 ALLSKY_SFC_SW… 1984 -26.2 151. 6 6.38 5.71 4.38 4.01 3.66 2.17 4.88 6.01 5.43 7.46 -#> 9 ALLSKY_SFC_SW… 1984 -26.2 152. 6 6.38 5.71 4.38 4.01 3.66 2.17 4.88 6.01 5.43 7.46 -#> 10 ALLSKY_SFC_SW… 1984 -26.2 152. 5.75 5.96 5.37 4.13 3.8 3.44 2.38 4.81 5.75 4.99 6.94 +#> PARAMETER YEAR LAT LON JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV +#> +#> 1 ALLSKY_SFC_S… 1984 -25.8 151. 6.01 6.49 5.79 4.67 4.12 3.77 2.46 4.87 6.11 5.5 7.97 +#> 2 ALLSKY_SFC_S… 1984 -25.8 151. 5.92 5.97 5.64 4.37 4.01 3.61 2.6 4.8 5.84 5.24 7.6 +#> 3 ALLSKY_SFC_S… 1984 -25.8 152. 5.92 5.97 5.64 4.37 4.01 3.61 2.6 4.8 5.84 5.24 7.6 +#> 4 ALLSKY_SFC_S… 1984 -25.8 152. 5.96 5.85 5.56 4.26 3.92 3.52 2.66 4.59 5.58 4.94 7.23 +#> 5 ALLSKY_SFC_S… 1984 -25.8 153. 5.96 5.85 5.56 4.26 3.92 3.52 2.66 4.59 5.58 4.94 7.23 +#> 6 ALLSKY_SFC_S… 1984 -25.8 153. 6.23 6.05 5.88 4.26 3.81 3.3 2.96 4.73 5.66 5.25 7.6 +#> 7 ALLSKY_SFC_S… 1984 -26.2 151. 5.97 6.65 6 4.66 4.02 3.72 2.28 4.86 6.08 5.74 7.74 +#> 8 ALLSKY_SFC_S… 1984 -26.2 151. 6 6.38 5.71 4.38 4.01 3.66 2.17 4.88 6.01 5.43 7.46 +#> 9 ALLSKY_SFC_S… 1984 -26.2 152. 6 6.38 5.71 4.38 4.01 3.66 2.17 4.88 6.01 5.43 7.46 +#> 10 ALLSKY_SFC_S… 1984 -26.2 152. 5.75 5.96 5.37 4.13 3.8 3.44 2.38 4.81 5.75 4.99 6.94 #> # ℹ 134 more rows #> # ℹ 2 more variables: DEC , ANN ``` @@ -168,22 +175,25 @@ climatology_ag <- get_power( ) climatology_ag -#> NASA/POWER CERES/MERRA2 Native Resolution Climatology Climatologies -#> 20-year Meteorological and Solar Monthly & Annual Climatologies (January 2001 - December 2020) -#> Location: Latitude -27.48 Longitude 151.81 -#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 442.77 meters -#> The value for missing source data that cannot be computed or is outside of the sources availability range: NA -#> Parameter(s): -#> -#> Parameters: -#> T2M MERRA-2 Temperature at 2 Meters (C) ; -#> RH2M MERRA-2 Relative Humidity at 2 Meters (%) -#> +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> +#> ── NASA/POWER CERES/MERRA2 Native Resolution Climatology Climatologies ──────────────────────────── +#> 20-year Meteorological and Solar Monthly & Annual Climatologies (January 2001 - December 2020) +#> Location: Latitude -27.48 Longitude 151.81 +#> Elevation from MERRA-2: Average for 0.5 x 0.625 degree lat/lon region = 442.77 meters +#> The value for missing source data that cannot be computed or is outside of the sources availability +#> range: NA +#> Parameter(s): +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── +#> Parameters: +#> T2M MERRA-2 Temperature at 2 Meters (C) ; RH2M MERRA-2 Relative Humidity at 2 Meters (%) +#> ──────────────────────────────────────────────────────────────────────────────────────────────────── #> # A tibble: 2 × 16 -#> LON LAT PARAMETER JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ANN -#> -#> 1 152. -27.5 T2M 24.7 23.7 22.0 19.0 15.1 12.6 11.6 13.1 16.9 20 22.3 23.7 18.7 -#> 2 152. -27.5 RH2M 64.7 69.6 71.1 70.5 69.1 75.1 70.4 63.1 59.8 59.4 60.3 63.4 66.4 +#> LON LAT PARAMETER JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC +#> +#> 1 152. -27.5 T2M 24.7 23.7 22.0 19.0 15.1 12.6 11.6 13.1 16.9 20 22.3 23.7 +#> 2 152. -27.5 RH2M 64.7 69.6 71.1 70.5 69.1 75.1 70.4 63.1 59.8 59.4 60.3 63.4 +#> # ℹ 1 more variable: ANN ``` _Note_ the associated metadata in the data frame header are not saved if the data are exported to a file format other than an R data format, _e.g._, .Rdata, .rda or .rds.