constructs sfg MULTIPOLYGON object

sfg_multipolygon(
  obj,
  x = NULL,
  y = NULL,
  z = NULL,
  m = NULL,
  polygon_id = NULL,
  linestring_id = NULL,
  close = TRUE
)

Arguments

obj

matrix or data.frame

x

x geometry column

y

y geometry column

z

z geometry column

m

m geometry column

polygon_id

column of ids for polygons (within the multipolygon)

linestring_id

column of ids for lines (within polygons)

close

logical indicating whether polygons should be closed. If TRUE, all polygons will be checked and force closed if possible

Value

sfg object of MULTIPOLYGON geometry

Examples


df <- data.frame(
  polygon_id = c(rep(1, 5), rep(2, 10))
  , line_id = c(rep(1, 10), rep(2, 5))
  , x = c(0,0,1,1,0,2,2,5,5,2,3,3,4,4,3)
  , y = c(0,1,1,0,0,2,5,5,2,2,3,4,4,3,3)
  , z = c(1)
  , m = c(1)
)

m <- as.matrix( df )

sfg_multipolygon( df[, c("x","y") ] )
#> [[1]]
#> [[1]][[1]]
#>       [,1] [,2]
#>  [1,]    0    0
#>  [2,]    0    1
#>  [3,]    1    1
#>  [4,]    1    0
#>  [5,]    0    0
#>  [6,]    2    2
#>  [7,]    2    5
#>  [8,]    5    5
#>  [9,]    5    2
#> [10,]    2    2
#> [11,]    3    3
#> [12,]    3    4
#> [13,]    4    4
#> [14,]    4    3
#> [15,]    3    3
#> [16,]    0    0
#> 
#> 
#> attr(,"class")
#> [1] "XY"           "MULTIPOLYGON" "sfg"         

sfg_multipolygon(
  df, x = "x", y = "y", polygon_id = "polygon_id", linestring_id = "line_id"
  )
#> [[1]]
#> [[1]][[1]]
#>      [,1] [,2]
#> [1,]    0    0
#> [2,]    0    1
#> [3,]    1    1
#> [4,]    1    0
#> [5,]    0    0
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#>      [,1] [,2]
#> [1,]    2    2
#> [2,]    2    5
#> [3,]    5    5
#> [4,]    5    2
#> [5,]    2    2
#> 
#> [[2]][[2]]
#>      [,1] [,2]
#> [1,]    3    3
#> [2,]    3    4
#> [3,]    4    4
#> [4,]    4    3
#> [5,]    3    3
#> 
#> 
#> attr(,"class")
#> [1] "XY"           "MULTIPOLYGON" "sfg"         
sfg_multipolygon(
  df, x = "x", y = "y", z = "z", polygon_id = "polygon_id", linestring_id = "line_id"
  )
#> [[1]]
#> [[1]][[1]]
#>      [,1] [,2] [,3]
#> [1,]    0    0    1
#> [2,]    0    1    1
#> [3,]    1    1    1
#> [4,]    1    0    1
#> [5,]    0    0    1
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#>      [,1] [,2] [,3]
#> [1,]    2    2    1
#> [2,]    2    5    1
#> [3,]    5    5    1
#> [4,]    5    2    1
#> [5,]    2    2    1
#> 
#> [[2]][[2]]
#>      [,1] [,2] [,3]
#> [1,]    3    3    1
#> [2,]    3    4    1
#> [3,]    4    4    1
#> [4,]    4    3    1
#> [5,]    3    3    1
#> 
#> 
#> attr(,"class")
#> [1] "XYZ"          "MULTIPOLYGON" "sfg"         
sfg_multipolygon(
  df, x = "x", y = "y", z = "z", m = "m", polygon_id = "polygon_id", linestring_id = "line_id"
  )
#> [[1]]
#> [[1]][[1]]
#>      [,1] [,2] [,3] [,4]
#> [1,]    0    0    1    1
#> [2,]    0    1    1    1
#> [3,]    1    1    1    1
#> [4,]    1    0    1    1
#> [5,]    0    0    1    1
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#>      [,1] [,2] [,3] [,4]
#> [1,]    2    2    1    1
#> [2,]    2    5    1    1
#> [3,]    5    5    1    1
#> [4,]    5    2    1    1
#> [5,]    2    2    1    1
#> 
#> [[2]][[2]]
#>      [,1] [,2] [,3] [,4]
#> [1,]    3    3    1    1
#> [2,]    3    4    1    1
#> [3,]    4    4    1    1
#> [4,]    4    3    1    1
#> [5,]    3    3    1    1
#> 
#> 
#> attr(,"class")
#> [1] "XYZM"         "MULTIPOLYGON" "sfg"         


sfg_multipolygon( m[, c("x","y") ] )
#> [[1]]
#> [[1]][[1]]
#>       [,1] [,2]
#>  [1,]    0    0
#>  [2,]    0    1
#>  [3,]    1    1
#>  [4,]    1    0
#>  [5,]    0    0
#>  [6,]    2    2
#>  [7,]    2    5
#>  [8,]    5    5
#>  [9,]    5    2
#> [10,]    2    2
#> [11,]    3    3
#> [12,]    3    4
#> [13,]    4    4
#> [14,]    4    3
#> [15,]    3    3
#> [16,]    0    0
#> 
#> 
#> attr(,"class")
#> [1] "XY"           "MULTIPOLYGON" "sfg"         

sfg_multipolygon(
  m, x = "x", y = "y", polygon_id = "polygon_id", linestring_id = "line_id"
  )
#> [[1]]
#> [[1]][[1]]
#>      [,1] [,2]
#> [1,]    0    0
#> [2,]    0    1
#> [3,]    1    1
#> [4,]    1    0
#> [5,]    0    0
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#>      [,1] [,2]
#> [1,]    2    2
#> [2,]    2    5
#> [3,]    5    5
#> [4,]    5    2
#> [5,]    2    2
#> 
#> [[2]][[2]]
#>      [,1] [,2]
#> [1,]    3    3
#> [2,]    3    4
#> [3,]    4    4
#> [4,]    4    3
#> [5,]    3    3
#> 
#> 
#> attr(,"class")
#> [1] "XY"           "MULTIPOLYGON" "sfg"         
sfg_multipolygon(
  m, x = "x", y = "y", z = "z", polygon_id = "polygon_id", linestring_id = "line_id"
  )
#> [[1]]
#> [[1]][[1]]
#>      [,1] [,2] [,3]
#> [1,]    0    0    1
#> [2,]    0    1    1
#> [3,]    1    1    1
#> [4,]    1    0    1
#> [5,]    0    0    1
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#>      [,1] [,2] [,3]
#> [1,]    2    2    1
#> [2,]    2    5    1
#> [3,]    5    5    1
#> [4,]    5    2    1
#> [5,]    2    2    1
#> 
#> [[2]][[2]]
#>      [,1] [,2] [,3]
#> [1,]    3    3    1
#> [2,]    3    4    1
#> [3,]    4    4    1
#> [4,]    4    3    1
#> [5,]    3    3    1
#> 
#> 
#> attr(,"class")
#> [1] "XYZ"          "MULTIPOLYGON" "sfg"         
sfg_multipolygon(
  m, x = "x", y = "y", z = "z", m = "m", polygon_id = "polygon_id", linestring_id = "line_id"
  )
#> [[1]]
#> [[1]][[1]]
#>      [,1] [,2] [,3] [,4]
#> [1,]    0    0    1    1
#> [2,]    0    1    1    1
#> [3,]    1    1    1    1
#> [4,]    1    0    1    1
#> [5,]    0    0    1    1
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#>      [,1] [,2] [,3] [,4]
#> [1,]    2    2    1    1
#> [2,]    2    5    1    1
#> [3,]    5    5    1    1
#> [4,]    5    2    1    1
#> [5,]    2    2    1    1
#> 
#> [[2]][[2]]
#>      [,1] [,2] [,3] [,4]
#> [1,]    3    3    1    1
#> [2,]    3    4    1    1
#> [3,]    4    4    1    1
#> [4,]    4    3    1    1
#> [5,]    3    3    1    1
#> 
#> 
#> attr(,"class")
#> [1] "XYZM"         "MULTIPOLYGON" "sfg"