打开.asc文件列表并创建砖块或堆栈

时间:2017-07-10 09:43:04

标签: r raster

我想根据名称从大量的.asc文件中创建一个砖块栅格。我尝试了几种方法(见下文),但没有成功:

setwd("C:/")
b <- brick(list.files(pattern = glob2rx("total_aground_live_biomass_2000_*_*.asc")))
b <- brick(system.file(pattern = glob2rx("total_aground_live_biomass_2000_*_*.asc"), package = "Raster"))

有人可以帮助我吗?我也想知道如何使用glob2rx只读取具有以下模式的文件:total_aground_live_biomass_ [仅1995年,2000年,2005年] _ _ * .ASC。非常感谢!

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,那么您有不同年份的.asc个文件,您希望按年堆叠在一起。

假设文件位于同一目录中(为简单起见,我们称之为datadir)并且具有一致的命名约定,我就是这样做的:

library(raster)

#vector of years
yr <- c('1995','2000','2005')

# file name pattern
patt <- 'total_aground_live_biomass_(*.).asc$' 

#list files, optionally without recursive
fls <- list.files(datadir,patt,full.names=TRUE,recursive=TRUE)

#stack files per year
stcks <- lapply(yr,function(x) stack(grep(x,fls,value=TRUE)))

这应该给你一个很好的三个光栅堆栈列表,每年一个,如yr中所定义。您需要使用stack将文件从磁盘堆叠在一起。如果你之后仍然需要它们作为栅格砖,你可以用brick来隐藏它们。