【问题标题】:Iterating through every folders and choosing selected bands遍历每个文件夹并选择选定的波段
【发布时间】:2017-02-03 03:21:31
【问题描述】:

我有几个文件夹,每个文件夹都包含几个 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 对象 文件。 (文件不存在)

【问题讨论】:

    标签: r raster r-raster


    【解决方案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])
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 2020-07-02
      • 1970-01-01
      • 2014-12-07
      • 2017-03-08
      • 2021-12-02
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      相关资源
      最近更新 更多