合并多边形并求和它们的值

Merging polygons and summing their values

我有一个包含许多重叠多边形的数据框,我想将它们组合成一个形状,其值等于赋予每个单个多边形的值的总和。

一些示例数据:

df <- data.frame(x = c(0.5, 1.5, 4.5, 5.5),
         y = c(1, 1, 1, 1),
         id = c('a', 'b', 'c', 'd'),
         score = c(1, 3, 2, 4))

s_df <- SpatialPointsDataFrame(df[, c('x', 'y')], df[, 3:4]) %>%
  as('sf') %>%
  st_buffer(dist = 1)

plot(s_df)

我可以使用 sf 包中的 st_union 函数获得这些多边形的并集,我认为下一步是在多边形和原始多边形之间进行空间连接。但是,我不知道该怎么做。

st_union 给出一个多边形对象作为其输出,但是 st_intersects 不适用于该对象 class,而且我似乎无法从多边形制作 SpatialPolygonsDataframe反对。

如此简单的任务,我觉得一定有一些我忽略或错过的基本功能

如有任何帮助,我们将不胜感激

你考虑过卑微的dplyr::summarise()吗?

它将合并空间对象的几何图形 - 合并为单个几何图形,或者如果设置分组变量则合并为多个几何图形 - 并且它可以进行任何聚合,例如在这个玩具示例中计算总分。

一个可能的分组变量是多边形与它们自身的交集——它似乎在这个例子中有效,我希望它能概括

library(sf)
library(sp)
library(dplyr)

df <- data.frame(x = c(0.5, 1.5, 4.5, 5.5),
                 y = c(1, 1, 1, 1),
                 id = c('a', 'b', 'c', 'd'),
                 score = c(1, 3, 2, 4))

s_df <- SpatialPointsDataFrame(df[, c('x', 'y')], df[, 3:4]) %>%
  as('sf') %>%
  st_buffer(dist = 1)

plot(s_df)

result <- s_df %>% 
  group_by(group = paste(st_intersects(s_df, s_df, sparse = T))) %>% 
  summarise(score = sum(score))

plot(result["score"])