-2

放射測定ラスターを処理しています。すでに 2 つの別々のファイルに 2 つのバンドを書きました。

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

エラーは「バイナリ演算子への非数値引数」として発生しますラスターを数値引数に変換するにはどうすればよいですか?

4

1 に答える 1

4

パッケージ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 でオブジェクトを作成していません。

于 2016-05-04T03:18:02.967 に答える