如何在R中执行光栅计算

如何在R中执行光栅计算,r,r-raster,rgdal,envi,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"

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

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"))

ndii您可能需要
光栅
软件包中的
calc
之类的东西

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

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

嗨!谢谢你的回复!第二个“new”覆盖了第一个对象,因此这两个对象引用的不是相同的数据,我应该指定它。然而,我尝试了你的代码,它仍然说“rast_stack”没有找到。我不知道问题出在哪里。我要在R中再次导入两个新编写的文件吗?我在一个项目,非常新的R。非常感谢您的帮助!你还有其他错误吗?您需要将光栅数据存储为变量,以便您可以读取文件,或者根据
new
new1
的格式,您可以执行一些简单的操作,如
NIR.envi
(("NIR.envi"- "SWIR.envi")/("NIR.envi"+ "SWIR.envi"))