sw_meteo_obtain | R Documentation |
rSOILWAT2
Extract meteorological data from external source and format for rSOILWAT2
sw_meteo_obtain_DayMet(x, start_year, end_year, rawdata = NULL, ...)
sw_meteo_obtain_SCAN(x, start_year, end_year, rawdata = NULL, ...)
x |
Identifying information for the station/location for which meteorological data is requested, see details. |
start_year |
A integer value. The first calendar year of the simulation. |
end_year |
A integer value. The last calendar year of the simulation. |
rawdata |
A data object retrieved previously. |
... |
Additional arguments are ignored. |
A list with the following elements
"metadata"
: site metadata (if available)
"rawdata"
: data as downloaded (or argument rawdata
if provided)
"weatherDF"
: data frame with weather data formatted for rSOILWAT2
"vals_missing"
: logical matrix indicating which weather values in
"weatherDF"
are missing
"desc_rsds"
: solar radiation descriptor (if available)
"use_cloudCoverMonthly"
: flag indicating need for monthly cloud cover
"use_windSpeedMonthly"
: flag indicating need for monthly wind speed
"use_humidityMonthly"
: flag indicating need for monthly humidity
"dailyInputFlags"
: logical vector indicating which weather variables
contain at least some values (see calc_dailyInputFlags()
)
sw_meteo_obtain_DayMet()
uses data from
DayMet ORNL DAAC
via daymetr::download_daymet()
.
The argument x
is a named vector with "longitude"
and "latitude"
in
decimal degrees.
sw_meteo_obtain_SCAN()
uses data from
USDA-NRCS
SCAN/SNOTEL
stations
via soilDB::fetchSCAN()
.
The argument x
takes a NRCS
SCAN/SNOTEL
station code.
## Example: Daymet weather for "Mccracken Mesa" location
## (see `mm_scan[["metadata"]]`)
if (requireNamespace("curl") && curl::has_internet()) {
mm_dm <- rSOILWAT2::sw_meteo_obtain_DayMet(
x = c(longitude = -109.3378, latitude = 37.44671),
start_year = 2015,
end_year = 2023
)
# Fill in missing values
mm_dm_wdata <- rSOILWAT2::dbW_fixWeather(mm_dm[["weatherDF"]])
# Prepare weather setup for a SOILWAT2 simulation
swin <- rSOILWAT2::sw_exampleData
rSOILWAT2::swYears_EndYear(swin) <- 2023
rSOILWAT2::swYears_StartYear(swin) <- 2015
swin@weather@desc_rsds <- mm_dm[["desc_rsds"]]
swin@weather@use_cloudCoverMonthly <- mm_dm[["use_cloudCoverMonthly"]]
swin@weather@use_windSpeedMonthly <- mm_dm[["use_windSpeedMonthly"]]
swin@weather@use_humidityMonthly <- mm_dm[["use_humidityMonthly"]]
swin@weather@dailyInputFlags <- mm_dm[["dailyInputFlags"]]
# Run simulation (after providing inputs for CO2, etc.)
swout <- try(
rSOILWAT2::sw_exec(
inputData = swin,
weatherList = mm_dm_wdata[["weatherData"]],
quiet = TRUE
),
silent = TRUE
)
}
## Example: SCAN station "Mccracken Mesa"
if (requireNamespace("curl") && curl::has_internet()) {
mm_scan <- rSOILWAT2::sw_meteo_obtain_SCAN(
x = 2140, # SCAN station code
start_year = 2015,
end_year = 2023
)
}
if (exists("mm_scan") && exists("mm_dm") && requireNamespace("graphics")) {
vars <- c("Tmax_C", "Tmin_C", "PPT_cm")
par_prev <- graphics::par(mfrow = grDevices::n2mfrow(length(vars)))
for (k in seq_along(vars)) {
graphics::plot(
x = mm_scan[["weatherDF"]][[vars[[k]]]],
y = mm_dm[["weatherDF"]][[vars[[k]]]],
xlab = paste("SCAN", vars[[k]]),
ylab = paste("DayMet", vars[[k]])
)
graphics::abline(a = 0, b = 1, col = "red")
}
graphics::par(par_prev)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.