You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求优化R语言批量读取合并Shapefile的函数

批量读取合并Shapefile的R函数优化求助

我编写了一个R语言函数用于批量读取、合并Shapefile并保存,现寻求优化方案以解决大文件场景下的内存不足问题。

原函数代码

reading_all_shapes=function(path,state,type_file,name_layer,dir_save){
  number_files = length(list.files(path =paste0(path,state), all.files = F, recursive = F, full.names = TRUE))/2
  shape_list=list()
  for(i in 1:number_files){
    tryCatch({
      shape_list[[i]] = readOGR(dsn = paste0(path,state,'\\unzipped',i),layer=type_file)
    }, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
    
  }
  stacked_layers=do.call(rbind, shape_list)
  writeOGR(stacked_layers, layer = name_layer, dir_save, driver="ESRI Shapefile")
  return(stacked_layers)
}

参数说明

  • path:Shapefile存储根路径;
  • state:巴西联邦州(对应Shapefile所在目录);
  • type_file:要读取的Shapefile类型(如农村地产、永久保护区等);
  • name_layer:合并后Shapefile的图层名;
  • dir_save:合并后文件的保存路径。

函数逻辑与当前问题

函数的作用是读取不同文件夹中的多个Shapefile,合并后保存到指定目录。其中number_files = length(list(...))/2是因为目标目录下同时存在Shapefile文件夹和对应的压缩包(例如阿克里州有22个市镇,对应22个文件夹和22个压缩包)。

目前遇到的问题:部分州的市镇数量多、Shapefile文件量大,电脑无法处理全量读取合并的过程。我了解过lapply和sapply函数,但不确定是否适用。我的思路是分块处理:每读取10个文件就合并保存,清理内存后继续处理剩余文件,最后再将所有分块合并的文件整合,但无法实现通用的分块逻辑(不同州的文件数量不同)。

内容的提问来源于stack exchange,提问作者EduMinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:40:26