我很难找到将多个sf多边形合并为一个新sf多边形的最佳方法。我一直在使用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))