从多个文件夹中读取 shapefile

Posted

技术标签:

【中文标题】从多个文件夹中读取 shapefile【英文标题】:Read shapefiles from many folders 【发布时间】:2021-11-26 03:27:35 【问题描述】:

我的 shapefile 分布在许多文件夹中,我想将它们拉出并运行一个脚本以相同的方式处理每个文件夹。所有 .shp 文件都具有相同的名称,我需要将文件夹名称作为 id 出现(尚未尝试该部分)。我被困在第一步,但我觉得我很接近了。

# Read folder names to get list of folders

    folders <- list.dirs(path = "./locs", full.names = TRUE, recursive = TRUE)

# Make function that reads inside a folder same way for all files
  
    all_files <- function(folder) 
    readOGR(dsn = folder, layer = "SAMENAME.shp", verbose = FALSE)


# Map the function to each folder listed in "folders".

    try <- map(folders, all_files)

很抱歉,我对此没有一个代表,如果我能在这里获得一些牵引力,也许我明天可以建造一个。

【问题讨论】:

【参考方案1】:

我认为你很接近。我认为你只需要三个修复1)使用paste0()函数在“dsn”参数中组合文件夹名称和shapefile名称,2)在你的all_files()函数中添加一个return()调用和3)从map()do.call()lapply()。尝试像这样调整您的代码:

# Read folder names to get list of folders

    folders <- list.dirs(path = "./locs", full.names = TRUE, recursive = TRUE)

# Make function that reads inside a folder same way for all files
  
    all_files <- function(folder) 
    out<-readOGR(dsn = paste0(folder, "SAMENAME.shp", sep+"/), layer = "SAMENAME.shp", verbose = FALSE)
    return(out)


# Map the function to each folder listed in "folders".

    try <- lapply(folders, all_files) #lapply() approach
    try2 <- do.call(all_files, folders) #do.call() approach

如果这不起作用,您可以考虑使用 sf::read_st() 函数读取 shapefile

【讨论】:

以上是关于从多个文件夹中读取 shapefile的主要内容,如果未能解决你的问题,请参考以下文章

从多个文件夹中读取 Delta 表

多个线程从同一个文件中读取

matlab,我怎么能从多个文件夹中读取

从多个文件夹中读取 shapefile

Python问题:从一个文件夹中读取多个json文件只加载一个json

从多个文件中读取大数据并在python中聚合数据的最快方法是啥?