Question

This code given below (developed by stackoverflow users) will read a variable from a netcdf file and write it as an envi file.
This code is working fine but I have several netcdf files like this one and I want to make a loop to do this for all files in the directory.
The files are stored in a directory whose path is

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

I tried this:

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

but got this error

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

Solution

2 bugs : change d[[i]] by d and use a new output file for each input.

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

PS : I keep overwrite=TRUE , that means if you launch your loop next time it erase previous generated file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top