如何在R中执行栅格计算

时间:2016-05-04 02:48:53

标签: r r-raster rgdal envi

我正在处理辐射测量栅格。 我已经在两个单独的文件中写了两个乐队:

setwd("D:/All_radio")
writeRaster(new,filename="NIR.envi",format="ENVI",overwrite=T)
writeRaster(new1,filename="SWIR.envi",format="ENVI",overwrite=T)

当我尝试

ndii<-(("NIR.envi"- "SWIR.envi")/("NIR.envi"+ "SWIR.envi"))

错误发生在&#34;二元运算符的非数字参数&#34; 如何将栅格转换为数字参数?

1 个答案:

答案 0 :(得分:2)

您可能需要calc包中的raster内容。

 rast_stack <- stack(NIR.envi,SWIR.envi)
 fun <- function(x) { (x[1]-x[2])/(x[1]+x[2])}
 ndii <- calc(rast_stack, fun)

但无论如何,您的代码似乎存在一些问题。 在这一行中,您使用字符串而不是栅格作为变量。

(("NIR.envi"- "SWIR.envi")/("NIR.envi"+ "SWIR.envi"))

并且您似乎尝试使用相同的数据创建两个栅格,在这种情况下,您的输出将始终为0.您还创建了一个栅格文件,但没有在r中创建对象。