get_cdec: Get CDEC Data

View source: R/get_cdec.R

get_cdecR Documentation

Get CDEC Data

Description

This function takes a station and sensor along with a duration and start and end date. It returns associated CDEC sensor data in a dataframe. This function can download data for a single station or a list of multiple stations at once using purrr.

Usage

get_cdec(station, sensor, duration, start, end)

Arguments

station

Station is 3 letter abbreviation (see https://info.water.ca.gov/staMeta.html)

sensor

Sensor is number.

duration

Duration is E=event, D=Daily, H=Hourly.

start

A start date formatted as "YYYY-MM-DD".

end

A end date formatted as "YYYY-MM-DD".

Details

Commonly used sensors include:

  • 1 stage (ft)

  • 20 flow (cfs)

  • 2 rain accum (in)

  • 16 precip tippingbucket (in)

  • 45 ppt incremental (in)

  • 3 snow water content (in)

  • 18 snow depth (in)

  • 6 reservoir elevation (ft)

  • 15 reservoir storage (ac-ft)

  • 76 reservoir inflow

  • 25 water temp

  • 4 air temp

Value

Will return a dataframe with station ID and associated sensor data.

See Also

Examples

# set up the parameters to use in function:
library(dplyr)
library(purrr)
sens <- c(20)
startT <- c("2013-12-01")
endT <- c("2019-03-01")
stations <- c("CLW", "MLW", "TIS")
dur  <- c("H") # hourly here, try this with "H" "D" or "E"
# combine into one argument list (note, order matches function order)
varList <- list(stations, sens, dur, startT, endT)
# now run function:
# now map each argument in parallel, then combine
cdec_hrly <- pmap(varList, get_cdec) %>% bind_rows()
# check records by station
table(cdec_hrly$station_id)
# check date range
cdec_hrly %>%
  group_by(station_id) %>%
  summarize(mx=max(datetime), mn=min(datetime))
# Format to Daily Data (requires dplyr)
cdec <- cdec_hrly %>%
  mutate(date = as.Date(datetime)) %>%
  group_by(station_id, date) %>%
  summarize("daily_cfs" = mean(value, na.rm = TRUE)) %>%
  filter(!is.na(daily_cfs))
# here we can add Water Year and plot
  library(lubridate)
  cdec <- cdec %>%
  add_WYD("date") %>%
  mutate(month = lubridate::month(date),
      mday = lubridate::mday(date),
      md = format(date, "%m/%d"))
# now make datasets for each overtopping weir
# Tisdale overtops at 45.45 feet:
tis<- cdec %>%
  filter(station_id == "TIS") %>%
  mutate(WY_rev = as.numeric(as.character(WY))+.3)
# Colusa Weir overtopping
col<- cdec %>%
  filter(station_id == "CLW") %>%
  mutate(WY_rev = as.numeric(as.character(WY))+.6)
# Moulton Weir overtopping
mol<- cdec %>%
  filter(station_id == "MLW") %>%
  mutate(WY_rev = as.numeric(as.character(WY))+.9)
# now plot!
library(ggplot2)
ggplot() +
  geom_point(data=tis, aes(x=DOWY, y=WY_rev, shape=station_id,
                       color=station_id), size=2.5, alpha=0.9) +
  geom_point(data=col, aes(x=DOWY, y=WY_rev, shape=station_id,
                       color=station_id), size=2, alpha=0.9) +
  geom_point(data=mol, aes(x=DOWY, y=WY_rev,
                       shape=station_id, color=station_id), size=1, alpha=0.9) +
  theme_bw(base_size = 10) +
  scale_shape_manual("Station", values = c(16,17,15))+
  labs(x= "", y= "Water Year") +
  scale_color_viridis_d("Station", direction = -1, option = "D") +
  scale_y_continuous(breaks= seq(2012.5, 2020.5, 1), labels=c(seq(2012, 2020, 1))) +
  scale_x_continuous(breaks = seq(0, 365, 61),
                     labels = c("Oct", "Dec", "Feb", "Apr", "Jun", "Aug"),
                     limits = c(0, 340)) +
  theme(plot.title = element_text(hjust = 0.5),
        legend.position = c(0.9, 0.7))
# single plot:
(tis.plot<-ggplot() +
   geom_tile(data=tis, aes(x=DOWY, y=WY,
                           fill=station_id), show.legend = FALSE) +
   labs(x= "", y= "Water Year", title = "Tisdale Overtopping") +
   scale_fill_viridis_d("Station", direction = -1, option = "C") +
   scale_y_continuous(breaks= seq(2012.5, 2020.5, 1), labels=c(seq(2012, 2020, 1))) +
   scale_x_continuous(breaks = seq(0, 365, 61),
                      labels = c("Oct", "Dec", "Feb",
                                 "Apr", "Jun", "Aug"),
                      limits = c(0, 340)) +
   theme(plot.title = element_text(hjust = 0.5)) +
   coord_cartesian(expand = FALSE))

ryanpeek/wateRshedTools documentation built on Jan. 6, 2023, 7:06 a.m.