test_that("geom_spatvector works as geom_sf", { extfile <- system.file("extdata/cyl.gpkg", package = "tidyterra") cyl <- terra::vect(extfile) build_terra <- ggplot2::ggplot() + geom_spatvector(data = cyl, aes(fill = iso2)) cyl_sf <- sf::st_as_sf(cyl) build_sf <- ggplot2::ggplot() + ggplot2::geom_sf(data = cyl_sf, aes(fill = iso2)) layer_terra <- ggplot2::ggplot_build(build_terra)$data[[1]] layer_sf <- ggplot2::ggplot_build(build_sf)$data[[1]] expect_identical(layer_terra, layer_sf) expect_true( all(layer_terra$geometry == layer_sf$geometry) ) # With projs build_terra_proj <- build_terra + ggplot2::coord_sf(crs = 3857) build_sf_proj <- build_sf + ggplot2::coord_sf(crs = 3857) layer_terra2 <- ggplot2::ggplot_build(build_terra_proj)$data[[1]] layer_sf2 <- ggplot2::ggplot_build(build_sf_proj)$data[[1]] expect_identical(layer_terra2, layer_sf2) expect_true( all(layer_terra2$geometry == layer_sf2$geometry) ) expect_false(any(layer_terra2$geometry == layer_terra$geometry)) # Fortify build_fort <- ggplot2::ggplot(cyl) + geom_spatvector(aes(fill = iso2)) layer_fort <- ggplot2::ggplot_build(build_fort)$data[[1]] expect_identical(layer_terra, layer_fort) build_fort_proj <- build_fort + ggplot2::coord_sf(crs = 3857) layer_fort2 <- ggplot2::ggplot_build(build_fort_proj)$data[[1]] expect_identical(layer_terra2, layer_fort2) }) test_that("geom_spatvector_text works as geom_sf", { extfile <- system.file("extdata/cyl.gpkg", package = "tidyterra") cyl <- terra::vect(extfile) build_terra <- ggplot2::ggplot() + geom_spatvector_text(data = cyl, aes(label = iso2)) cyl_sf <- sf::st_as_sf(cyl) build_sf <- ggplot2::ggplot() + ggplot2::geom_sf_text(data = cyl_sf, aes(label = iso2)) layer_terra <- ggplot2::ggplot_build(build_terra)$data[[1]] layer_sf <- ggplot2::ggplot_build(build_sf)$data[[1]] expect_identical(layer_terra, layer_sf) expect_true( all(layer_terra$geometry == layer_sf$geometry) ) # With projs build_terra_proj <- build_terra + ggplot2::coord_sf(crs = 3857) build_sf_proj <- build_sf + ggplot2::coord_sf(crs = 3857) layer_terra2 <- ggplot2::ggplot_build(build_terra_proj)$data[[1]] layer_sf2 <- ggplot2::ggplot_build(build_sf_proj)$data[[1]] expect_identical(layer_terra2, layer_sf2) expect_true( all(layer_terra2$geometry == layer_sf2$geometry) ) expect_false(any(layer_terra2$geometry == layer_terra$geometry)) }) test_that("geom_spatvector_label works as geom_sf", { extfile <- system.file("extdata/cyl.gpkg", package = "tidyterra") cyl <- terra::vect(extfile) build_terra <- ggplot2::ggplot() + geom_spatvector_label(data = cyl, aes(label = iso2)) cyl_sf <- sf::st_as_sf(cyl) build_sf <- ggplot2::ggplot() + ggplot2::geom_sf_label(data = cyl_sf, aes(label = iso2)) layer_terra <- ggplot2::ggplot_build(build_terra)$data[[1]] layer_sf <- ggplot2::ggplot_build(build_sf)$data[[1]] expect_identical(layer_terra, layer_sf) expect_true( all(layer_terra$geometry == layer_sf$geometry) ) # With projs build_terra_proj <- build_terra + ggplot2::coord_sf(crs = 3857) build_sf_proj <- build_sf + ggplot2::coord_sf(crs = 3857) layer_terra2 <- ggplot2::ggplot_build(build_terra_proj)$data[[1]] layer_sf2 <- ggplot2::ggplot_build(build_sf_proj)$data[[1]] expect_identical(layer_terra2, layer_sf2) expect_true( all(layer_terra2$geometry == layer_sf2$geometry) ) expect_false(any(layer_terra2$geometry == layer_terra$geometry)) })