如何找到两个 shapefile 之间的重叠?
How do I find the overlap between two shapefiles?
我有两个 shapefile (sf),一个是多边形,一个是点。作为输出,我想要一个 df 显示哪些点落在哪些多边形内,如下所示:
polygon overlap geometry
polygon1 point34 c(3478,234872)
polygon1 point56 c(23423,234982)
polygon2 point23 c(23498,2334)
polygon3 point45 c(872348,23847)
polygon3 point87 c(234982,1237)
polygon3 point88 c(234873,2873)
我假设我必须对 st_intersection()
做一些事情,但到目前为止我还没有设法获得所需的输出。
经过一番折腾,我想到了这个解决方案,但我很确定它不是最优雅的。 x 和 y 是 shapefile,x 是点,y 是多边形。
count_overlap <- function(x, y){
f1 <- function(z){
r <- st_intersects(x,y[z,])
return(r)
}
l1 <- c(1:nrow(y))
l2 <- lapply(l1, f1)
l3 <- lapply(l2, unlist)
r <- sapply(l3, sum)
y$overlap <- r
return(y)
}
结果是原始 y sf/dataframe 添加了一个名为 'overlap' 的列,该列显示了 x 落入多边形内的点数。不完全是我在问题中要求的,但对我个人来说是一个很好的结果。
我有两个 shapefile (sf),一个是多边形,一个是点。作为输出,我想要一个 df 显示哪些点落在哪些多边形内,如下所示:
polygon overlap geometry
polygon1 point34 c(3478,234872)
polygon1 point56 c(23423,234982)
polygon2 point23 c(23498,2334)
polygon3 point45 c(872348,23847)
polygon3 point87 c(234982,1237)
polygon3 point88 c(234873,2873)
我假设我必须对 st_intersection()
做一些事情,但到目前为止我还没有设法获得所需的输出。
经过一番折腾,我想到了这个解决方案,但我很确定它不是最优雅的。 x 和 y 是 shapefile,x 是点,y 是多边形。
count_overlap <- function(x, y){
f1 <- function(z){
r <- st_intersects(x,y[z,])
return(r)
}
l1 <- c(1:nrow(y))
l2 <- lapply(l1, f1)
l3 <- lapply(l2, unlist)
r <- sapply(l3, sum)
y$overlap <- r
return(y)
}
结果是原始 y sf/dataframe 添加了一个名为 'overlap' 的列,该列显示了 x 落入多边形内的点数。不完全是我在问题中要求的,但对我个人来说是一个很好的结果。