【问题标题】:How to perform raster calculation in R如何在 R 中执行栅格计算
【发布时间】:2016-08-29 06:59:44
【问题描述】:

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

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

错误发生为“二元运算符的非数字参数” 如何将栅格转换为数值参数?

【问题讨论】:

    标签: r r-raster rgdal envi


    【解决方案1】:

    您可能需要 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 中创建对象。

    【讨论】:

    • 嗨!谢谢你的回复!第二个“新”覆盖了第一个对象,因此两者没有引用相同的数据,我应该指定它。但是,我尝试了您的代码,但仍然显示未找到“rast_stack”。我不确定问题出在哪里。我要在 R 中再次导入这两个新写入的文件吗?我在一个项目中,对 R 非常陌生。非常感谢您的帮助!
    • 您是否遇到任何其他错误?您需要将栅格数据存储为变量,因此您可以读取文件,或者根据newnew1 的格式,您可以执行NIR.envi &lt;- new 之类的简单操作。无论哪种方式,您都需要将栅格存储为变量,然后使用该变量,而不是将文件作为字符串引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多