readNWISdv.r 3.49 KB
Newer Older
1
#' Daily Value USGS NWIS Data Retrieval
Laura A DeCicco's avatar
Laura A DeCicco committed
2
#'
Laura A DeCicco's avatar
Laura A DeCicco committed
3
#' Imports data from NWIS web service. This function gets the data from here: \url{https://waterservices.usgs.gov/}
Laura A DeCicco's avatar
Laura A DeCicco committed
4
#'
5
#' @param siteNumbers character USGS site number.  This is usually an 8 digit number. Multiple sites can be requested with a character vector.
6
#' @param parameterCd character of USGS parameter code(s).  This is usually an 5 digit number.
7
#' @param startDate character starting date for data retrieval in the form YYYY-MM-DD. Default is "" which indicates
8
#' retrieval for the earliest possible record. Date arguments are always specified in local time.
9
#' @param endDate character ending date for data retrieval in the form YYYY-MM-DD. Default is "" which indicates
10
#' retrieval for the latest possible record. Date arguments are always specified in local time.
11
#' @param statCd character USGS statistic code. This is usually 5 digits.  Daily mean (00003) is the default.
Laura A DeCicco's avatar
Laura A DeCicco committed
12
13
14
15
16
#' @return A data frame with the following columns:
#' \tabular{lll}{
#' Name \tab Type \tab Description \cr
#' agency \tab character \tab The NWIS code for the agency reporting the data\cr
#' site \tab character \tab The USGS site number \cr
Laura A DeCicco's avatar
Laura A DeCicco committed
17
#' Date \tab Date \tab The date of the value \cr 
Laura A DeCicco's avatar
Laura A DeCicco committed
18
19
20
21
22
23
24
25
26
27
#' code \tab character \tab Any codes that qualify the corresponding value\cr
#' value \tab numeric \tab The numeric value for the parameter \cr
#' }
#' Note that code and value are repeated for the parameters requested. The names are of the form 
#' X_D_P_S, where X is literal, 
#' D is an option description of the parameter, 
#' P is the parameter code, 
#' and S is the statistic code (if applicable).
#' 
#' There are also several useful attributes attached to the data frame:
Laura A DeCicco's avatar
Laura A DeCicco committed
28
#' \tabular{lll}{
Laura A DeCicco's avatar
Laura A DeCicco committed
29
30
31
32
33
34
35
36
37
#' Name \tab Type \tab Description \cr
#' url \tab character \tab The url used to generate the data \cr
#' siteInfo \tab data.frame \tab A data frame containing information on the requested sites \cr
#' variableInfo \tab data.frame \tab A data frame containing information on the requested parameters \cr
#' statisticInfo \tab data.frame \tab A data frame containing information on the requested statistics on the data \cr
#' queryTime \tab POSIXct \tab The time the data was returned \cr
#' }
#' 
#' @seealso \code{\link{renameNWISColumns}}, \code{\link{importWaterML1}}
Laura A DeCicco's avatar
Laura A DeCicco committed
38
#' @export
39
#' @keywords data import USGS web service
Laura A DeCicco's avatar
Laura A DeCicco committed
40
#' @examplesIf is_dataRetrieval_user()
41
#' site_id <- '04085427'
Laura A DeCicco's avatar
Laura A DeCicco committed
42
43
#' startDate <- '2012-01-01'
#' endDate <- '2012-06-30'
44
#' pCode <- '00060'
45
#' \donttest{
46
47
#' rawDailyQ <- readNWISdv(site_id,pCode, startDate, endDate)
#' rawDailyQAndTempMeanMax <- readNWISdv(site_id,c('00010','00060'),
Laura A DeCicco's avatar
Laura A DeCicco committed
48
#'        startDate, endDate, statCd=c('00001','00003'))
Laura A DeCicco's avatar
Laura A DeCicco committed
49
#' rawDailyQAndTempMeanMax <- renameNWISColumns(rawDailyQAndTempMeanMax)
Laura A DeCicco's avatar
Laura A DeCicco committed
50
#' rawDailyMultiSites<- readNWISdv(c("01491000","01645000"),c('00010','00060'),
51
#'        startDate, endDate, statCd=c('00001','00003'))
Laura A DeCicco's avatar
Laura A DeCicco committed
52
53
54
55
56
#' # Site with no data:
#' x <- readNWISdv("10258500","00060", "2014-09-08", "2014-09-14")
#' names(attributes(x))
#' attr(x, "siteInfo")
#' attr(x, "variableInfo")
Laura A DeCicco's avatar
Laura A DeCicco committed
57
58
59
#' 
#' site <- "05212700"
#' notActive <- readNWISdv(site, "00060", "2014-01-01","2014-01-07")
60
#' }
61
readNWISdv <- function (siteNumbers,parameterCd,startDate="",endDate="",statCd="00003"){  
62
  
63
  url <- constructNWISURL(siteNumbers,parameterCd,startDate,endDate,"dv",statCd=statCd)
Laura A DeCicco's avatar
Laura A DeCicco committed
64

Laura A DeCicco's avatar
Laura A DeCicco committed
65
  data <- importWaterML1(url, asDateTime=FALSE)
Laura A DeCicco's avatar
Laura A DeCicco committed
66
  if(nrow(data)>0){
67
    data$dateTime <- as.Date(data$dateTime)
68
    data$tz_cd <- NULL
Laura A DeCicco's avatar
Laura A DeCicco committed
69
70
    
    names(data)[names(data) == "dateTime"] <- "Date"    
Laura A DeCicco's avatar
Laura A DeCicco committed
71
72
  }
  
Laura A DeCicco's avatar
Laura A DeCicco committed
73

74
  return (data)
75
}