---------- Forwarded message ---------- From: Abdoulaye SARR <abdoulaye...@gmail.com> Date: Mon, Jan 1, 2001 at 4:02 AM Subject: Re: [R] problem writing .bil files in netcdf To: Michael Sumner <mdsum...@gmail.com> Cc: r-help@r-project.org
Hi Michael, I had a problem with my mac hopefully solve now. For the issue i submitted, I tried your suggestion with writeRaster which creates a netcdf file. The problem when I look the results by displaying as graph I seen the values starting by -9000 and mainly are located in the continent boundaries, so how to add in write taste the undef values and have precip from 0 to x. For the loop if successful is toe write each day in a separate netcdf file, if done it will be easy to concatenate using nco or cdo. To convert each day in netcdf I need to have an appropriate loop in a script. I have to process many years. Cheers, Le 2 sept. 2016 à 15:09, Michael Sumner <mdsum...@gmail.com> a écrit : On Fri, 2 Sep 2016 at 00:43 Abdoulaye SARR <abdoulaye...@gmail.com> wrote: > Dear List, > > I have daily rainfall data in .bil format and can get info of the file > using rgdal: > > > library(rgdal) > > GDALinfo("/1981/v2p19810101.bil") > rows 1600 > columns 1500 > bands 1 > lower left origin.x -20 > lower left origin.y -40 > res.x 0.05 > res.y 0.05 > ysign -1 > oblique.x 0 > oblique.y 0 > driver EHdr > projection NA > > How can I read all daily file and write them as netcdf files and > concatenate as one yearly file and also avoid boundary pixels alter > rainfall values. > > Hi, You can read the single .bil and write it to NetCDF with raster (and the rgdal and ncdf4) package: library(raster) r <- raster("/1981/v2p19810101.bil") writeRaster(r, "v2p19810101.nc") But, if you read in multi .bil files and build a multilayer raster, i.e. st <- stack(list.files("/1981", pattern = "bil$", full.names = TRUE)) you *can* write it out to NetCDF, very similar to above with writeRaster, but I think it will generate a variable (an netcdf array) for each layer. To really write to .nc in a specific way you'll need to delve into the standard tools in ncdf4, to create a file, create variables/dimensions/attributes, and then populate the variable, in this case probably one 3rd-level slice for each .bil. That might be better done at the command line, say with nco (the "nc operators"). There are copy-create idioms which is probably the way to go if you have a template data file or CDF specification. There may be some higher level tools in other packages on CRAN, check the reverse depends/imports/suggests on CRAN for ncdf4. Also you should explore RNetCDF which has an independent implementation. (raster really blitzes the field in terms of high-level tools here, but it has limits, with writing NetCDF *in specific ways* being one of them. GDAL has similar limitations, since it sees the world in this "array-as-2d-bands" way). HTH, at least a little. Cheers, Mike. Best regards, > > Eus > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project. > org/posting-guide.html <http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > -- Dr. Michael Sumner Software and Database Engineer Australian Antarctic Division 203 Channel Highway Kingston Tasmania 7050 Australia [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.