context("point")
test_that("Point_timeSeries", {
testthat::skip_if_not(require("ncdf4"))
pointData <- get_fixture_data("point")
nc_file <- write_geometry(nc_file=tempfile(), geom_data = pointData)
nc<-nc_open(nc_file)
expect_equal(nc$dim$instance$vals,
c(1))
expect_equal(as.numeric(ncvar_get(nc,pkg.env$y_nodes)),
as.numeric(st_coordinates(pointData)[,"Y"]))
expect_equal(as.numeric(ncvar_get(nc,pkg.env$x_nodes)),
as.numeric(st_coordinates(pointData)[,"X"]))
expect_equal(ncatt_get(nc,varid=pkg.env$y_nodes,"axis")$value,
pkg.env$y_axis)
expect_equal(ncatt_get(nc,varid=pkg.env$x_nodes,"axis")$value,
pkg.env$x_axis)
expect_equivalent(ncatt_get(nc,varid=0,"Conventions")$value,
"CF-1.8")
expect_equivalent(ncatt_get(nc, pkg.env$geom_container_var_name, pkg.env$geom_type_attr_name)$value,
"point")
returnPointData<-read_geometry(nc_file)
expect_equal(as.numeric(st_coordinates(pointData)),
as.numeric(st_coordinates(st_as_sf(returnPointData))))
expect_equal(as.numeric(st_bbox(pointData)),
as.numeric(st_bbox(st_as_sf(returnPointData))))
})
test_that("multiPoint_timeSeries", {
multipointData <- get_fixture_data("multipoint")
expect_error(write_geometry(nc_file=tempfile(), geom_data = multipointData),
"Multi point not supported yet.")
# expect_error(read_geometry(nc_file), "Reading multipoint is not supported yet.")
})
test_that("shapefile_point", {
testthat::skip_if_not(require("ncdf4"))
pointData <- sf::read_sf("data/se_sites/se_sitest.shp")
nc_file <- write_geometry(nc_file = tempfile(), geom_data = pointData)
nc <- nc_open(nc_file)
pointData_nogeo <- sf::st_set_geometry(pointData, NULL)
expect_true(all(names(pointData_nogeo) %in% names(nc$var)))
expect_equal(as.character(pointData$station_nm),as.character(ncvar_get(nc, nc$var$station_nm)))
expect_equal(length(ncvar_get(nc, nc$var$y)), length(sf::st_coordinates(pointData)[, "Y"]))
expect_equal(length(ncvar_get(nc, nc$var$x)), length(sf::st_coordinates(pointData)[, "X"]))
expect_equal(sum(ncvar_get(nc, nc$var$y)), sum(sf::st_coordinates(pointData)[, "Y"]))
expect_equal(sum(ncvar_get(nc, nc$var$x)), sum(sf::st_coordinates(pointData)[, "X"]))
expect_equal(as.character(ncvar_get(nc, nc$var$site_no)), pointData$site_no)
expect_equal(as.numeric(ncvar_get(nc, nc$var$drain_area)), pointData$drain_area)
returnPointData<-read_geometry(nc_file)
expect_equal(as.numeric(sf::st_coordinates(pointData)), as.numeric(sf::st_coordinates(returnPointData)))
expect_equal(as.numeric(sf::st_bbox(pointData)), as.numeric(sf::st_bbox(returnPointData)))
})
test_that("Point data can be written", {
testthat::skip_if_not(require("ncdf4"))
dataFrame <- read.csv(system.file("extdata/yahara_alb_attributes.csv", package = "ncdfgeom"))
nc_file <- ncdfgeom:::write_point_dsg(nc_file=tempfile(), lats = dataFrame$YCOORD, lons = dataFrame$XCOORD,
alts = rep(0, length(dataFrame$XCOORD)), times = as.POSIXct("1970-01-01 00:00:00 UTC", tz = "UTC"),
feature_names = dataFrame$ID,
data = dataFrame[c("GRIDCODE", "X_COORD", "Y_COORD")],
data_units = c("unitless", "m", "m"))
nc <- nc_open(nc_file)
expect_equal(as.character(ncvar_get(nc, nc$var$feature_name)), as.character(dataFrame$ID))
expect_equal(as.character(ncvar_get(nc, nc$var$GRIDCODE)), as.character(dataFrame$GRIDCODE))
expect_equal(as.numeric(ncvar_get(nc, nc$var$Y_COORD)), as.numeric(dataFrame$Y_COORD))
expect_equal(as.numeric(ncvar_get(nc, nc$var$time))[1], 0)
expect_equal(ncatt_get(nc,0,"Conventions")$value,"CF-1.7")
expect_equal(ncatt_get(nc,0,"featureType")$value,"point")
expect_equal(ncatt_get(nc, nc$var$GRIDCODE, "units")$value, "unitless")
expect_equal(ncatt_get(nc, nc$var$GRIDCODE, "coordinates")$value, "lat lon alt time")
expect_equal(ncatt_get(nc, nc$var$Y_COORD, "units")$value, "m")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.