我想根据名称从大量的.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。非常感谢!
答案 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
来隐藏它们。