迭代每个文件夹并选择所选的乐队

时间:2017-02-03 03:21:31

标签: r raster r-raster

我有几个文件夹,每个文件夹包含几个Landsat 8乐队。我想迭代每个文件夹并选择相同的4个特定乐队。每个文件夹中的带以相同的顺序排列,由此可以基于它们的列表值进行查询。

这是我的代码,但它不起作用。

library(raster)
library(rgdal)
setwd("Z:/TasseledCap")
folders <- list.dirs()
for(f in 1:length(folders)){
  rasterlist<-list.files(folders[f], full.names=FALSE)
  rasterlist
  B <- raster(rasterlist[4])
}
  

“.local(.Object,...)中的错误:
  `Z:\ TasseledCap \ LC80330302015211LGN00_B1.TIF'中不存在   文件系统,并且不被识别为受支持的数据集名称。

     

.rasterObjectFromFile中的错误(x,band = band,objecttype =   “RasterLayer”,:无法从中创建RasterLayer对象   文件。 (文件不存在)

1 个答案:

答案 0 :(得分:1)

full.names参数设置为TRUE可以解决您的问题。请注意,您的代码将在每次迭代中覆盖B变量。

setwd("Z:/TasseledCap")
folders=list.dirs()

for(f in 1:length(folders)){
    rasterlist < -list.files(folders[f], full.names=TRUE)
    B <- raster(rasterlist[4])
}

P.S。:使用setwd()更改工作目录并不总是最好的主意。我会尽量避免这个命令:

root    <- "Z:/TasseledCap"
folders <- list.dirs(root, recursive=F)

for(f in 1:length(folders)){
    rasterlist <- list.files(folders[f], full.names=TRUE)
    B <- raster(rasterlist[4])
}