Nothing
context("holes")
test_that("holes are removed from polygons",{
df <- data.frame(
ml_id = c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2)
, l_id = c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2)
, x = rnorm(15)
, y = rnorm(15)
, z = rnorm(15)
, m = rnorm(15)
)
expect_error(
sf_remove_holes(df)
, "only sfg, sfc and sf objects are supported"
)
sfg <- sfg_polygon( obj = df, x = "x", y = "y", linestring_id = "ml_id", close = FALSE)
sfc <- sfc_polygon( obj = df, x = "x", y = "y", polygon_id = "ml_id", linestring_id = "l_id", close = FALSE)
sf <- sf_polygon( obj = df, x = "x", y = "y", polygon_id = "ml_id", linestring_id = "l_id", close = FALSE )
sfg_res <- sf_remove_holes( sfg, close = FALSE )
sfc_res <- sf_remove_holes( sfc, close = FALSE )
sf_res <- sf_remove_holes( sf, close = FALSE )
expect_true( length( sfg ) == 2 & length( sfg_res ) == 1 )
expect_equal( sfg_res[[1]][, 1], df[ df$ml_id == 1, "x"] )
expect_equal( sfg_res[[1]][, 2], df[ df$ml_id == 1, "y"] )
expect_true( length( sfc[[1]] ) == 3 & length( sfc_res[[1]] ) == 1 )
expect_equal( sfc_res[[1]][[1]][, 1], df[ df$ml_id == 1 & df$l_id == 1, "x"] )
expect_equal( sfc_res[[1]][[1]][, 2], df[ df$ml_id == 1 & df$l_id == 1, "y"] )
expect_true( length( sfc[[2]] ) == 2 & length( sfc_res[[2]] ) == 1 )
expect_equal( sfc_res[[2]][[1]][, 1], df[ df$ml_id == 2 & df$l_id == 1, "x"] )
expect_equal( sfc_res[[2]][[1]][, 2], df[ df$ml_id == 2 & df$l_id == 1, "y"] )
expect_true( length( sf$geometry[[1]] ) == 3 & length( sf_res$geometry[[1]] ) == 1 )
expect_equal( sf_res$geometry[[1]][[1]][, 1], df[ df$ml_id == 1 & df$l_id == 1, "x"] )
expect_equal( sf_res$geometry[[1]][[1]][, 2], df[ df$ml_id == 1 & df$l_id == 1, "y"] )
expect_true( length( sf$geometry[[2]] ) == 2 & length( sf_res$geometry[[2]] ) == 1 )
expect_equal( sf_res$geometry[[2]][[1]][, 1], df[ df$ml_id == 2 & df$l_id == 1, "x"] )
expect_equal( sf_res$geometry[[2]][[1]][, 2], df[ df$ml_id == 2 & df$l_id == 1, "y"] )
sfg <- sfg_multipolygon( obj = df, x = "x", y = "y", polygon_id = "ml_id", linestring_id = "l_id", close = FALSE)
sfc <- sfc_multipolygon( obj = df, x = "x", y = "y", polygon_id = "ml_id", linestring_id = "l_id", close = FALSE)
sf <- sf_multipolygon( obj = df, x = "x", y = "y", polygon_id = "ml_id", linestring_id = "l_id", close = FALSE )
sfg_res <- sf_remove_holes( sfg, close = FALSE )
sfc_res <- sf_remove_holes( sfc, close = FALSE )
sf_res <- sf_remove_holes( sf, close = FALSE )
expect_true( length( sfg[[1]] ) == 3 & length( sfg_res[[1]] ) == 1 )
expect_equal( sfg_res[[1]][[1]][, 1], df[ df$ml_id == 1 & df$l_id == 1, "x"] )
expect_equal( sfg_res[[1]][[1]][, 2], df[ df$ml_id == 1 & df$l_id == 1, "y"] )
expect_true( length( sfc[[1]][[1]] ) == 3 & length( sfc_res[[1]][[1]] ) == 1 )
expect_equal( sfc_res[[1]][[1]][[1]][, 1], df[ df$ml_id == 1 & df$l_id == 1, "x"] )
expect_equal( sfc_res[[1]][[1]][[1]][, 2], df[ df$ml_id == 1 & df$l_id == 1, "y"] )
expect_true( length( sfc[[1]][[2]] ) == 2 & length( sfc_res[[1]][[1]] ) == 1 )
expect_equal( sfc_res[[1]][[2]][[1]][, 1], df[ df$ml_id == 2 & df$l_id == 1, "x"] )
expect_equal( sfc_res[[1]][[2]][[1]][, 2], df[ df$ml_id == 2 & df$l_id == 1, "y"] )
expect_equal( sf_res$geometry, sfc_res )
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.