2016-05-04 13 views
-2

私は放射測定ラスターを処理しています。私はエラーが私は数値引数にラスタを有効にするにはどうすればよい 「二項演算子に非数値引数」として発生ラスター計算の実行方法R

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) 

: は、私はすでに2つの別々のファイルに二つのバンドを書きました?

答えて

0

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

とあなたはまた、ラスターファイルを作成するが、Rでオブジェクトを作成していない0あなたの出力は常になり、その場合には、同じデータ、との両方のラスタを作成しようとしているように見えます。

+0

こんにちは!返信ありがとうございます! 2番目の 'new'は最初のオブジェクトを上書きして、2人が同じデータを参照していないので、指定する必要があります。しかし、私はあなたのコードを試して、それはまだ 'rast_stack'が見つかりませんと言います。問題がどこにあるのかはわかりません。 2つの新しく書き込まれたファイルをRで再度インポートしますか?私はプロジェクトで、非常にRに新しいです。多くのおかげであなたの助けに感謝! –

+0

他にエラーがありますか?変数として保存されたラスタデータが必要になりますので、ファイルを読むか、 'new'と' new1'のフォーマットに応じて 'NIR.envi < - new'のような簡単なことをすることができます。どちらの方法でも、ファイルとして文字列を参照するのではなく、ラスタを変数として格納してから変数を使用する必要があります。 – user5219763