1

我想通过属性值合并/组合/联合 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
}

上面的代码执行了所需的任务,但速度相对较慢。[我知道我可以通过预先分配内存来加快速度。] 他们是执行此任务的更有效的单一命令方式吗?

4

0 回答 0