# st_remove_holes: Remove polygon holes In michaeldorman/nngeo: k-Nearest Neighbor Join for Spatial Data

## Description

The function removes all polygon holes and return the modified layer

## Usage

 `1` ```st_remove_holes(x, max_area = 0) ```

## Arguments

 `x` Object of class `sf`, `sfc` or `sfg`, of type `"POLYGON"` or `"MULTIPOLYGON"` `max_area` Maximum area of holes to be removed (`numeric` or `units`) in the units of `x`). Default value (`0`) causes removing all holes.

## Value

Object of same class as `x`, with holes removed

## Note

See function `sfheaders::st_remove_holes` for highly-optimized faster alternative:

## References

Following the StackOverflow answer by user `lbusett`:

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56``` ```opar = par(mfrow = c(1, 2)) # Example with 'sfg' - POLYGON p1 = rbind(c(0,0), c(1,0), c(3,2), c(2,4), c(1,4), c(0,0)) p2 = rbind(c(1,1), c(1,2), c(2,2), c(1,1)) pol = st_polygon(list(p1, p2)) pol result = st_remove_holes(pol) result plot(pol, col = "#FF000033", main = "Before") plot(result, col = "#FF000033", main = "After") # Example with 'sfg' - MULTIPOLYGON p3 = rbind(c(3,0), c(4,0), c(4,1), c(3,1), c(3,0)) p4 = rbind(c(3.3,0.3), c(3.8,0.3), c(3.8,0.8), c(3.3,0.8), c(3.3,0.3))[5:1,] p5 = rbind(c(3,3), c(4,2), c(4,3), c(3,3)) mpol = st_multipolygon(list(list(p1,p2), list(p3,p4), list(p5))) mpol result = st_remove_holes(mpol) result plot(mpol, col = "#FF000033", main = "Before") plot(result, col = "#FF000033", main = "After") # Example with 'sfc' - POLYGON x = st_sfc(pol, pol * 0.75 + c(3.5, 2)) x result = st_remove_holes(x) result plot(x, col = "#FF000033", main = "Before") plot(result, col = "#FF000033", main = "After") # Example with 'sfc' - MULTIPOLYGON x = st_sfc(pol, mpol * 0.75 + c(3.5, 2)) x result = st_remove_holes(x) result plot(x, col = "#FF000033", main = "Before") plot(result, col = "#FF000033", main = "After") par(opar) # Example with 'sf' x = st_sfc(pol, mpol * 0.75 + c(3.5, 2)) x = st_sf(geom = x, data.frame(id = 1:length(x))) result = st_remove_holes(x) result plot(x, main = "Before") plot(result, main = "After") # Example with 'sf' using argument 'max_area' x = st_sfc(pol, mpol * 0.75 + c(3.5, 2)) x = st_sf(geom = x, data.frame(id = 1:length(x))) result = st_remove_holes(x, max_area = 0.4) result plot(x, main = "Before") plot(result, main = "After") ```

michaeldorman/nngeo documentation built on June 17, 2021, 7:52 a.m.