读入R中目录中的所有shapefile到内存中

时间:2017-12-12 02:54:56

标签: r for-loop shapefile

我想将目录中的所有shapefile读入全局环境但是,当我在工作目录中获取文件列表时,该列表包含.shp和.shp.xml文件,后者我做的是不想。我的草稿代码读取.shp和.shp.xml文件。我怎么能阻止它这样做?

草案代码如下:

library(maptools)

# get all files with the .shp extension from working directory
setwd("N:/Dropbox/_BonesFirst/139_Transit_Metros_Points_Subset_by_R")
shps <- dir(getwd(), "*.shp")
# the assign function will take the string representing shp
# and turn it into a variable which holds the spatial points data 
for (shp in shps) {
  cat("now loading", shp, "...", '\n\r')
  assign(shp, readOGR(shp)) 
                  }

编辑:问题似乎出现在readShapePoints中。 readOGR(来自rgdal)或shapefile(来自栅格)效果更好。

2 个答案:

答案 0 :(得分:2)

获取所有文件:

# replace with your folder name:
dir <- "c:/files/shpfiles"
ff <- list.files(dir, pattern="\\.shp$", full.names=TRUE)

现在阅读它们。最简单raster::shapefile。不要使用readShapefile(过时和不完整)

library(raster)
# first file
shapefile(ff[1])

# all of them into a list
x <- lapply(ff, shapefile)

答案 1 :(得分:0)

按照帖子的标题,我相信您要列出当前目录中的所有形状文件。您可以在下面使用。

list.files(, pattern="*.shp", full.names=TRUE)