Без примеров данных, я думаю, что возможное решение может быть:
создать пример данных
library( sf)
#square of 2 x 2
pol = st_polygon(list(rbind(c(0,0), c(2,0), c(2,2), c(0,2), c(0,0))))
#add two more squares of 2 x 2
b = st_sfc(pol, pol + c(.8, .2), pol + c(4, .8))
plot(b)
рассчитать площадь перекрытия
l <- lapply( b, function(x) {
lapply(b, function(y) st_intersection( x, y ) %>% st_area() )
})
matrix(unlist(l), ncol = length(b), byrow = TRUE)
# [,1] [,2] [,3]
# [1,] 4.00 2.16 0
# [2,] 2.16 4.00 0
# [3,] 0.00 0.00 4
рассчитать процент перекрытия
l2 <- lapply( b, function(x) {
lapply(b, function(y) st_intersection( x, y ) %>% st_area() * 100 /sqrt( st_area(x) * st_area(y) ) )
})
matrix(unlist(l2), ncol = length(b), byrow = TRUE)
# [,1] [,2] [,3]
# [1,] 100 54 0
# [2,] 54 100 0
# [3,] 0 0 100