如何为R中的每一列创建一个单独的数据帧,然后光栅化并将所有光栅层绑定到多层光栅中



所以我得到了一个反射率数据帧,前两列是lon和lat,之后每列都是一个波长(其中z是反射率值(:

(但我将lon和lat之后的每一列的名称改为"refl"(

#lon, lat, band1, band2, band3, band4, etc.
#x,y,z,z,z,z...
#x,y,z,z,z,z...

我正在尝试创建一个多层光栅,并且可以通过以下代码使用一层(xyz(:

data<-read.csv("data.csv)
layer1<-data[,c(1:3)] # to select the first two lon and lat column and the band1 column
x <- raster(xmn=151.9124, xmx=151.9146, ymn=-23.4473, ymx=-23.44518, res=0.00001, crs="+proj=longlat +datum=WGS84")
specras <- rasterize(layer1[, c('lon', 'lat')], x, layer1[, 'refl'], fun=mean)

这就是一个光栅层看起来像绘制的

一旦我有了一个光栅层,我如何创建一个循环,使数据中的所有后续列进入光栅层,然后将它们全部绑定以形成RasterStack?我有大约1000个带值/列。

想以这种形式写一些东西,但似乎无法实现:

for (i in (3:ncol(data))){
layer<-data[,c(1:2,i)]
specrast<-rasterize(layer[, c('lon', 'lat')], x, layer[, 'refl'], fun=mean)
specbrick<-addLayer(specrast)
}

您应该需要一个循环并且能够使用

library(raster)
x <- raster(xmn=151.9124, xmx=151.9146, ymn=-23.4473, ymx=-23.44518, res=0.00001, crs="+proj=longlat +datum=WGS84")
sr <- rasterize(data[, c('lon', 'lat')], x, data[, -c(1:2)], fun=mean)

你的循环可以像一样工作

s <- list()
for (i in (3:ncol(data))){
s[[i-2]] <- rasterize(data[, c('lon', 'lat')], x, data[, i], fun=mean)
}
sr <- stack(s)

最新更新