我想通过属性值合并/组合/联合 shapefile 中的不同特征。一个简单的、有启发性的示例是从包含具有州 ID 的县的地理数据集中重新创建州 shapefile。
我开发了一个简单的循环代码(参见下面的最小可重现示例)来按每个级别的属性值执行此操作,但这很慢。此外,我已经根深蒂固地尽可能避免这样的循环。在 R 中的简单功能中似乎没有更快的方法来做到这一点......
library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
i <- 1
for (ch in levels(as.factor(nc$SID74))) {
nc_temp <- nc %>% filter(SID74==ch) %>%
st_union() %>%
st_sf()
nc_temp$SID74 <- ch
if (i==1) {
nc_union = nc_temp
} else {
nc_union <- rbind(nc_union, nc_temp)
}
i <- i+1
}
上面的代码执行了所需的任务,但速度相对较慢。[我知道我可以通过预先分配内存来加快速度。] 他们是执行此任务的更有效的单一命令方式吗?