diff --git a/R/readNWISpCode.r b/R/readNWISpCode.r index f6afad5309a14c71ef0eddd2f346f83a61623162..92e05b64b871e9ce81a965733c7999d62df41bbd 100644 --- a/R/readNWISpCode.r +++ b/R/readNWISpCode.r @@ -1,9 +1,11 @@ #' USGS Parameter Data Retrieval #' -#' Imports data from NWIS about meaured parameter based on user-supplied parameter code. +#' Imports data from NWIS about meaured parameter based on user-supplied parameter code or codes. #' This function gets the data from here: \url{http://nwis.waterdata.usgs.gov/nwis/pmcodes} #' -#' @param parameterCd character of USGS parameter codes (or multiple parameter codes). This is usually an 5 digit number. +#' @param parameterCd character of USGS parameter codes (or multiple parameter codes). These are 5 digit number codes +#' that can be found here: \link{http://help.waterdata.usgs.gov/codes-and-parameters/parameters}. To get a +#' complete list of all current parameter codes in the USGS, use "all" as the input. #' @keywords data import USGS web service #' @return parameterData data frame with all information from the USGS about the particular parameter. #' @@ -22,43 +24,49 @@ #' paramINFO <- readNWISpCode(c('01075','00060','00931')) readNWISpCode <- function(parameterCd){ - pcodeCheck <- all(nchar(parameterCd) == 5) & all(!is.na(suppressWarnings(as.numeric(parameterCd)))) + if(any(parameterCd == "all")){ + fullURL <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" + fullPcodeDownload <- importRDB1(fullURL) + return(fullPcodeDownload) + + } else { + pcodeCheck <- all(nchar(parameterCd) == 5) & all(!is.na(suppressWarnings(as.numeric(parameterCd)))) - if(!pcodeCheck){ - goodIndex <- which(parameterCd %in% parameterCdFile$parameter_cd) - if(length(goodIndex) > 0){ - badPcode <- parameterCd[-goodIndex] - } else { - badPcode <- parameterCd + if(!pcodeCheck){ + goodIndex <- which(parameterCd %in% parameterCdFile$parameter_cd) + if(length(goodIndex) > 0){ + badPcode <- parameterCd[-goodIndex] + } else { + badPcode <- parameterCd + } + message("The following pCodes seem mistyped:",paste(badPcode,collapse=",")) + parameterCd <- parameterCd[goodIndex] } - message("The following pCodes seem mistyped:",paste(badPcode,collapse=",")) - parameterCd <- parameterCd[goodIndex] - } - - parameterData <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCd,] - - if(nrow(parameterData) != length(parameterCd)){ - if(length(parameterCd) == 1){ - url <- paste0("http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=pm_search", - "&pm_search=", parameterCd, - "&format=rdb", "&show=parameter_group_nm", - "&show=parameter_nm", "&show=casrn", - "&show=srsname", "&show=parameter_units") - newData <- importRDB1(url,asDateTime = FALSE) - } else { + parameterData <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCd,] + + if(nrow(parameterData) != length(parameterCd)){ - #TODO: add else... - fullURL <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" - fullPcodeDownload <- importRDB1(fullURL) - newData <- fullPcodeDownload[fullPcodeDownload$parameter_cd %in% parameterCd,] + if(length(parameterCd) == 1){ + url <- paste0("http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=pm_search", + "&pm_search=", parameterCd, + "&format=rdb", "&show=parameter_group_nm", + "&show=parameter_nm", "&show=casrn", + "&show=srsname", "&show=parameter_units") + newData <- importRDB1(url,asDateTime = FALSE) + } else { + + #TODO: add else... + fullURL <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" + fullPcodeDownload <- importRDB1(fullURL) + newData <- fullPcodeDownload[fullPcodeDownload$parameter_cd %in% parameterCd,] + + } + return(newData) + } else { + return(parameterData) } - return(newData) - - } else { - return(parameterData) } - }