test_that("Summarise gives the same results than default method", {
v <- terra::vect(system.file("shape/nc.shp", package = "sf"))
nogroup <- summarise(v,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74)
)
nogroup_df <- summarise(as_tibble(v),
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74)
)
expect_s4_class(nogroup, "SpatVector")
expect_s3_class(nogroup_df, "tbl")
expect_true(all(nogroup_df == as_tibble(nogroup)))
g <- group_by(v, SID74, SID79)
g_df <- group_by(as_tibble(v), SID74, SID79)
g_summ <- summarise(g,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74)
)
g_summ_df <- summarise(g_df,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74)
)
expect_s4_class(g_summ, "SpatVector")
expect_s3_class(g_summ_df, "tbl")
expect_true(all(g_summ_df == as_tibble(g_summ)))
})
test_that("Summarise preserve CRS", {
v <- terra::vect(system.file("shape/nc.shp", package = "sf"))
nogroup <- summarise(v,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74)
)
expect_s4_class(nogroup, "SpatVector")
expect_identical(pull_crs(v), pull_crs(nogroup))
})
test_that("Summarise handles dissolve", {
v <- terra::vect(system.file("shape/nc.shp", package = "sf"))
diss <- summarise(v,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74), .dissolve = TRUE
)
expect_s4_class(diss, "SpatVector")
dissolved_pols <- terra::disagg(diss)
nodiss <- summarise(v,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74), .dissolve = FALSE
)
expect_s4_class(nodiss, "SpatVector")
nodissolved_pols <- terra::disagg(nodiss)
# Same statistics
expect_identical(as_tibble(diss), as_tibble(nodiss))
expect_gt(nrow(nodissolved_pols), nrow(dissolved_pols))
})
test_that("Summarise handles dissolve on groups", {
v <- terra::vect(system.file("shape/nc.shp", package = "sf"))
v_g <- group_by(v, SID74, SID79)
diss <- summarise(v_g,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74), .dissolve = TRUE
)
expect_s4_class(diss, "SpatVector")
dissolved_pols <- terra::disagg(diss)
nodiss <- summarise(v_g,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74), .dissolve = FALSE
)
expect_s4_class(nodiss, "SpatVector")
nodissolved_pols <- terra::disagg(nodiss)
# Same statistics
expect_identical(as_tibble(diss), as_tibble(nodiss))
# Distinct polygons
expect_gt(nrow(nodissolved_pols), nrow(dissolved_pols))
# Groups preserved?
expect_true(is_grouped_spatvector(diss))
expect_true(is_grouped_spatvector(nodiss))
# Should have move one layer, check groups and results with df
df <- group_by(as_tibble(v), SID74, SID79)
expect_true(dplyr::is_grouped_df(df))
expect_identical(group_data(df), group_data(v_g))
diss_df <- summarise(df,
sum_all = sum(AREA), n_all = dplyr::n(),
mean = mean(BIR74)
)
expect_s3_class(diss_df, "tbl")
expect_true(all(diss_df == as_tibble(diss)))
expect_true(all(diss_df == as_tibble(nodiss)))
expect_true(dplyr::is_grouped_df(diss_df))
expect_identical(group_data(diss_df), group_data(diss))
expect_identical(group_data(diss_df), group_data(nodiss))
})
test_that("Check aggregation: POINTS", {
v <- terra::vect(system.file("extdata/cyl.gpkg", package = "tidyterra"))
v <- terra::centroids(v)
v$gr <- rep(c("A", "B", "C"), 3)
v$nn <- seq_len(nrow(v))
expect_identical(terra::geomtype(v), "points")
# Ungrouped
# Dissolve
v_ds <- summarise(v, s = sum(nn), .dissolve = TRUE)
# Terra method
t_ds <- terra::aggregate(v, dissolve = TRUE)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
# Non dissolved
v_ds <- summarise(v, s = sum(nn), .dissolve = FALSE)
# Terra method
t_ds <- terra::aggregate(v, dissolve = FALSE)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
# Grouped
# Dissolve
v_ds <- summarise(group_by(v, gr), s = sum(nn), .dissolve = TRUE)
# Terra method
t_ds <- terra::aggregate(v, "gr", dissolve = TRUE)
expect_equal(nrow(v_ds), 3)
expect_equal(nrow(t_ds), 3)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
# No Dissolve
v_ds <- summarise(group_by(v, gr), s = sum(nn), .dissolve = FALSE)
# Terra method
t_ds <- terra::aggregate(v, "gr", dissolve = FALSE)
expect_equal(nrow(v_ds), 3)
expect_equal(nrow(t_ds), 3)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
})
test_that("Check aggregation: POLYGONS", {
v <- terra::vect(system.file("extdata/cyl.gpkg", package = "tidyterra"))
v$gr <- rep(c("A", "B", "C"), 3)
v$nn <- seq_len(nrow(v))
expect_identical(terra::geomtype(v), "polygons")
# Ungrouped
# Dissolve
v_ds <- summarise(v, s = sum(nn), .dissolve = TRUE)
# Terra method
t_ds <- terra::aggregate(v, dissolve = TRUE)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
g_test <- g_wkt
# Non dissolved
v_ds <- summarise(v, s = sum(nn), .dissolve = FALSE)
# Terra method
t_ds <- terra::aggregate(v, dissolve = FALSE)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
expect_false(identical(g_test, g_wkt))
# Grouped
# Dissolve
v_ds <- summarise(group_by(v, gr), s = sum(nn), .dissolve = TRUE)
# Terra method
t_ds <- terra::aggregate(v, "gr", dissolve = TRUE)
expect_equal(nrow(v_ds), 3)
expect_equal(nrow(t_ds), 3)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
g_test <- g_wkt
# No Dissolve
v_ds <- summarise(group_by(v, gr), s = sum(nn), .dissolve = FALSE)
# Terra method
t_ds <- terra::aggregate(v, "gr", dissolve = FALSE)
expect_equal(nrow(v_ds), 3)
expect_equal(nrow(t_ds), 3)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
expect_false(identical(g_test, g_wkt))
})
test_that("Check aggregation: LINES", {
v <- terra::vect(system.file("extdata/cyl.gpkg", package = "tidyterra"))
v$gr <- rep(c("A", "B", "C"), 3)
v$nn <- seq_len(nrow(v))
v <- terra::as.lines(v)
expect_identical(terra::geomtype(v), "lines")
# Ungrouped
# Dissolve
v_ds <- summarise(v, s = sum(nn), .dissolve = TRUE)
# Terra method
t_ds <- terra::aggregate(v, dissolve = TRUE)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
g_test <- g_wkt
# Non dissolved
v_ds <- summarise(v, s = sum(nn), .dissolve = FALSE)
# Terra method
t_ds <- terra::aggregate(v, dissolve = FALSE)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
expect_false(identical(g_test, g_wkt))
# Grouped
# Dissolve
v_ds <- summarise(group_by(v, gr), s = sum(nn), .dissolve = TRUE)
# Terra method
t_ds <- terra::aggregate(v, "gr", dissolve = TRUE)
expect_equal(nrow(v_ds), 3)
expect_equal(nrow(t_ds), 3)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
g_test <- g_wkt
# No Dissolve
v_ds <- summarise(group_by(v, gr), s = sum(nn), .dissolve = FALSE)
# Terra method
t_ds <- terra::aggregate(v, "gr", dissolve = FALSE)
expect_equal(nrow(v_ds), 3)
expect_equal(nrow(t_ds), 3)
g_wkt <- terra::geom(v_ds, wkt = TRUE)
t_wkt <- terra::geom(t_ds, wkt = TRUE)
expect_identical(g_wkt, t_wkt)
expect_false(identical(g_test, g_wkt))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.