diff --git a/R/whatNWISsites.R b/R/whatNWISsites.R index f331a806caf896ef279129b03d5963218ecf3f2e..83d9707e8744e7202453f851b8a720725b3b5005 100644 --- a/R/whatNWISsites.R +++ b/R/whatNWISsites.R @@ -40,53 +40,38 @@ whatNWISsites <- function(...){ baseURL <- "http://waterservices.usgs.gov/nwis/site/?format=mapper&" urlCall <- paste(baseURL, urlCall,sep = "") - - h <- basicHeaderGatherer() - - possibleError <- tryCatch({ - h <- basicHeaderGatherer() - returnedDoc <- getURI(urlCall, headerfunction = h$update) - }, warning = function(w) { - warning(w, "with url:", urlCall) - }, error = function(e) { - stop(e, "with url:", urlCall) - }) - - headerInfo <- h$value() - if (headerInfo['status'] == "200"){ - - doc <- xmlTreeParse(returnedDoc, getDTD = FALSE, useInternalNodes = TRUE) - doc <- xmlRoot(doc) - numChunks <- xmlSize(doc) - for(i in 1:numChunks){ - chunk <- doc[[1]] - site_no <- as.character(xpathApply(chunk, "site/@sno")) - station_nm <- as.character(xpathApply(chunk, "site/@sna")) - site_tp_cd <- as.character(xpathApply(chunk, "site/@cat")) - dec_lat_va <- as.numeric(xpathApply(chunk, "site/@lat")) - dec_long_va <- as.numeric(xpathApply(chunk, "site/@lng")) - agency_cd <- as.character(xpathApply(chunk, "site/@agc")) - - df <- data.frame(agency_cd, site_no, station_nm, site_tp_cd, - dec_lat_va, dec_long_va, stringsAsFactors=FALSE) - - if(1==i){ - retval <- df - } else { - retval <- rbind(retval, df) - } - } - - retval <- retval[!duplicated(retval),] + rawData <- getWebServiceData(urlCall) + + + doc <- xmlTreeParse(rawData, getDTD = FALSE, useInternalNodes = TRUE) + doc <- xmlRoot(doc) + numChunks <- xmlSize(doc) + for(i in 1:numChunks){ + chunk <- doc[[1]] + site_no <- as.character(xpathApply(chunk, "site/@sno")) + station_nm <- as.character(xpathApply(chunk, "site/@sna")) + site_tp_cd <- as.character(xpathApply(chunk, "site/@cat")) + dec_lat_va <- as.numeric(xpathApply(chunk, "site/@lat")) + dec_long_va <- as.numeric(xpathApply(chunk, "site/@lng")) + agency_cd <- as.character(xpathApply(chunk, "site/@agc")) - retval$queryTime <- Sys.time() - attr(retval, "url") <- urlCall - attr(retval, "queryTime") <- Sys.time() + df <- data.frame(agency_cd, site_no, station_nm, site_tp_cd, + dec_lat_va, dec_long_va, stringsAsFactors=FALSE) - return(retval) - } else { - stop("Status:", headerInfo['status'], ": ", headerInfo['statusMessage'], "\nFor: ", urlCall) + if(1==i){ + retval <- df + } else { + retval <- rbind(retval, df) + } } + + retval <- retval[!duplicated(retval),] + + retval$queryTime <- Sys.time() + attr(retval, "url") <- urlCall + attr(retval, "queryTime") <- Sys.time() + + return(retval) }