很抱歉,如果不合适。我检查了所有其他帖子,但无法解决。
我正在尝试将堆叠的栅格对象划分为每个波段,并将它们添加到列表中,如下所示:
library(rgdal)
satImage <- "pla18_rgbn_ndvi_7stack_16bit.img"
x <- vector("list", 35)
for (i in 1:35) {
psi <- raster(satImage, band = i)
x[[i]] <- psi
}
但是它会产生如下列表:
> View(x)
> x
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
...
[[34]]
NULL
[[35]]
class : RasterLayer
band : 35 (of 35 bands)
dimensions : 13084, 18025, 235839100 (nrow, ncol, ncell)
resolution : 3, 3 (x, y)
extent : 581337, 635412, 4425114, 4464366 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=35 +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs
data source : E:/betul/35bantli/pla18_rgbn_ndvi_7stack_16bit.img
names : pla18_rgbn_ndvi_7stack_16bit
values : 55, 65535 (min, max)
我想要列表中所有其他34个波段。我该如何解决这个问题?
答案 0 :(得分:1)
我认为您正在寻找的是这个
library(raster)
satImage <- "pla18_rgbn_ndvi_7stack_16bit.img"
s <- stack(satImage)
x <- as.list(s)
现在有示例数据(问问题时请始终使用R附带的示例数据):
f <- system.file("external/rlogo.grd", package="raster")
s <- stack(f)
x <- as.list(s)
检查“乐队”号码
sapply(x, bandnr)
#[1] 1 2 3
如果您知道乐队的数量(在这种情况下为3个),那么您正在做的事情应该可以工作(但是上面的内容更优雅):
f <- system.file("external/rlogo.grd", package="raster")
n <- 3
x <- vector("list", n)
for (i in 1:n) {
x[[i]] <- raster(f, band = i)
}
最后:您不提供上下文,但是最好创建一个RasterStack
(如上所示),或者最好创建一个RasterBrick
,而不是创建一个{{ 1}}个对象
答案 1 :(得分:-2)
使用“ tif”文件时,问题已解决。