Skip to content
Snippets Groups Projects
Commit 521ca4be authored by Laura A DeCicco's avatar Laura A DeCicco
Browse files

Changed to readRDB.

parent 4c708ba6
No related branches found
No related tags found
1 merge request!39Overhaul of function names. Move some functionality to EGRET.
#' USGS data availability
#'
#' Imports a table of available parameters, period of record, and count.
#' Imports a table of available parameters, period of record, and count. See \url{http://waterservices.usgs.gov/rest/Site-Service.html}
#' for more information.
#'
#' @param siteNumbers string vector of USGS site number or multiple sites.
#' @param service vector string. Options are "all", or one or many of "dv"(daily values),
#' "uv","rt", or "iv"(unit values), "qw"(water-quality),"sv"(sites visits),"pk"(peak measurements),
#' "gw"(groundwater levels), "ad" (sites included in USGS Annual Water Data Reports External Link),
#' "aw" (sites monitored by the USGS Active Groundwater Level Network External Link), "id" (historical
#' instantaneous values), "
#' instantaneous values)
#' @param parameterCd string vector of valid parameter codes to return. Defaults to "all" which will not perform a filter.
#' @param statCd string vector of all statistic codes to return. Defaults to "all" which will not perform a filter.
#' @keywords data import USGS web service
......@@ -48,64 +49,35 @@ whatNWISdata <- function(siteNumbers,service="all",parameterCd="all",statCd="all
urlSitefile <- paste("http://waterservices.usgs.gov/nwis/site/?format=rdb&seriesCatalogOutput=true&sites=",siteNumber,sep = "")
doc = tryCatch({
h <- basicHeaderGatherer()
doc <- getURL(urlSitefile, headerfunction = h$update)
}, warning = function(w) {
message(paste("URL caused a warning:", urlSitefile))
message(w)
}, error = function(e) {
message(paste("URL does not seem to exist:", urlSitefile))
message(e)
return(NA)
})
SiteFile <- importRDB1(urlSitefile, asDateTime = FALSE)
if(h$value()["Content-Type"] == "text/plain;charset=UTF-8"){
SiteFile <- read.delim(
textConnection(doc),
header = TRUE,
quote="\"",
dec=".",
sep='\t',
colClasses=c('character'),
fill = TRUE,
comment.char="#")
SiteFile <- SiteFile[-1,]
numberColumns <- grep("_va",names(SiteFile))
SiteFile[,numberColumns] <- sapply(SiteFile[,numberColumns],as.numeric)
intColumns <- grep("_nu",names(SiteFile))
SiteFile[,intColumns] <- sapply(SiteFile[,intColumns],as.integer)
parameterCds <- unique(SiteFile$parm_cd)
parameterCdFile <- parameterCdFile
parameterCdINFO <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCds,]
SiteFile <- merge(SiteFile,parameterCdINFO,by.x="parm_cd" ,by.y="parameter_cd",all=TRUE)
if(!("all" %in% service)){
SiteFile <- SiteFile[SiteFile$data_type_cd %in% service,]
}
if(!("all" %in% statCd)){
SiteFile <- SiteFile[SiteFile$stat_cd %in% statCd,]
}
if(!("all" %in% parameterCd)){
SiteFile <- SiteFile[SiteFile$parm_cd %in% parameterCd,]
}
SiteFile$begin_date <- as.Date(parse_date_time(SiteFile$begin_date, c("Ymd", "mdY", "Y!")))
SiteFile$end_date <- as.Date(parse_date_time(SiteFile$end_date, c("Ymd", "mdY", "Y!")))
return(SiteFile)
} else {
message(paste("URL caused an error:", urlSitefile))
message("Content-Type=",h$value()["Content-Type"])
return(NA)
headerInfo <- comment(SiteFile)
parameterCds <- unique(SiteFile$parm_cd)
parameterCdFile <- parameterCdFile
parameterCdINFO <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCds,]
SiteFile <- merge(SiteFile,parameterCdINFO,by.x="parm_cd" ,by.y="parameter_cd",all=TRUE)
if(!("all" %in% service)){
SiteFile <- SiteFile[SiteFile$data_type_cd %in% service,]
}
if(!("all" %in% statCd)){
SiteFile <- SiteFile[SiteFile$stat_cd %in% statCd,]
}
if(!("all" %in% parameterCd)){
SiteFile <- SiteFile[SiteFile$parm_cd %in% parameterCd,]
}
SiteFile$begin_date <- as.Date(parse_date_time(SiteFile$begin_date, c("Ymd", "mdY", "Y!")))
SiteFile$end_date <- as.Date(parse_date_time(SiteFile$end_date, c("Ymd", "mdY", "Y!")))
comment(SiteFile) <- headerInfo
attr(SiteFile, "url") <- urlSitefile
return(SiteFile)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment