The SNOTEL network is composed of over 800 automated data collection sites located in remote, high-elevation mountain watersheds in the western U.S. They are used to monitor snowpack, precipitation, temperature, and other climatic conditions. The data collected at SNOTEL sites are transmitted to a central database. This package queries this centralized database to provide easy access to these data and additional seasonal metrics of snow accumulation (snow phenology).
The SNOTEL network consists of a vast number of observation sites,
all of them listed together with their meta-data on the SNOTEL website.
The snotel_info()
function allows you to query this table
and import it as a neat table into R
. Some of the
meta-data, in particular the site id (site_id
), you will
need of you want to download the data for a site. You can save this
table to disk using the path
variable to specify a location
on your computer where to store the data as a csv. If this parameter is
missing the data is returned as an R
variable.
# download and list site information
<- snotel_info()
site_meta_data head(site_meta_data)
#> network state site_name description
#> 1 SNTL ID couch summit Lower Little Smoky Creek (170501130204)
#> 2 SNTL NV lamoille upper Thomas Creek-Lamoille Creek (160401010607)
#> 3 SNTL AK creamers field Chena River (190803060907)
#> 4 SNTL AK dahl creek Dahl Creek (190503021508)
#> 5 SNTL AK paradise hill 190803010807-Black Hills (190803010807)
#> 6 SNTL ID fish ck Upper Fish Creek (170402210401)
#> start end latitude longitude elev county site_id
#> 1 2021-10-01 2022-08-20 43.52 -114.80 2073 Camas 1306
#> 2 2022-08-01 2022-08-20 40.60 -115.38 2741 Elko 1310
#> 3 2021-08-01 2022-08-20 64.87 -147.74 134 Fairbanks North Star 1302
#> 4 2021-09-01 2022-08-20 66.95 -156.90 79 Northwest Arctic 1303
#> 5 2021-07-01 2022-08-20 62.83 -141.41 613 Southeast Fairbanks 1301
#> 6 2021-09-01 2022-08-20 43.56 -113.72 1929 Blaine 1305
If you downloaded the meta-data for all sites you can make a
selection using either geographic coordinates, or state
columns. For the sake of brevity I’ll only query data for one site using
its site_id
below. By default the data, reported in
imperial values, are converted to metric measurements.
# downloading data for a random site
<- snotel_download(site_id = 670, internal = TRUE)
snow_data #> Downloading site: northeast entrance , with id: 670
# show the data
head(snow_data)
#> network state site_name description start
#> 1 SNTL MT northeast entrance Cold Creek (100700010602) 1937-10-01
#> 2 SNTL MT northeast entrance Cold Creek (100700010602) 1937-10-01
#> 3 SNTL MT northeast entrance Cold Creek (100700010602) 1937-10-01
#> 4 SNTL MT northeast entrance Cold Creek (100700010602) 1937-10-01
#> 5 SNTL MT northeast entrance Cold Creek (100700010602) 1937-10-01
#> 6 SNTL MT northeast entrance Cold Creek (100700010602) 1937-10-01
#> end latitude longitude elev county site_id
#> 1 2022-08-20 45.01 -110.01 2240 Yellowstone National Park 670
#> 2 2022-08-20 45.01 -110.01 2240 Yellowstone National Park 670
#> 3 2022-08-20 45.01 -110.01 2240 Yellowstone National Park 670
#> 4 2022-08-20 45.01 -110.01 2240 Yellowstone National Park 670
#> 5 2022-08-20 45.01 -110.01 2240 Yellowstone National Park 670
#> 6 2022-08-20 45.01 -110.01 2240 Yellowstone National Park 670
#> date snow_water_equivalent precipitation_cumulative temperature_max
#> 1 1966-10-01 0 NA NA
#> 2 1966-10-02 8 NA NA
#> 3 1966-10-03 0 NA NA
#> 4 1966-10-04 0 NA NA
#> 5 1966-10-05 0 NA NA
#> 6 1966-10-06 0 NA NA
#> temperature_min temperature_mean precipitation
#> 1 NA NA NA
#> 2 NA NA NA
#> 3 NA NA NA
#> 4 NA NA NA
#> 5 NA NA NA
#> 6 NA NA NA
# A plot of snow accummulation through the years
plot(as.Date(snow_data$date),
$snow_water_equivalent,
snow_datatype = "l",
xlab = "Date",
ylab = "SWE (mm)")
Although the main function of the package is to provide easy access
to the SNOTEL data a function snotel_phenology()
is
provided to calculate seasonal metrics of snow deposition.
# calculate snow phenology
<- snotel_phenology(snow_data)
phenology #> Warning in rbind(deparse.level, ...): number of columns of result, 7, is not a
#> multiple of vector length 4 of arg 1
#> Warning in rbind(deparse.level, ...): number of columns of result, 7, is not a
#> multiple of vector length 4 of arg 57
# subset data to the first decade of the century
<- subset(snow_data, as.Date(date) > as.Date("2000-01-01") &
snow_data_subset as.Date(date) < as.Date("2010-01-01"))
# plot the snow water equivalent time series
plot(as.Date(snow_data_subset$date),
$snow_water_equivalent,
snow_data_subsettype = "l",
xlab = "Date",
ylab = "SWE (mm)")
# plot the dates of first snow accumulation as a red dot
points(as.Date(paste(phenology$year, phenology$first_snow_acc),"%Y %j"),
rep(1,nrow(phenology)),
col = "red",
pch = 19,
cex = 0.5)
A list of all provided snow phenology statistics is provided below.
Value | Description |
---|---|
year | The year in which the an event happened |
first_snow_melt | day of first full snow melt (in DOY) |
cont_snow_acc | start of continuous snow accumulation / retention (in DOY) |
last_snow_melt | day on which all snow melts for the remaining year (in DOY) |
first_snow_acc | day on which the first snow accumulates (in DOY) |
max_swe | maximum snow water equivalent value during a given year (in mm) |
max_swe_doy | day on which the maximum snow water equivalent value is reached (in DOY) |
Please use the proper Zenodo DOI when using this software for research purposes.