r-如何找到两个形状文件之间的重叠



我有两个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是形状文件,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,添加了一个名为"重叠"的列,显示了从x到多边形内的点的计数。这并不是我在问题中所要求的,但对我个人来说是一个好结果。

尝试在sp:中使用over

library(sp)
out = over(pnt,plgn)

来自?超过:

x=";"空间点";,y=";"空间多边形";返回一个长度等于点数的数字矢量;数字是点落在其中的y的多边形的索引(数字(;NA表示该点不落在多边形中;如果一个点落在多个多边形中,则会记录最后一个多边形。

最新更新