如何有效地将多个栅格(.tif)文件导入R

时间:2018-10-10 18:50:47

标签: r lapply spatial raster tiff

我是R新手,特别是在空间数据方面。我正在尝试找到一种有效地将多个(〜600)单波段栅格(.tif)文件导入R的方法,这些文件都存储在同一文件夹中。不确定这是否重要,但请注意,在Mac和Windows Parallel VM上的文件夹中查看时,每种.tif = .TIF有以下五(5)种文件格式; .tfw; .TIF.aux.xml; .TIF.ovr; .TIF.xml。无论如何,以下代码(以及我尝试过的其他类似变体)似乎不起作用:

library(sp)
library(rgdal)
library(raster)

#path to where all .tif files are located
setwd("/path/to/workingdirectory")

#my attempt to create a list of my .tif files for lapply
temp = list.files(pattern="*.tif")
temp #returns 'character(0)'

#trying to use the raster function to read all .tif files
myfiles = lapply(temp, raster)
myfiles #returns 'list()'

是否可以使用某种形式的循环有效地导入所有光栅文件?

3 个答案:

答案 0 :(得分:1)

我找到了答案,并将发布完整代码以帮助遇到此问题的其他初学者R用户。要调用列表元素,请使用双方括号[[]],如下所示:

#first import all files in a single folder as a list 
rastlist <- list.files(path = "/path/to/wd", pattern='.TIF$', 
all.files=TRUE, full.names=FALSE)

#import all raster files in folder using lapply
allrasters <- lapply(rastlist, raster)

#to check the index numbers of all imported raster list elements
allrasters

#call single raster element
allrasters[[1]]

#to run a function on an individual raster e.g., plot 
plot(allrasters[[1]])

Booyah。感谢Parfait的帮助。

答案 1 :(得分:0)

好的,好的,我认为以下代码有效:

rastlist <- list.files(path = "/path/to/wd", pattern='.TIF$', all.files=TRUE, 
full.names=FALSE)
lapply(rastlist, raster)

但是现在如何访问单个栅格文件以进行进一步分析?

答案 2 :(得分:0)

如果栅格具有相同的范围,则可以简单地将它们加载到堆栈中

#first import all files in a single folder as a list 
rastlist <- list.files(path = "/path/to/wd", pattern='.TIF$', all.files=TRUE, full.names=FALSE)

library(raster)
allrasters <- stack(rastlist)