【发布时间】:2020-07-17 05:49:02
【问题描述】:
我有一个包含三个波段的栅格和一个包含三个列的矩阵。
library(raster)
#Make two single band raster with random values
r1 <- raster(ncol=36, nrow=18, xmn=-1000, xmx=1000, ymn=-100, ymx=900)
set.seed(42)
values(r1) <- runif(ncell(r1))
r2 <- raster(ncol=36, nrow=18, xmn=-1000, xmx=1000, ymn=-100, ymx=900)
set.seed(123)
values(r2) <- runif(ncell(r2))
r3 <- raster(ncol=36, nrow=18, xmn=-1000, xmx=1000, ymn=-100, ymx=900)
set.seed(543)
values(r3) <- runif(ncell(r3))
#Stack them into a three-band raster
r <- stack(r1, r2, r3)
#Make a matrix with values
y <- matrix(ncol=3, nrow=2, seq(1,6,1))
我想找出 y 的每一行和 r 的每个单元格之间的角度。
#Function for angle
specAngle <- function(a,b){
acos(sum(a*b)/( sqrt(sum(a*a))*sqrt(sum(b*b))))
}
我可以通过以下方式将栅格转换为矩阵:
m <- getValues(r)
现在每个矩阵都具有相同的形状(每个矩阵 3 列,每行作为一个像素或来自 y 的样本)。我看过使用嵌套的 apply() 函数,但老实说,我不理解语法,因此无法让它工作。
我有 40 多个非常大的高光谱栅格(425 个波段)和一个 50 行矩阵,我需要使用它来生成 40 多个新栅格,每个栅格有 50 个波段。我怎样才能有效地做到这一点?
【问题讨论】: