test_that("With SpatRaster", {
f <- system.file("extdata/cyl_temp.tif", package = "tidyterra")
r <- terra::rast(f)
df <- as_tibble(r)
expect_identical(
dplyr::pull(df, 1),
pull(r, 1)
)
expect_identical(
dplyr::pull(df, -1),
pull(r, -1)
)
# Cut
r2 <- r %>% mutate(is_fact = cut(tavg_04, seq(0, 20, 5)))
# With na.rm FALSE should have more lenght
expect_lt(
length(pull(r2, na.rm = TRUE)),
length(pull(r2, na.rm = FALSE))
)
expect_false(anyNA(pull(r2, na.rm = TRUE)))
expect_true(anyNA(pull(r2, na.rm = FALSE)))
df2 <- as_tibble(r2)
expect_true(is.factor(pull(r2, "is_fact")))
expect_true(is.factor(pull(r2, is_fact)))
expect_identical(
dplyr::pull(df2, is_fact),
pull(r2, is_fact)
)
# This should change
expect_false(
any(
pull(r2, 1, xy = TRUE) ==
pull(r2, 1, xy = FALSE),
na.rm = TRUE
)
)
# This would error
expect_error(pull(r2, y, xy = FALSE))
# This not
expect_silent(pull(r2, y, xy = TRUE))
# Named
a <- pull(r2, 1, name = is_fact)
b <- pull(r2, 1)
expect_true(all(a == b, na.rm = TRUE))
expect_true(length(unique(names(a))) > 0)
expect_true(is.null(unique(names(b))))
})
test_that("With SpatVector", {
f <- system.file("extdata/cyl.gpkg", package = "tidyterra")
v <- terra::vect(f)
df <- as_tibble(v)
expect_identical(
dplyr::pull(df, 1),
pull(v, 1)
)
# Expect error if trying to get without opt
expect_error(pull(v, geometry), "object 'geometry' not found")
# With opts
v_c <- terra::centroids(v)
df_c <- as_tibble(v_c, geom = "XY")
expect_identical(
pull(v_c, x, geom = "XY"),
dplyr::pull(df_c, x)
)
# Check with geometries Named
wktgeom <- pull(v, geometry, iso2, geom = "WKT")
expect_identical(names(wktgeom), pull(v, iso2))
thegeom <- terra::geom(v, wkt = TRUE)
un_wktgeom <- unname(wktgeom)
expect_identical(un_wktgeom, thegeom)
un_pull <- pull(v, geometry, geom = "WKT")
expect_identical(un_pull, thegeom)
# With hex
hexgeom <- pull(v[1:2, ], geometry, geom = "HEX")
thehexgeom <- terra::geom(v[1:2, ], hex = TRUE)
expect_identical(hexgeom, thehexgeom)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.