context("st_as_stars tests")
options(rgdal_show_exportToProj4_warnings = "none")
test_that("basic st_as_stars", {
skip_if_not_installed("ncdfgeom")
skip_on_os("solaris")
skip_if_not_installed("ncdfgeom")
f <- system.file("nc/timeseries.nc", package = "stars")
test_list <- ncdfgeom::read_timeseries_dsg(f)
stars_obj <- st_as_stars(test_list)
expect_true("XYZ" %in% class(st_dimensions(stars_obj)$points$values[[1]]))
expect_s3_class(stars_obj, "stars")
dim <- stars::st_dimensions(stars_obj)
#expect_true(sf::st_crs(dim$points$refsys) == sf::st_crs(4326))
expect_equal(dim$time$refsys, "POSIXct")
expect_s3_class(dim$points$values, "sfc_POINT")
expect_true(dim$points$point)
geom_point <- sf::st_as_sf(data.frame(id = names(test_list$data_frames[[1]]),
lon = test_list$lons,
lat = test_list$lats, stringsAsFactors = FALSE),
coords = c("lon", "lat"), crs = 4326)
geom_poly <- sf::st_buffer(st_transform(geom_point, 3857), dist = 100)
stars_obj <- st_as_stars(test_list, sf_geometry = geom_poly)
dim <- stars::st_dimensions(stars_obj)
expect_equal(sf::st_crs(dim$geometry$refsys)$proj4string,
sf::st_crs(geom_poly)$proj4string)
expect_s3_class(dim$geometry$values, "sfc_POLYGON")
expect_false(dim$geometry$point)
stars_obj <- st_as_stars(test_list, sf_geometry = geom_point)
dim <- stars::st_dimensions(stars_obj)
expect_equal(sf::st_crs(dim$geometry$refsys)$proj4string,
sf::st_crs(geom_point)$proj4string)
expect_true(dim$geometry$point)
expect_s3_class(dim$geometry$values, "sfc_POINT")
test_list$alts <- numeric(0)
stars_obj <- st_as_stars(test_list)
expect_true("XY" %in% class(st_dimensions(stars_obj)$points$values[[1]]))
})
test_that("st_as_stars.Raster", {
skip_if_not_installed("raster")
tif = system.file("tif/L7_ETMs.tif", package = "stars")
x = raster::raster(tif)
stars_obj <- st_as_stars(x)
expect_s3_class(stars_obj, "stars")
expect_equal(names(stars_obj), names(x))
# change the name of the attribute
names(x) <- "newname"
stars_obj2 <- st_as_stars(x)
expect_equal(names(stars_obj2), names(x))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.