我无法找到将多个科幻多边形合并为一个新科幻多边形的最佳方法。我一直在使用
st_union
但是这似乎只能成对合并两个 sf 对象。
%>%
表示法可以管道一堆st_union
函数,但一定有不同的方法吗?
all <- st_union(rd) %>% st_union(cb) %>% st_union(pl) %>% st_union(sl) %>%
st_union(wp) %>% st_union(wf) %>% st_union(bd)
我还发现性能真的很慢...
这个解决方案对我有用:
single_sf <- dplyr::bind_rows(list(rd,cb,pl,sl,wp,wf,bd))
dissolve_sf <- st_union(single_sf)
感谢这篇文章:将一系列 sf 对象转换为一个 sf
sf 对象有一个名为
sfc
的列表/数组对象,我们可以使用 st_sfc(rd, cb, pl)
构造此列表,然后可以使用 sf_combine
组合这些对象。
如果我理解正确的话,可以更详细地看到:
https://r-spatial.github.io/sf/reference/sfc.html
和
https://r-spatial.github.io/sf/reference/geos_combine.html
总的来说,我希望代码如下所示:
sfg_list <- st_sfc(rd, sb, pl, sl, wp, wf, bd)
st_combine(sfg_list)
如果多边形在列表中,请尝试 st_combine(do.call("c", pol))