2016-05-04 8 views
-2

Я обрабатываю рациометры радиометрии. я написал две группы в двух отдельных файлах уже:Как выполнить растровый расчет в 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")) 

ошибка возникает, как «нечисловой аргумент для бинарного оператора» Как превратить растр в числовой аргумент ?

ответ

0

Возможно, вам понадобится что-то вроде 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. Вы также создание растрового файла, но не создает объект в г.

+0

Привет! Спасибо за ответ! Второй «новый» перезаписывает первый объект, поэтому они не ссылаются на одни и те же данные, я должен указать его. Однако я попробовал ваш код, и он все еще говорит, что «rast_stack» не найден. Я не уверен, где проблема. Должен ли я снова импортировать два вновь написанных файла в R? Я в проекте и очень новичок в R. Большое спасибо за вашу помощь! –

+0

Вы получаете какие-либо другие ошибки? Вам понадобятся растровые данные, хранящиеся в виде переменной, поэтому вы можете либо читать файлы, либо в зависимости от формата 'new' и' new1', вы можете сделать что-то простое, например 'NIR.envi <- new' , В любом случае вам нужно, чтобы растры хранились как переменная, а затем использовали переменную, а не ссылались на файл как строку. – user5219763