raster (version 1.0.4)

writeRaster: Write raster data to a file

Description

Write raster values to a file. Either as binary ('raster') format, Ascii (ESRI Arc Ascii) format, and other GDAL supported formats. You can write an entire raster dataset at once, or by row. When writing a file to disk, the file format is determined by the 'format=' argument if supplied, or else by the file extension (if the extension is known). If other cases the default format is used. The 'factory-fresh' default format is 'raster', but this can be changed using setOptions.

Usage

writeRaster(x, filename, ...)

Arguments

x
Raster* object
filename
Output filename
...
Additional arguments. See below, under Methods

Value

  • This function is used for the side-effect of writing values to a file.

Methods

Full function call when x is a RasterLayer object writeRaster(x, filename='', ...) rll{ x RasterLayer object filename Output filename ... Additional arguments. See below } Full function call when x is a RasterBrick or RasterStack object writeRaster(x, filename='', bandorder='BIL', ...) rll{ x RasterLayer object filename Output filename bandorder Character. 'BIL', 'BIP', or 'BSQ' .. Additional arguments. See below } Additional arguments rll{ format Character. Output file type. See writeFormats datatype Character. Output data type. See dataType overwrite Logical. If TRUE, "filename" will be overwritten if it exists }

Details

Values in a RasterLayer object are written to a file. Relatively small datasets can be loaded into memory, manipulated, and saved to disk in their entirety. Large datasets can be read and written row by row. When writing by row, you must write all rows, and you must write them in sequence. Start at row=1, and end at row=nrow(raster). Only when all rows have been appended to the data file on disk, the file becomes readable. You cannot overwrite an isolated single row in an existing raster file. In multi-band files (i.e. files saved from RasterStack or RasterBrick objects), the bandorder can be set to BIL ('Bands Interleaved by Line'), BIP ('Bands Interleaved by Pixels') or BSQ ('Bands SeQuential') Note that the values of a RasterBrick and RasterLayer objects can be written to a single file in a row by row fashion; but the values of a RasterStack can only be saved to a file in one go. See writeFormats for supported file types ("formats", "drivers"); the rgdal package is needed for this function, exxcept for the 'raster', ascii, and 'CDF' formats. Supported file types include: llllr{ File type Long name default extension Multiband support raster 'Native' raster package format .grd Yes ascii ESRI Ascii .asc No SAGA SAGA GIS .sdat No IDRISI IDRISI .rst No CDF netCDF (requires RNetCDF) .nc pending GTiff GeoTiff (requires rgdal) .tif Yes ENVI ENVI .hdr Labelled .envi Yes EHdr ESRI .hdr Labelled .bil Yes HFA Erdas Imagine Images (.img) .img Yes }

See Also

writeFormats, and for faster writing: writeValues

Examples

Run this code
rst <- raster(system.file("external/test.grd", package="raster"))

# take a small part
rst <- crop(rst, extent(179880, 180800, 329880, 330840) )

# write all to an integer binary file
r <- writeRaster(rst, filename="allint.grd", datatype='INT4S', overwrite=TRUE)

# write all to a new geotiff file (depends on rgdal)
if (require(rgdal)) {
  r <- writeRaster(rst, filename="test.tif", format="GTiff", overwrite=TRUE)
}

# make a brick and save multi-band file
b <- brick(rst, sqrt(rst))
b <- writeRaster(b, filename="mutli.grd", bandorder='BIL', overwrite=TRUE)
 
# read and write row by row
binras <- raster(rst)
for (r in 1:nrow(binras)) {
	v <- getValues(rst, r)
	binras <- setValues(binras, v, r)
	binras <- writeRaster(binras, 'byrow.grd', overwrite=TRUE) 
}

# write to netcdf 
if (require(RNetCDF)) {	
    writeRaster(rst, filename='netCDF.nc', format="CDF", overwrite=TRUE)   
}

Run the code above in your browser using DataLab