2016-05-04 15 views
-2
durch

Ich bearbeite Radiometrie-Raster. Ich schrieb zwei Bands in zwei separaten Dateien bereits:So führen Sie eine Rasterberechnung in R

setwd("D:/All_radio") 
writeRaster(new,filename="NIR.envi",format="ENVI",overwrite=T) 
writeRaster(new1,filename="SWIR.envi",format="ENVI",overwrite=T) 

Als ich

versuchte
ndii<-(("NIR.envi"- "SWIR.envi")/("NIR.envi"+ "SWIR.envi")) 

der Fehler als „zu Binäroperators nicht-numerisches Argument“ auftritt Wie kann ich Raster in numerisches Argument drehen ?

Antwort

0

Möglicherweise benötigen Sie etwas wie calc aus dem raster Paket.

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

aber es scheint einige Probleme mit Ihrem Code zu geben. In dieser Zeile verwenden Sie Zeichenfolgen anstelle der Raster als Variablen.

(("NIR.envi"- "SWIR.envi")/("NIR.envi"+ "SWIR.envi")) 

und Sie scheinen zu versuchen, die beiden Rastern mit den gleichen Daten zu erstellen, wobei in diesem Fall die Ausgabe immer 0. Sie sind auch eine Rasterdatei sein würde, aber nicht die Schaffung eines Objekts in r zu schaffen.

+0

Hallo! Danke für deine Antwort! Das zweite 'neue' überschreibt das erste Objekt, so dass die beiden sich nicht auf die gleichen Daten beziehen, ich sollte es spezifizieren. Allerdings habe ich deinen Code ausprobiert und es steht immer noch "rast_stack" nicht gefunden. Ich bin mir nicht sicher, wo das Problem liegt. Soll ich die zwei neu geschriebenen Dateien wieder in R importieren? Ich in einem Projekt und ganz neu bei R. Vielen Dank für Ihre Hilfe! –

+0

erhalten Sie weitere Fehler? Sie werden die Raster-Daten als Variable speichern müssen, so dass Sie entweder die Dateien lesen können, oder, je nach dem Format von 'new' und' new1', können Sie etwas einfaches tun, wie 'NIR.envi <- new' . In beiden Fällen müssen Sie die Raster als Variable speichern und dann die Variable verwenden, anstatt auf die Datei als Zeichenfolge zu verweisen. – user5219763