如何在 R 中执行栅格计算
How to perform raster calculation in R
我正在处理辐射测量栅格。
我已经在两个单独的文件中写了两个乐队:
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"))
错误发生为"non-numeric argument to binary operator"
如何将光栅转换为数字参数?
您可能需要 raster
包中的 calc
之类的东西。
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 中创建对象。
我正在处理辐射测量栅格。 我已经在两个单独的文件中写了两个乐队:
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"))
错误发生为"non-numeric argument to binary operator" 如何将光栅转换为数字参数?
您可能需要 raster
包中的 calc
之类的东西。
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 中创建对象。