test_that("For SpatVector", {
f <- system.file("extdata/cyl.gpkg",
package = "tidyterra"
)
v <- terra::vect(f)
tbl <- dplyr::as_tibble(v)
expect_s3_class(tbl, "tbl")
# With opts
tbl_opts <- dplyr::as_tibble(v, geom = "WKT")
expect_equal(nrow(tbl_opts), nrow(tbl))
expect_equal(tbl_opts[names(tbl)], tbl)
expect_gt(ncol(tbl_opts), ncol(tbl))
# Renaming
v2 <- v
v2$geometry <- 1
expect_snapshot(res <- dplyr::as_tibble(v2, geom = "WKT"))
expect_false(
all(
names(v2)[seq_len(ncol(v2))] == names(res)[seq_len(ncol(v2))]
)
)
expect_equal(setdiff(names(res), names(v2)), "geometry.1")
expect_snapshot(res <- dplyr::as_tibble(v2, geom = "HEX"))
expect_false(
all(names(v2)[seq_len(ncol(v2))] == names(res)[seq_len(ncol(v2))])
)
expect_equal(setdiff(names(res), names(v2)), "geometry.1")
# With point
p <- terra::centroids(v2)
p$x <- "A"
p$y <- "B"
expect_snapshot(res_p <- dplyr::as_tibble(p, geom = "XY"))
expect_false(
all(names(p)[seq_len(ncol(p))] == names(res_p)[seq_len(ncol(p))])
)
expect_equal(setdiff(names(res_p), names(p)), c("x.1", "y.1"))
})
test_that("For SpatVector internal", {
f <- system.file("extdata/cyl.gpkg",
package = "tidyterra"
)
v <- terra::vect(f)
tbl <- as_tbl_internal(v)
expect_s3_class(tbl, "tbl")
expect_identical(attr(tbl, "crs"), pull_crs(v))
expect_identical(attr(tbl, "geomtype"), terra::geomtype(v))
expect_identical(attr(tbl, "source"), "SpatVector")
# Any error on normal tibble
ntibble <- as_tibble(v)
expect_snapshot(as_tbl_internal(ntibble), error = TRUE)
# Preserve groups
v_gr <- group_by(v, iso2)
expect_true(is_grouped_spatvector(v_gr))
df_gr <- as_tbl_internal(v_gr)
expect_s3_class(df_gr, "grouped_df")
expect_identical(group_data(v_gr), dplyr::group_data(df_gr))
# Preserve rowwise
v_rwwise <- rowwise(v, iso2)
expect_true(is_rowwise_spatvector(v_rwwise))
df_rw <- as_tbl_internal(v_rwwise)
expect_s3_class(df_rw, "rowwise_df")
expect_identical(group_data(v_rwwise), dplyr::group_data(df_rw))
})
test_that("For SpatRaster", {
f <- system.file("extdata/cyl_temp.tif",
package = "tidyterra"
)
r <- terra::rast(f)
tbl <- dplyr::as_tibble(r)
expect_s3_class(tbl, "tbl")
# With opts
tbl_opts <- dplyr::as_tibble(r, na.rm = TRUE)
expect_gt(nrow(tbl), nrow(tbl_opts))
expect_equal(
colnames(tbl_opts),
colnames(tbl)
)
tbl_opts_xy <- as_tibble(r, xy = TRUE)
expect_gt(
ncol(tbl_opts_xy),
ncol(tbl)
)
})
test_that("For SpatRaster Internal", {
f <- system.file("extdata/cyl_temp.tif",
package = "tidyterra"
)
r <- terra::rast(f)
rr <- as_tbl_internal(r)
expect_s3_class(rr, "data.table")
regen <- as_spat_internal(rr)
expect_s4_class(regen, "SpatRaster")
expect_true(compare_spatrasters(r, regen))
expect_identical(
as_tibble(r),
as_tibble(regen)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.