Как сделать цикл для чтения нескольких файлов nc в виде растра, а затем записать их как envi?

Этот код, приведенный ниже ( разработанный пользователями stackru), будет читать переменную из файла netcdf и записывать ее как файл envi.
Этот код работает нормально, но у меня есть несколько файлов netcdf, таких как этот, и я хочу сделать цикл, чтобы сделать это для всех файлов в каталоге.
Файлы хранятся в каталоге, путь которого

d <-  flip(t(d), direction = "x") 
rf <- writeRaster(d, filename="last.envi", overwrite=TRUE)

Я попробовал это:

for(i in 1:length(a)){
    d <- raster(a[i], varname = "soil_moisture_c")
    rf <- writeRaster(d[[i]], filename="%d.envi", overwrite=TRUE)
    }

но получил эту ошибку

Error in function (classes, fdef, mtable) : 
unable to find an inherited method for function ‘writeRaster’ for signature ‘"numeric", "character"’

1 ответ

Решение

2 ошибки: измените d[[i]] на d и используйте новый выходной файл для каждого ввода.

 fileName <- strsplit(a[i],split='\\.')[[1]][1]
 outputFile <- paste(fileName,'_amenlast','.envi',sep='')
 rf <- writeRaster(d, filename=outputFile, overwrite=TRUE)

PS: я сохраняю overwrite=TRUE, это означает, что если вы запустите свой цикл в следующий раз, когда он сотрет предыдущий сгенерированный файл.

Другие вопросы по тегам