是否在R中导入多个堆叠的栅格图像?


9

我想从指示的文件夹中导入所有多个镶嵌栅格(每个镶嵌由7层组成)到我的R中。然后将它们作为单个多层栅格进行访问。

在此处输入图片说明

所以我做了:

# read all mosaics named "mos....img" in R    
raster_data<-list.files(path=getwd(), pattern="mos.*.img$") 
# read files as rasters
s <- stack(raster_data)
# check my imported rasters p.ex. raster n°8 from "s" raster stack
s[[8]]         

而我的栅格s [[8]]仅包含1层,因此未导入整个镶嵌!

nlayers(s[[8]])
[[1]]

如果我分别阅读每个镶嵌图,它将起作用:

# read 1 mosaic (composed by 7 bands)
mosaic1<-brick("mosaic1.img")
# extract one band
band4<-subset(mosaic1, 4)

为什么“堆栈”工具不导入整个镶嵌图,而仅导入镶嵌图的一个带,并且如何排列呢?

Answers:


11

看一看nlayers(s)。返回的层数等于28-至少对于上面的示例而言,具有4个包含7个层的多层对象。应用stack到多个多层文件会产生一个巨大的“ RasterStack”对象,即所有单个多层对象都将彼此附加。

如果您希望每个文件有单独的堆栈,我建议使用

s <- lapply(raster_data, stack)

这会产生一个“ RasterStack”对象列表,每个对象包括7层而不是一个巨大的堆栈。然后,您可以通过以下方式访问特定的层,例如第三个“ RasterStack”对象的第二层:

s[[3]][[2]]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.