From 521ca4bef1a479eb7bbe3035d6a60148c6bedaaf Mon Sep 17 00:00:00 2001
From: unknown <ldecicco@usgs.gov>
Date: Tue, 11 Nov 2014 16:17:28 -0600
Subject: [PATCH] Changed to readRDB.

---
 R/whatNWISData.r | 92 +++++++++++++++++-------------------------------
 1 file changed, 32 insertions(+), 60 deletions(-)

diff --git a/R/whatNWISData.r b/R/whatNWISData.r
index 1ef6ec37..8c155734 100644
--- a/R/whatNWISData.r
+++ b/R/whatNWISData.r
@@ -1,13 +1,14 @@
 #' 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)
+
 }
-- 
GitLab