Как сделать цикл для чтения нескольких файлов 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, это означает, что если вы запустите свой цикл в следующий раз, когда он сотрет предыдущий сгенерированный файл.