diff --git a/R/importWaterML1.r b/R/importWaterML1.r index 3eb1e8097aeecef5619f740457c64e1438e95d80..dcf4d5a08a9d976a7befceaf7f9c59577e524505 100644 --- a/R/importWaterML1.r +++ b/R/importWaterML1.r @@ -128,6 +128,7 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ attList <- list() dataColumns <- c() qualColumns <- c() + mergedDF <- NULL for (i in 1:length(timeSeries)){ @@ -309,7 +310,7 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ df <- df[,columnsOrderd] - if (1 == i & valuesIndex[1] == j){ + if (is.null(mergedDF)){ mergedDF <- df } else { similarNames <- intersect(names(mergedDF), names(df)) diff --git a/R/readNWISdata.r b/R/readNWISdata.r index 7b27bcb18259456a36a51faee9afbceb9fbba788..8bcd4a151106c1c0b76d0267f9202a8a65963583 100644 --- a/R/readNWISdata.r +++ b/R/readNWISdata.r @@ -63,22 +63,18 @@ readNWISdata <- function(service="dv", ...){ urlCall <- paste(paste(names(values),values,sep="="),collapse="&") - if(service %in% c("dv","iv","gwlevels")){ - format <- "waterml" + format <- "waterml,1.1" + + if(service == "iv"){ + baseURL <- "http://nwis.waterservices.usgs.gov/nwis/" } else { - format <- "rdb1,1" + baseURL <- "http://waterservices.usgs.gov/nwis/" } - baseURL <- paste0("http://waterservices.usgs.gov/nwis/",service,"/?format=",format,"&") + baseURL <- paste0(baseURL,service,"/?format=",format,"&") urlCall <- paste0(baseURL,urlCall) - if(service=="qwdata"){ - urlCall <- paste0(urlCall,"&siteOutput=expanded") - retval <- importRDB1(urlCall) - } else { - - retval <- importWaterML1(urlCall, asDateTime = ("iv" == service)) - } + retval <- importWaterML1(urlCall, asDateTime = ("iv" == service)) return(retval) diff --git a/tests/testthat/tests_imports.R b/tests/testthat/tests_imports.R new file mode 100644 index 0000000000000000000000000000000000000000..53ef4bc9a74b0b3dd0926defa218f06546539127 --- /dev/null +++ b/tests/testthat/tests_imports.R @@ -0,0 +1,118 @@ +context("importRDB_noCRAN") + +test_that("External importRDB1 tests", { + testthat::skip_on_cran() + + siteNumber <- "02177000" + startDate <- "2012-09-01" + endDate <- "2012-10-01" + offering <- "00003" + property <- "00060" + + obs_url <- constructNWISURL(siteNumber,property, + startDate,endDate,"dv",format="tsv") + data <- importRDB1(obs_url) + expect_is(data$datetime, 'character') + + urlMultiPcodes <- constructNWISURL("04085427",c("00060","00010"), + startDate,endDate,"dv",statCd=c("00003","00001"),"tsv") + multiData <- importRDB1(urlMultiPcodes) + pCodeCols <- grep("X", colnames(multiData)) + expect_that(length(pCodeCols)/2 > 2, is_true() ) + + unitDataURL <- constructNWISURL(siteNumber,property, + "2013-11-03","2013-11-03","uv",format="tsv") #includes timezone switch + unitData <- importRDB1(unitDataURL, asDateTime=TRUE) + + expect_that(as.numeric(unitData[which(unitData$tz_cd == "EST")[1],"datetime"]), + equals(as.numeric(as.POSIXct("2013-11-03 01:00:00", tz="UTC")+60*60*5))) + + + qwURL <- constructNWISURL(c('04024430','04024000'), + c('34247','30234','32104','34220'), + "2010-11-03","","qw",format="rdb") + qwData <- importRDB1(qwURL, qw=TRUE, tz="America/Chicago") + expect_is(qwData$sample_dt, 'Date') + expect_is(qwData$startDateTime, 'POSIXct') + + iceSite <- '04024430' + start <- "2014-11-09" + end <- "2014-11-28" + urlIce <- constructNWISURL(iceSite,"00060",start, end,"uv",format="tsv") + ice <- importRDB1(urlIce) + expect_that(sum(is.na(ice$X01_00060)) > 0, is_true()) + + iceNoConvert <- importRDB1(urlIce, convertType=FALSE) + expect_that(sum(iceNoConvert$X01_00060 == "Ice") > 0, is_true()) +}) + +context("importRDB") +test_that("CRAN-friendly importRDB test", { + filePath <- system.file("extdata", package="dataRetrieval") + fileName <- "RDB1Example.txt" + fullPath <- file.path(filePath, fileName) + importUserRDB <- importRDB1(fullPath) + + # default is to turn dates to characters + expect_is(importUserRDB$datetime, 'character') + +}) + +context("importWaterML1") +test_that("CRAN-friendly importWaterML1 test", { + filePath <- system.file("extdata", package="dataRetrieval") + fileName <- "WaterML1Example.xml" + fullPath <- file.path(filePath, fileName) + importUserWML1 <- importWaterML1(fullPath, asDateTime = TRUE) + + # default is to turn dates to characters + expect_is(importUserWML1$dateTime, 'POSIXct') + +}) + +test_that("External importWaterML1 test", { + testthat::skip_on_cran() + + siteNumber <- "02177000" + startDate <- "2012-09-01" + endDate <- "2012-10-01" + offering <- '00003' + property <- '00060' + obs_url <- constructNWISURL(siteNumber,property,startDate,endDate,'dv') + + data <- importWaterML1(obs_url,TRUE) + expect_is(data$dateTime, 'POSIXct') + + groundWaterSite <- "431049071324301" + startGW <- "2013-10-01" + endGW <- "2014-06-30" + groundwaterExampleURL <- constructNWISURL(groundWaterSite, NA, + startGW,endGW, service="gwlevels") + groundWater <- importWaterML1(groundwaterExampleURL) + + expect_is(groundWater$dateTime, 'character') + + unitDataURL <- constructNWISURL(siteNumber,property, + "2013-11-03","2013-11-03",'uv') + unitData <- importWaterML1(unitDataURL,TRUE) + expect_is(unitData$dateTime, 'POSIXct') + + + # Two sites, two pcodes, one site has two data descriptors: + siteNumber <- c('01480015',"04085427") + obs_url <- constructNWISURL(siteNumber,c("00060","00010"),startDate,endDate,'dv') + data <- importWaterML1(obs_url) + expect_that(length(unique(data$site_no)) == 2, is_true()) + expect_that(ncol(data) == 10, is_true()) # 3 data, 3 remark codes, and 4 (agency, site, dateTime, tz) + + inactiveSite <- "05212700" + inactiveSite <- constructNWISURL(inactiveSite, "00060", "2014-01-01", "2014-01-10",'dv') + inactiveSite <- importWaterML1(inactiveSite) + expect_that(nrow(inactiveSite) == 0, is_true()) + + inactiveAndActive <- c("07334200","05212700") + inactiveAndActive <- constructNWISURL(inactiveAndActive, "00060", "2014-01-01", "2014-01-10",'dv') + inactiveAndActive <- importWaterML1(inactiveAndActive) + expect_that(length(unique(inactiveAndActive$site_no)) == 1, is_true()) + +}) diff --git a/tests/testthat/tests_userFriendly_fxns.R b/tests/testthat/tests_userFriendly_fxns.R index a545fe85847c11dbe48c8b7b0060d945b45658ef..71034dd23d79d0238e1ad3a7d34ebae353bda0fc 100644 --- a/tests/testthat/tests_userFriendly_fxns.R +++ b/tests/testthat/tests_userFriendly_fxns.R @@ -27,18 +27,6 @@ test_that("Unit value data returns correct types", { }) -context("importRDB") -test_that("CRAN-friendly importRDB test", { - filePath <- system.file("extdata", package="dataRetrieval") - fileName <- "RDB1Example.txt" - fullPath <- file.path(filePath, fileName) - importUserRDB <- importRDB1(fullPath) - - # default is to turn dates to characters - expect_is(importUserRDB$datetime, 'character') - -}) - context("Peak, rating, meas") test_that("peak, rating curves, surface-water measurements", { testthat::skip_on_cran()