context("line")
test_that("linedata works", {
testthat::skip_if_not(require("ncdf4"))
lineData <- get_fixture_data("linestring")
nc_file <- write_geometry(nc_file=tempfile(), geom_data = lineData)
nc<-nc_open(nc_file)
expect_equal(as.numeric(ncvar_get(nc, pkg.env$x_nodes)), st_coordinates(lineData)[,"X"])
expect_equal(as.numeric(ncvar_get(nc, pkg.env$y_nodes)), st_coordinates(lineData)[,"Y"])
expect_equivalent(ncatt_get(nc, pkg.env$geom_container_var_name, pkg.env$geom_type_attr_name)$value,
"line")
returnLineData<-read_geometry(nc_file)
check_geom(lineData, returnLineData)
})
test_that("multiLine data works", {
testthat::skip_if_not(require("ncdf4"))
lineData <- get_fixture_data("multilinestring")
nc_file <- write_geometry(nc_file=tempfile(), geom_data = lineData)
nc<-nc_open(nc_file)
num_coords <- c(nrow(st_geometry(lineData)[[1]][[1]]),
nrow(st_geometry(lineData)[[1]][[2]]))
expect_equal(as.numeric(ncvar_get(nc,pkg.env$node_count_var_name)),
sum(num_coords))
expect_equal(as.numeric(ncvar_get(nc,pkg.env$part_node_count_var_name)),
num_coords)
returnLineData<-read_geometry(nc_file)
check_geom(lineData, returnLineData)
})
test_that("multiline data frame works", {
testthat::skip_if_not(require("ncdf4"))
lineData <- get_fixture_data("multilinestring")
testdata<-as.data.frame(list("name"=c("test_name"), "id"=c(1)), stringsAsFactors = FALSE)
lineData <- sf::st_sf(dplyr::bind_cols(lineData, testdata))
nc_file <- write_geometry(nc_file=tempfile(), geom_data = lineData)
nc<-nc_open(nc_file)
returnLineData<-read_geometry(nc_file)
check_geom(lineData, returnLineData)
})
test_that("shapefile line data works", {
testthat::skip_if_not(require("ncdf4"))
lineData <- sf::st_zm(sf::read_sf("data/NHDLine/NHDLine.shp"))
nc_file <- write_geometry(nc_file=tempfile(),
geom_data = lineData)
nc<-nc_open(nc_file)
returnLineData<-read_geometry(nc_file)
check_geom(lineData, returnLineData)
sf::st_geometry(lineData) <- NULL
sf::st_geometry(returnLineData) <- NULL
for(name in names(lineData)) {
if(class(lineData[name][[1]]) == "Date") lineData[[name]] <- as.character(lineData[[name]])
expect_equal(class(lineData[name][[1]]), class(returnLineData[name][[1]]))
}
for(name in names(lineData)) {
if(is.character(returnLineData[name][[1]])) lineData[name][is.na(lineData[name])] <- ""
expect_equal(c(lineData[name]), c(returnLineData[name]))
}
})
test_that("NHDPlus Multilinestring", {
f <- system.file("extdata/nhdp_flowline_sample.gpkg", package = "ncdfgeom")
test_dat <- sf::read_sf(f)
test_nc <- expect_warning(write_geometry(tempfile(), test_dat), "Found more than two dimensions in geometry. Removing Z and M content.")
test_dat_2 <- read_geometry(test_nc)
expect_equal(class(test_dat_2$FDATE), "character") # coerced to character
expect_equal(class(sf::st_geometry(test_dat_2)[[1]])[1], "XY")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.