R/getSWECSVBlock.R

#' Function to return NWC Intercomparison portal modeled data for a given site
#'
#' This function accepts a url and returns a data frame of data for that SOS request
#'
#' @param input url for SOS service for desired site data
#' @return data frame containing desired time series
#' @importFrom XML xmlTreeParse xpathApply xmlParse xmlValue
#' @importFrom utils read.delim
#' @export
#' @examples
#' getSWECSVBlock(system.file('extdata','SWECSVBlock_daymet_example.xml',package='NWCEd'))
getSWECSVBlock <- function(input) {
  mod_open <- file(input,open="r")
  content<-paste(readLines(mod_open,warn=FALSE))
  close(mod_open,type="r")
  if (any(grepl('<ExceptionText>invalid parameter</ExceptionText>',content))) {
    stop('An invalid parameter error was encountered. The HUC may not exist.')
  }
  if (length(sapply(content,nchar))>1) {
    dat <- read.delim(header = F, comment.char = "",
                       as.is = T, sep = ",", text = xpathApply(xmlParse(content),
                                                               "//swe:values", xmlValue)[[1]])
    names(dat) <- c('date', 'data')
    dat$date <- as.Date(strptime(dat$date, format = "%Y-%m-%dT%H:%M:%SZ"))
    dat$data <- as.numeric(dat$data)
    dat <- as.data.frame(dat)
    attr(dat, "SRC") <- input
    class(dat) <- c("dat", "data.frame")
    return(dat)
  } else {
    dat<-""
    return(dat)}
}
NWCEd/NWCEd documentation built on May 7, 2019, 6:04 p.m.