From 223ada5e530f9c87433cc533f41e9582374fa762 Mon Sep 17 00:00:00 2001 From: unknown <ldecicco@usgs.gov> Date: Mon, 22 Sep 2014 14:06:33 -0500 Subject: [PATCH] Updated naming convention. --- NAMESPACE | 10 ++++- NEWS | 4 +- R/basicWQPData.R | 4 +- R/getDVData.r | 48 +++++++++++++++++++++-- R/getDailyDataFromFile.r | 38 ++++++++++++++++++- R/getDataAvailability.r | 80 +++++++++++++++++++++++++++++++++++++-- R/getMetaData.r | 4 +- R/getParameterInfo.r | 42 +++++++++++--------- R/getQWDataFromFile.r | 46 ---------------------- R/getRawQWData.r | 4 +- R/getSTORETSampleData.R | 52 +++++++++++++++++++++++-- R/getSampleData.r | 45 +++++++++++++++++++--- R/getSampleDataFromFile.r | 35 +++++++++++++++-- R/getSiteFileData.r | 67 ++++++++++++++++++++++++++++++-- R/getWQPData.r | 2 +- R/populateParameterINFO.r | 4 +- R/populateSiteINFO.r | 2 +- R/renameColumns.R | 2 +- 18 files changed, 387 insertions(+), 102 deletions(-) delete mode 100644 R/getQWDataFromFile.r diff --git a/NAMESPACE b/NAMESPACE index 880043c4..1a36ddfa 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,6 +1,5 @@ # Generated by roxygen2 (4.0.2): do not edit by hand -export(basicWQPData) export(checkStartEndDate) export(compressData) export(constructNWISURL) @@ -13,7 +12,12 @@ export(getDailyDataFromFile) export(getDataAvailability) export(getDataFromFile) export(getMetaData) +export(getNWISDaily) export(getNWISData) +export(getNWISDataAvailability) +export(getNWISPcodeInfo) +export(getNWISSample) +export(getNWISSiteInfo) export(getNWISSites) export(getParameterInfo) export(getQWDataFromFile) @@ -22,7 +26,10 @@ export(getSTORETSampleData) export(getSampleData) export(getSampleDataFromFile) export(getSiteFileData) +export(getUserDaily) +export(getUserSample) export(getWQPData) +export(getWQPSample) export(getWQPSites) export(getWaterML1Data) export(getWaterML2Data) @@ -35,6 +42,7 @@ export(populateParameterINFO) export(populateSampleColumns) export(populateSiteINFO) export(processQWData) +export(readWQPData) export(removeDuplicates) export(renameColumns) export(retrieveNWISdvData) diff --git a/NEWS b/NEWS index bd63ebe5..fc0f774a 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ dataRetrieval 1.3.3 =========== -* Updated getSiteFileData to retrieve multiple site file datasets at once using a vector of siteNumbers as input argument. +* Updated getNWISSiteInfo to retrieve multiple site file datasets at once using a vector of siteNumbers as input argument. * Updated error-handling for Web service calls. More information is returned when errors happen * Added some basic processing to Water Quality Portal raw data retrievals. Date columns are returned as Date objects, value columns are numeric, and a column is created from the date/time/timezone columns that is POSIXct. * Added very generalized NWIS and WQP retrieval functions (getNWISData, getNWISSites, getGeneralWQPData, and getWQPSites) which allow the user to use any argument available on the Web service platform. @@ -19,7 +19,7 @@ dataRetrieval 1.3.2 dataRetrieval 1.2.2 =========== -* Added getDataAvailability function to find measured parameters and period of record information for a requested station. +* Added getNWISDataAvailability function to find measured parameters and period of record information for a requested station. * Added constructNWISURL function to get the URL that is used to retrieve the data. diff --git a/R/basicWQPData.R b/R/basicWQPData.R index b80e94cb..470b5403 100644 --- a/R/basicWQPData.R +++ b/R/basicWQPData.R @@ -10,8 +10,8 @@ #' @examples #' # These examples require an internet connection to run #' rawSampleURL <- constructNWISURL('USGS-01594440','01075', '1985-01-01', '1985-03-31',"wqp") -#' rawSample <- basicWQPData(rawSampleURL) -basicWQPData <- function(url){ +#' rawSample <- readWQPData(rawSampleURL) +readWQPData <- function(url){ h <- basicHeaderGatherer() diff --git a/R/getDVData.r b/R/getDVData.r index f627846b..209f69a6 100644 --- a/R/getDVData.r +++ b/R/getDVData.r @@ -1,5 +1,44 @@ #' Import Daily Data for WRTDS #' +#' This function is being deprecated for \code{\link{getNWISDaily}}. +#' +#' @param siteNumber string USGS site number. This is usually an 8 digit number +#' @param parameterCd string USGS parameter code. This is usually an 5 digit number. +#' @param startDate string starting date for data retrieval in the form YYYY-MM-DD. +#' @param endDate string ending date for data retrieval in the form YYYY-MM-DD. +#' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. +#' @param convert logical Option to include a conversion from cfs to cms (35.314667). The default is TRUE, +#' which is appropriate for using NWIS data in the EGRET package. Set this to FALSE to not include the conversion. If the parameter code is not 00060 (NWIS discharge), +#' there is no conversion applied. +#' @param format string, can be "tsv" or "xml", and is only applicable for daily and unit value requests. "tsv" returns results faster, but there is a possiblitiy that an incomplete file is returned without warning. XML is slower, +#' but will offer a warning if the file was incomplete (for example, if there was a momentary problem with the internet connection). It is possible to safely use the "tsv" option, +#' but the user must carefully check the results to see if the data returns matches what is expected. The default is "tsv". +#' @keywords data import USGS WRTDS +#' @export +#' @return Daily dataframe +#' @seealso \code{\link{retrieveNWISdvData}}, \code{\link{populateDaily}}, \code{\link{getNWISData}} +#' @examples +#' # These examples require an internet connection to run +#' \dontrun{Daily <- getDVData('01594440','00060', '1985-01-01', '1985-03-31')} +#' \dontrun{DailyCFS <- getDVData('01594440','00060', '1985-01-01', '1985-03-31',convert=FALSE)} +#' \dontrun{DailySuspSediment <- getDVData('01594440','80154', '1985-01-01', '1985-03-31')} +getDVData <- function (siteNumber,parameterCd,startDate,endDate,interactive=TRUE,convert=TRUE,format="tsv"){ + warning("This function is being deprecated, please use getNWISData") + data <- retrieveNWISdvData(siteNumber,parameterCd,startDate,endDate,interactive=interactive,format=format) + + # need to setup conversion factor because the NWIS data are in cfs but we store in cms + names(data) <- c('agency', 'site', 'dateTime', 'value', 'code') # do a merge instead? + + qConvert <- ifelse("00060" == parameterCd, 35.314667, 1) + qConvert<- ifelse(convert,qConvert,1) + + localDaily <- populateDaily(data,qConvert,interactive=interactive) + return (localDaily) +} + + +#' Import NWIS Daily Data for EGRET analysis +#' #' Imports data from NWIS web service. This function gets the data from here: \url{http://waterservices.usgs.gov/} #' A list of parameter codes can be found here: \url{http://nwis.waterdata.usgs.gov/nwis/pmcodes/} #' A list of statistic codes can be found here: \url{http://nwis.waterdata.usgs.gov/nwis/help/?read_file=stat&format=table} @@ -21,10 +60,11 @@ #' @seealso \code{\link{retrieveNWISdvData}}, \code{\link{populateDaily}} #' @examples #' # These examples require an internet connection to run -#' Daily <- getDVData('01594440','00060', '1985-01-01', '1985-03-31') -#' DailyCFS <- getDVData('01594440','00060', '1985-01-01', '1985-03-31',convert=FALSE) -#' DailySuspSediment <- getDVData('01594440','80154', '1985-01-01', '1985-03-31') -getDVData <- function (siteNumber,parameterCd,startDate,endDate,interactive=TRUE,convert=TRUE,format="tsv"){ +#' Daily <- getNWISDaily('01594440','00060', '1985-01-01', '1985-03-31') +#' DailyCFS <- getNWISDaily('01594440','00060', '1985-01-01', '1985-03-31',convert=FALSE) +#' DailySuspSediment <- getNWISDaily('01594440','80154', '1985-01-01', '1985-03-31') +getNWISDaily <- function (siteNumber,parameterCd,startDate,endDate,interactive=TRUE,convert=TRUE,format="tsv"){ + data <- retrieveNWISdvData(siteNumber,parameterCd,startDate,endDate,interactive=interactive,format=format) # need to setup conversion factor because the NWIS data are in cfs but we store in cms diff --git a/R/getDailyDataFromFile.r b/R/getDailyDataFromFile.r index 714af5f3..94e0fd76 100644 --- a/R/getDailyDataFromFile.r +++ b/R/getDailyDataFromFile.r @@ -1,6 +1,6 @@ #' Import Daily Data for WRTDS #' -#' Imports data from a user-supplied file, and converts it to a Daily data frame, appropriate for WRTDS calculations. +#' This function is being deprecated for \code{\link{getUserDaily}}. #' #' @param filePath string specifying the path to the file #' @param fileName string name of file to open @@ -16,8 +16,42 @@ #' filePath <- system.file("extdata", package="dataRetrieval") #' filePath <- paste(filePath,"/",sep="") #' fileName <- "ChoptankRiverFlow.txt" -#' Daily <- getDailyDataFromFile(filePath,fileName,separator="\t") +#' \dontrun{Daily <- getDailyDataFromFile(filePath,fileName,separator="\t")} getDailyDataFromFile <- function (filePath,fileName,hasHeader=TRUE,separator=",",qUnit=1,interactive=TRUE){ + + warning("This function is being deprecated, please use getUserDaily") + + data <- getDataFromFile(filePath,fileName,hasHeader=hasHeader,separator=separator) + convertQ<-c(35.314667,1,0.035314667,0.001) + qConvert<-convertQ[qUnit] + if (interactive){ + if(qUnit==1) cat("\n the input discharge are assumed to be in cubic feet per second\nif they are in cubic meters per second, then the call to getDailyDataFromFile should specify qUnit=2\n") + } + localDaily <- populateDaily(data,qConvert, interactive=interactive) + localDaily <- localDaily[!is.na(localDaily$Q),] + return(localDaily) +} + +#' Import user daily data for EGRET analysis +#' +#' Imports data from a user-supplied file, and converts it to a Daily data frame, appropriate for WRTDS calculations. +#' +#' @param filePath string specifying the path to the file +#' @param fileName string name of file to open +#' @param hasHeader logical true if the first row of data is the column headers +#' @param separator string character that separates data cells +#' @param qUnit number 1 is cubic feet per second, 2 is cubic meters per second, 3 is 10^3 cubic feet per second, and 4 is 10^3 cubic meters per second +#' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. +#' @keywords data import file +#' @keywords data import USGS WRTDS +#' @export +#' @return Daily dataframe +#' @examples +#' filePath <- system.file("extdata", package="dataRetrieval") +#' filePath <- paste(filePath,"/",sep="") +#' fileName <- "ChoptankRiverFlow.txt" +#' Daily <- getUserDaily(filePath,fileName,separator="\t") +getUserDaily <- function (filePath,fileName,hasHeader=TRUE,separator=",",qUnit=1,interactive=TRUE){ data <- getDataFromFile(filePath,fileName,hasHeader=hasHeader,separator=separator) convertQ<-c(35.314667,1,0.035314667,0.001) qConvert<-convertQ[qUnit] diff --git a/R/getDataAvailability.r b/R/getDataAvailability.r index 1da65952..bf1ff0dc 100644 --- a/R/getDataAvailability.r +++ b/R/getDataAvailability.r @@ -10,11 +10,11 @@ #' @import RCurl #' @examples #' # These examples require an internet connection to run -#' availableData <- getDataAvailability('05114000') +#' availableData <- getNWISDataAvailability('05114000') #' # To find just unit value ('instantaneous') data: -#' uvData <- getDataAvailability('05114000',type="uv") -#' uvDataMulti <- getDataAvailability(c('05114000','09423350'),type="uv") -getDataAvailability <- function(siteNumber,type=c("uv","dv","qw")){ +#' uvData <- getNWISDataAvailability('05114000',type="uv") +#' uvDataMulti <- getNWISDataAvailability(c('05114000','09423350'),type="uv") +getNWISDataAvailability <- function(siteNumber,type=c("uv","dv","qw")){ siteNumber <- paste(siteNumber,collapse=",") @@ -33,6 +33,78 @@ getDataAvailability <- function(siteNumber,type=c("uv","dv","qw")){ return(NA) }) + 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,] + + SiteFile <- with(SiteFile, data.frame(site_no=site_no, parameter_cd=parm_cd, statCd=stat_cd, startDate=begin_date,endDate=end_date, count=count_nu,service=data_type_cd,stringsAsFactors = FALSE)) + + SiteFile <- SiteFile[!is.na(SiteFile$parameter_cd),] + SiteFile <- SiteFile["" != SiteFile$parameter_cd,] + SiteFile$startDate <- as.Date(SiteFile$startDate) + SiteFile$endDate <- as.Date(SiteFile$endDate) + SiteFile$count <- as.numeric(SiteFile$count) + + pCodes <- unique(SiteFile$parameter_cd) + + pcodeINFO <- parameterCdFile[parameterCdFile$parameter_cd %in% pCodes,] + SiteFile <- merge(SiteFile,pcodeINFO,by="parameter_cd") + SiteFile <- SiteFile[SiteFile$service %in% type,] + return(SiteFile) + } else { + message(paste("URL caused an error:", urlSitefile)) + message("Content-Type=",h$value()["Content-Type"]) + return(NA) + } +} + + +#' USGS data availability +#' +#' This function is being deprecated for \code{\link{getNWISDataAvailability}}. +#' +#' @param siteNumber string USGS site number. +#' @param type vector string. Options are "uv", "dv", "qw" +#' @keywords data import USGS web service +#' @return retval dataframe with all information found in the expanded site file +#' @export +#' @import RCurl +#' @examples +#' # These examples require an internet connection to run +#' \dontrun{availableData <- getDataAvailability('05114000')} +#' # To find just unit value ('instantaneous') data: +#' \dontrun{uvData <- getDataAvailability('05114000',type="uv")} +#' \dontrun{uvDataMulti <- getDataAvailability(c('05114000','09423350'),type="uv")} +getDataAvailability <- function(siteNumber,type=c("uv","dv","qw")){ + + warning("This function is being deprecated, please use getNWISDataAvailability") + + siteNumber <- paste(siteNumber,collapse=",") + + 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) + }) + if(h$value()["Content-Type"] == "text/plain;charset=UTF-8"){ SiteFile <- read.delim( textConnection(doc), diff --git a/R/getMetaData.r b/R/getMetaData.r index 9793e2e3..cf64794f 100644 --- a/R/getMetaData.r +++ b/R/getMetaData.r @@ -20,7 +20,7 @@ #' INFO <- getMetaData('05114000','00010') getMetaData <- function(siteNumber="", parameterCd="",interactive=TRUE){ if (nzchar(siteNumber)){ - INFO <- getSiteFileData(siteNumber) + INFO <- getNWISSiteInfo(siteNumber) } else { INFO <- as.data.frame(matrix(ncol = 2, nrow = 1)) names(INFO) <- c('site.no', 'shortName') @@ -28,7 +28,7 @@ getMetaData <- function(siteNumber="", parameterCd="",interactive=TRUE){ INFO <- populateSiteINFO(INFO, siteNumber, interactive=interactive) if (nzchar(parameterCd)){ - parameterData <- getParameterInfo(parameterCd,interactive=interactive) + parameterData <- getNWISPcodeInfo(parameterCd,interactive=interactive) INFO$param.nm <- parameterData$parameter_nm INFO$param.units <- parameterData$parameter_units INFO$paramShortName <- parameterData$srsname diff --git a/R/getParameterInfo.r b/R/getParameterInfo.r index 6cbf51e7..05a5480c 100644 --- a/R/getParameterInfo.r +++ b/R/getParameterInfo.r @@ -10,26 +10,34 @@ #' @export #' @examples #' # These examples require an internet connection to run -#' paramINFO <- getParameterInfo(c('01075','00060','00931')) -getParameterInfo <- function(parameterCd,interactive=TRUE){ +#' paramINFO <- getNWISPcodeInfo(c('01075','00060','00931')) +getNWISPcodeInfo <- function(parameterCd,interactive=TRUE){ parameterCd <- formatCheckParameterCd(parameterCd, interactive=interactive) - -# urlparameterCd <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&pm_search=&casrn_search=&srsname_search=&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" -# # urlparameterCd <- "http://help.waterdata.usgs.gov/code/parameter_cd_query?fmt=rdb&group_cd=%" -# parameterCdFile <- read.delim( -# urlparameterCd, -# header = TRUE, -# quote="\"", -# dec=".", -# sep='\t', -# colClasses=c('character'), -# fill = TRUE, -# comment.char="#") -# dataType <- parameterCdFile[1,] -# parameterCdFile <- parameterCdFile[-1,] parameterData <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCd,] -# parameterData <- parameterCdFile[parameterCdFile$parm_cd %in% parameterCd,] return(parameterData) } + +#' USGS Parameter Data Retrieval +#' +#' This function is being deprecated for \code{\link{getNWISPcodeInfo}}. +#' +#' @param parameterCd vector of USGS parameter codes. This is usually an 5 digit number. +#' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. +#' @keywords data import USGS web service +#' @return parameterData dataframe with all information from the USGS about the particular parameter (usually code, name, short name, units, and CAS registry numbers) +#' @export +#' @examples +#' # These examples require an internet connection to run +#' paramINFO <- getParameterInfo (c('01075','00060','00931')) +getParameterInfo <- function(parameterCd,interactive=TRUE){ + + warning("This function is being deprecated, please use getNWISPcodeInfo") + + parameterCd <- formatCheckParameterCd(parameterCd, interactive=interactive) + + parameterData <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCd,] + + return(parameterData) +} \ No newline at end of file diff --git a/R/getQWDataFromFile.r b/R/getQWDataFromFile.r deleted file mode 100644 index c005ea65..00000000 --- a/R/getQWDataFromFile.r +++ /dev/null @@ -1,46 +0,0 @@ -#' Basic Data Import -#' -#' Imports data from user-supplied data file. Specifically used to import water quality data for use in the WRTDS package. -#' For WRTDS usage, the first column is expected to be dates, the second column remarks (specifically < if censored data), -#' and the third column is measured values. There can be additional columns of data, for each column of data, there should -#' be a remark column preceeding. -#' -#' @param filePath string specifying the path to the file -#' @param fileName string name of file to open -#' @param hasHeader logical true if the first row of data is the column headers -#' @param separator string character that separates data cells -#' @keywords data import file -#' @return retval dataframe -#' @export -#' @examples -#' # Examples of how to use getQWDataFromFile: -#' # Change the file path and file name to something meaningful: -#' filePath <- system.file("extdata", package="dataRetrieval") -#' filePath <- paste(filePath,"/",sep="") -#' fileName <- 'ChoptankRiverNitrate.csv' -#' rawSampleData <- getQWDataFromFile(filePath,fileName, separator=";") -getQWDataFromFile <- function (filePath,fileName,hasHeader=TRUE,separator=","){ - totalPath <- paste(filePath,fileName,sep="") - tmp <- read.delim( - totalPath, - header = hasHeader, - sep=separator, - colClasses=c('character'), - fill = TRUE, - comment.char="#") - - retval <- as.data.frame(tmp, stringsAsFactors=FALSE) - names(retval)[1:3] <- c("dateTime","code","value") - - if(dateFormatCheck(retval$dateTime[1])){ - retval$dateTime <- as.Date(retval$dateTime) - - compressedData <- compressData(retval) - Sample <- populateSampleColumns(compressedData) - return (Sample) - } else { - warning("Please adjust date formatting to 'YYYY-MM-DD'") - return(NA) - } - -} diff --git a/R/getRawQWData.r b/R/getRawQWData.r index 2a034385..5815213b 100644 --- a/R/getRawQWData.r +++ b/R/getRawQWData.r @@ -19,7 +19,7 @@ #' @export #' @import RCurl #' @seealso \code{\link{getWQPData}}, \code{\link{getWQPSites}}, -#' \code{\link{getSTORETSampleData}}, \code{\link{retrieveNWISqwData}}, and \code{\link{basicWQPData}} +#' \code{\link{getSTORETSampleData}}, \code{\link{retrieveNWISqwData}}, and \code{\link{readWQPData}} #' @examples #' # These examples require an internet connection to run #' rawSample <- retrieveWQPqwData('USGS-01594440','01075', '1985-01-01', '1985-03-31') @@ -29,7 +29,7 @@ retrieveWQPqwData <- function(siteNumber,parameterCd,startDate,endDate,interactive=TRUE){ url <- constructNWISURL(siteNumber,parameterCd,startDate,endDate,"wqp",interactive=interactive) - retVal <- basicWQPData(url) + retVal <- readWQPData(url) return(retVal) } diff --git a/R/getSTORETSampleData.R b/R/getSTORETSampleData.R index f1a3fbe3..4a5e1f66 100644 --- a/R/getSTORETSampleData.R +++ b/R/getSTORETSampleData.R @@ -1,3 +1,47 @@ +#' Import Sample Data for WRTDS +#' +#' This function is being deprecated for \code{\link{getWQPSample}}. +#' +#' @param siteNumber string site number. If USGS, it should be in the form :'USGS-XXXXXXXXX...' +#' @param characteristicName string +#' @param startDate string starting date for data retrieval in the form YYYY-MM-DD. +#' @param endDate string ending date for data retrieval in the form YYYY-MM-DD. +#' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. +#' @keywords data import USGS WRTDS +#' @export +#' @return Sample dataframe +#' @seealso \code{\link{getWQPSample}} +#' @examples +#' # These examples require an internet connection to run +#' \dontrun{Sample_01075 <- getSTORETSampleData('USGS-01594440','Chloride', '', '')} +#' \dontrun{Sample_All <- getSTORETSampleData('WIDNR_WQX-10032762','Specific conductance', '', '')} +getSTORETSampleData <- function(siteNumber,characteristicName,startDate,endDate,interactive=TRUE){ + + warning("This function is being deprecated, please use getWQPSample") + + retval <- retrieveWQPqwData(siteNumber=siteNumber, + parameterCd=characteristicName, + startDate=startDate, + endDate=endDate, + interactive=interactive) + #Check for pcode: + if(all(nchar(characteristicName) == 5)){ + suppressWarnings(pCodeLogic <- all(!is.na(as.numeric(characteristicName)))) + } else { + pCodeLogic <- FALSE + } + + if(nrow(retval) > 0){ + data <- processQWData(retval,pCodeLogic) + } else { + data <- NULL + } + + compressedData <- compressData(data, interactive=interactive) + Sample <- populateSampleColumns(compressedData) + return(Sample) +} + #' Import Sample Data for WRTDS #' #' Imports data from the Water Quality Portal, so it could be STORET, NWIS, or . This function gets the data from: \url{http://www.waterqualitydata.us} @@ -13,13 +57,13 @@ #' @export #' @return Sample dataframe #' @seealso \code{\link{getWQPData}}, \code{\link{getWQPSites}}, -#' \code{\link{retrieveWQPqwData}}, \code{\link{retrieveNWISqwData}}, and \code{\link{basicWQPData}}, +#' \code{\link{retrieveWQPqwData}}, \code{\link{retrieveNWISqwData}}, and \code{\link{readWQPData}}, #' \code{\link{compressData}}, \code{\link{populateSampleColumns}} #' @examples #' # These examples require an internet connection to run -#' Sample_01075 <- getSTORETSampleData('USGS-01594440','Chloride', '', '') -#' Sample_All <- getSTORETSampleData('WIDNR_WQX-10032762','Specific conductance', '', '') -getSTORETSampleData <- function(siteNumber,characteristicName,startDate,endDate,interactive=TRUE){ +#' Sample_01075 <- getWQPSample('USGS-01594440','Chloride', '', '') +#' Sample_All <- getWQPSample('WIDNR_WQX-10032762','Specific conductance', '', '') +getWQPSample <- function(siteNumber,characteristicName,startDate,endDate,interactive=TRUE){ retval <- retrieveWQPqwData(siteNumber=siteNumber, parameterCd=characteristicName, diff --git a/R/getSampleData.r b/R/getSampleData.r index 0ddf73fa..0f14b9fe 100644 --- a/R/getSampleData.r +++ b/R/getSampleData.r @@ -1,5 +1,37 @@ #' Import Sample Data for WRTDS #' +#' This function is being deprecated for \code{\link{getNWISSample}}. +#' +#' @param siteNumber string USGS site number. This is usually an 8 digit number +#' @param parameterCd string USGS parameter code. This is usually an 5 digit number. +#' @param startDate string starting date for data retrieval in the form YYYY-MM-DD. +#' @param endDate string ending date for data retrieval in the form YYYY-MM-DD. +#' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. +#' @keywords data import USGS WRTDS +#' @export +#' @return Sample dataframe +#' @seealso \code{\link{compressData}}, \code{\link{populateSampleColumns}}, \code{\link{getNWISSample}} +#' @examples +#' +#' # These examples require an internet connection to run +#' \dontrun{Sample_01075 <- getSampleData('01594440','01075', '1985-01-01', '1985-03-31')} +#' \dontrun{Sample_All <- getSampleData('05114000','00915;00931', '1985-01-01', '1985-03-31')} +#' \dontrun{Sample_Select <- getSampleData('05114000','00915;00931', '', '')} +getSampleData <- function(siteNumber,parameterCd,startDate,endDate,interactive=TRUE){ + + warning("This function is being deprecated, please use getNWISSample") + + rawSample <- retrieveNWISqwData(siteNumber,parameterCd,startDate,endDate) + #rawSample$dateTime <- strptime(rawSample$dateTime,"%Y-%m-%d %H:%M:%S") + rawSample$dateTime <- as.Date(rawSample$dateTime) + rawSample$site <- NULL + compressedData <- compressData(rawSample, interactive=interactive) + Sample <- populateSampleColumns(compressedData) + return(Sample) +} + +#' Import NWIS Sample Data for EGRET analysis +#' #' Imports data from NWIS web service. This function gets the data from here: \url{http://nwis.waterdata.usgs.gov/nwis/qwdata/} #' A list of parameter codes can be found here: \url{http://nwis.waterdata.usgs.gov/nwis/pmcodes/} #' A list of statistic codes can be found here: \url{http://nwis.waterdata.usgs.gov/nwis/help/?read_file=stat&format=table} @@ -14,13 +46,14 @@ #' @keywords data import USGS WRTDS #' @export #' @return Sample dataframe -#' @seealso \code{\link{compressData}}, \code{\link{populateSampleColumns}} +#' @seealso \code{\link{compressData}}, \code{\link{populateSampleColumns}}, , \code{\link{getNWISSample}} #' @examples #' # These examples require an internet connection to run -#' Sample_01075 <- getSampleData('01594440','01075', '1985-01-01', '1985-03-31') -#' Sample_All <- getSampleData('05114000','00915;00931', '1985-01-01', '1985-03-31') -#' Sample_Select <- getSampleData('05114000','00915;00931', '', '') -getSampleData <- function(siteNumber,parameterCd,startDate,endDate,interactive=TRUE){ +#' Sample_01075 <- getNWISSample('01594440','01075', '1985-01-01', '1985-03-31') +#' Sample_All <- getNWISSample('05114000','00915;00931', '1985-01-01', '1985-03-31') +#' Sample_Select <- getNWISSample('05114000','00915;00931', '', '') +getNWISSample <- function(siteNumber,parameterCd,startDate,endDate,interactive=TRUE){ + rawSample <- retrieveNWISqwData(siteNumber,parameterCd,startDate,endDate) #rawSample$dateTime <- strptime(rawSample$dateTime,"%Y-%m-%d %H:%M:%S") rawSample$dateTime <- as.Date(rawSample$dateTime) @@ -29,3 +62,5 @@ getSampleData <- function(siteNumber,parameterCd,startDate,endDate,interactive=T Sample <- populateSampleColumns(compressedData) return(Sample) } + + diff --git a/R/getSampleDataFromFile.r b/R/getSampleDataFromFile.r index c5b83012..89d90742 100644 --- a/R/getSampleDataFromFile.r +++ b/R/getSampleDataFromFile.r @@ -1,5 +1,33 @@ #' Import Sample Data for WRTDS #' +#' This function is being deprecated for \code{\link{getUserSample}}. +#' +#' @param filePath string specifying the path to the file +#' @param fileName string name of file to open +#' @param hasHeader logical true if the first row of data is the column headers +#' @param separator string character that separates data cells +#' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. +#' @keywords data import file +#' @keywords data import USGS WRTDS +#' @export +#' @return Sample dataframe +#' @examples +#' filePath <- system.file("extdata", package="dataRetrieval") +#' filePath <- paste(filePath,"/",sep="") +#' fileName <- 'ChoptankRiverNitrate.csv' +#' \dontrun{Sample <- getSampleDataFromFile(filePath,fileName, separator=";",interactive=FALSE)} +getSampleDataFromFile <- function (filePath,fileName,hasHeader=TRUE,separator=",", interactive=TRUE){ + + warning("This function is being deprecated, please use getUserSample") + + data <- getDataFromFile(filePath,fileName,hasHeader=hasHeader,separator=separator) + compressedData <- compressData(data, interactive=interactive) + Sample <- populateSampleColumns(compressedData) + return(Sample) +} + +#' Import user sample data for EGRET analysis +#' #' Imports data from a user-supplied file, and converts it to a Sample data frame (including summing multiple constituents), appropriate for WRTDS calculations. See #' section 3.4 of the vignette for more details. #' @@ -10,15 +38,16 @@ #' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. #' @keywords data import file #' @keywords data import USGS WRTDS +#' @seealso \code{\link{compressData}}, \code{\link{populateSampleColumns}} #' @export #' @return Sample dataframe #' @examples #' filePath <- system.file("extdata", package="dataRetrieval") #' filePath <- paste(filePath,"/",sep="") #' fileName <- 'ChoptankRiverNitrate.csv' -#' Sample <- getSampleDataFromFile(filePath,fileName, separator=";",interactive=FALSE) -getSampleDataFromFile <- function (filePath,fileName,hasHeader=TRUE,separator=",", interactive=TRUE){ - data <- getQWDataFromFile(filePath,fileName,hasHeader=hasHeader,separator=separator) +#' Sample <- getUserSample(filePath,fileName, separator=";",interactive=FALSE) +getUserSample <- function (filePath,fileName,hasHeader=TRUE,separator=",", interactive=TRUE){ + data <- getDataFromFile(filePath,fileName,hasHeader=hasHeader,separator=separator) compressedData <- compressData(data, interactive=interactive) Sample <- populateSampleColumns(compressedData) return(Sample) diff --git a/R/getSiteFileData.r b/R/getSiteFileData.r index c8f71f56..bc70fa58 100644 --- a/R/getSiteFileData.r +++ b/R/getSiteFileData.r @@ -8,9 +8,9 @@ #' @export #' @examples #' # These examples require an internet connection to run -#' siteINFO <- getSiteFileData('05114000') -#' siteINFOMulti <- getSiteFileData(c('05114000','09423350')) -getSiteFileData <- function(siteNumber){ +#' siteINFO <- getNWISSiteInfo('05114000') +#' siteINFOMulti <- getNWISSiteInfo(c('05114000','09423350')) +getNWISSiteInfo <- function(siteNumber){ siteNumber <- paste(siteNumber,collapse=",") urlSitefile <- paste("http://waterservices.usgs.gov/nwis/site/?format=rdb&siteOutput=Expanded&sites=",siteNumber,sep = "") @@ -55,3 +55,64 @@ getSiteFileData <- function(siteNumber){ return(NA) } } + + +#' USGS Site File Data Retrieval +#' +#' This function is being deprecated for \code{\link{getNWISSiteInfo}}. +#' +#' @param siteNumber string USGS site number. This is usually an 8 digit number +#' @keywords data import USGS web service +#' @return retval dataframe with all information found in the expanded site file +#' @export +#' @examples +#' # These examples require an internet connection to run +#' \dontrun{siteINFO <- getSiteFileData('05114000')} +#' \dontrun{siteINFOMulti <- getSiteFileData(c('05114000','09423350'))} +getSiteFileData <- function(siteNumber){ + + warning("This function is being deprecated, please use getNWISSiteInfo") + + siteNumber <- paste(siteNumber,collapse=",") + urlSitefile <- paste("http://waterservices.usgs.gov/nwis/site/?format=rdb&siteOutput=Expanded&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) + }) + + 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="#") + + INFO <- SiteFile[-1,] + names(INFO) <- gsub("_",".",names(INFO)) + + INFO$queryTime <- Sys.time() + INFO$dec.lat.va <- as.numeric(INFO$dec.lat.va) + INFO$dec.long.va <- as.numeric(INFO$dec.long.va) + INFO$alt.va <- as.numeric(INFO$alt.va) + + return(INFO) + } else { + message(paste("URL caused an error:", urlSitefile)) + message("Content-Type=",h$value()["Content-Type"]) + return(NA) + } +} diff --git a/R/getWQPData.r b/R/getWQPData.r index 2a6c567d..cd9902d5 100644 --- a/R/getWQPData.r +++ b/R/getWQPData.r @@ -34,7 +34,7 @@ getWQPData <- function(...){ urlCall, "&mimeType=tsv",sep = "") - retVal <- basicWQPData(urlCall) + retVal <- readWQPData(urlCall) return(retVal) } \ No newline at end of file diff --git a/R/populateParameterINFO.r b/R/populateParameterINFO.r index 36f80943..f1a5e802 100644 --- a/R/populateParameterINFO.r +++ b/R/populateParameterINFO.r @@ -9,9 +9,9 @@ #' @export #' @examples #' #This example requires an internet connection to run -#' INFO <- getSiteFileData('01594440') +#' INFO <- getNWISSiteInfo('01594440') #' parameterCd <- "01075" -#' parameterData <- getParameterInfo(parameterCd) +#' parameterData <- getNWISPcodeInfo(parameterCd) #' INFO$param.nm <- parameterData$parameter_nm #' INFO$param.units <- parameterData$parameter_units #' INFO$paramShortName <- parameterData$srsname diff --git a/R/populateSiteINFO.r b/R/populateSiteINFO.r index 49f8f0e2..caa9ce5f 100644 --- a/R/populateSiteINFO.r +++ b/R/populateSiteINFO.r @@ -9,7 +9,7 @@ #' @export #' @examples #' #This example requires an internet connection to run -#' INFO <- getSiteFileData('01594440') +#' INFO <- getNWISSiteInfo('01594440') #' siteNumber <- "01594440" #' siteINFO <- populateSiteINFO(INFO, siteNumber) populateSiteINFO <- function(INFO, siteNumber,interactive=TRUE){ diff --git a/R/renameColumns.R b/R/renameColumns.R index e1a4cf7f..9ec3a6ff 100644 --- a/R/renameColumns.R +++ b/R/renameColumns.R @@ -26,7 +26,7 @@ renameColumns <- function(rawData){ pCodes <- sapply(strsplit(dataCol_names, "_"), function(x) x[2]) statCd <- sapply(strsplit(dataCol_names, "_"), function(x) x[3]) - pcodeINFO <- getParameterInfo(pCodes,interactive=FALSE) + pcodeINFO <- getNWISPcodeInfo(pCodes,interactive=FALSE) multipleCodes <- anyDuplicated(pCodes) statCd <- sub("00001", "_Max", statCd) -- GitLab