The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

snotelr functionality

Koen Hufkens

2024-11-20

Introduction

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).

Downloading site meta-data

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
site_meta_data <- snotel_info()
head(site_meta_data)

Downloading site data

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
snow_data <- snotel_download(
  site_id = 670,
  internal = TRUE
  )

# show the data
head(snow_data)
# A plot of snow accummulation through the years
plot(as.Date(snow_data$date),
     snow_data$snow_water_equivalent,
     type = "l",
     xlab = "Date",
     ylab = "SWE (mm)"
    )

Calculating snow phenology from downloaded data or data frames

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
phenology <- snotel_phenology(snow_data)
# subset data to the first decade of the century
snow_data_subset <- subset(snow_data, as.Date(date) > as.Date("2000-01-01") &
                             as.Date(date) < as.Date("2010-01-01"))

# plot the snow water equivalent time series
plot(as.Date(snow_data_subset$date),
     snow_data_subset$snow_water_equivalent,
     type = "l",
     xlab = "Date",
     ylab = "SWE (mm)"
  )

# plot the dates of first snow accumulation as a red dot
points(phenology$first_snow_acc,
       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)

Reference

Please use the proper Zenodo DOI when using this software for research purposes.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.