Nothing
#' @title Erase points
#' @description Removes points intersecting a polygon feature class
#'
#' @param y A sf POINT object
#' @param x A sf POLYGON object
#' @param inside (TRUE/FALSE) Remove points inside polygon, else outside polygon
#'
#' @details
#' Used to erase points that intersect polygon(s). The default of inside=TRUE
#' erases points inside the polygons however, if inside=FALSE then
#' the function results in an intersection where points that
#' intersect the polygon are retained.
#'
#' @return An sf POINT object
#'
#' @author Jeffrey S. Evans <jeffrey_evans<at>tnc.org>
#'
#' @examples
#'
#' library(sf)
#'
#' if (require(sp, quietly = TRUE)) {
#' data(meuse, package = "sp")
#' meuse <- st_as_sf(meuse, coords = c("x", "y"), crs = 28992, agr = "constant")
#'
#' s <- st_as_sf(st_sample(st_as_sfc(st_bbox(meuse)), size=1000,
#' type = "regular"))
#' s$id <- 1:nrow(s)
#' b <- st_buffer(s[sample(1:nrow(s),5),], dist=300)
#' b$id <- 1:nrow(b)
#'
#' # Erase points based on polygons
#' in.erase <- erase.point(s, b)
#' out.erase <- erase.point(s, b, inside = FALSE)
#'
#' opar <- par(no.readonly=TRUE)
#' par(mfrow=c(2,2))
#' plot(st_geometry(s), pch=20, main="original data")
#' plot(st_geometry(b),add=TRUE)
#' plot(st_geometry(in.erase), pch=20, main="erased data")
#' plot(st_geometry(b),add=TRUE)
#' plot(st_geometry(out.erase), pch=20,
#' main="erased data using inside=FALSE")
#' plot(st_geometry(b),add=TRUE)
#' par(opar)
#'
#' } else {
#' cat("Please install sp package to run example", "\n")
#' }
#'
#' @export erase.point
erase.point <- function(y, x, inside = TRUE) {
if(!inherits(y, "sf"))
stop(deparse(substitute(y)), " must be an sf POINT object")
if(unique(as.character(sf::st_geometry_type(y))) != "POINT")
stop(deparse(substitute(y)), " must be an sf POINT object")
if(!inherits(x, "sf"))
stop(deparse(substitute(x)), " must be an sf POLYGON object")
if(unique(as.character(sf::st_geometry_type(x))) != "POLYGON")
stop(deparse(substitute(x)), " must be an sf POLYGON object")
idx <- sf::st_intersects(y, x, sparse = FALSE)
if(inside == TRUE) {
y <- y[-which(apply(idx, 1, any)),]
} else {
y <- y[which(apply(idx, 1, any)),]
}
return(y)
}
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.