
writeRaster(x, filename, ...)
x
is a RasterLayer object
writeRaster(x, filename='', ...)
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', ...)
x
RasterLayer object
filename
Output filename
bandorder
Character. 'BIL', 'BIP', or 'BSQ'
..
Additional arguments. See below
}
Additional arguments
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
}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:
raster
'Native' raster package format Yes
ascii
ESRI Ascii No
SAGA
SAGA GIS No
IDRISI
IDRISI No
CDF
netCDF (requires RNetCDF) pending
GTiff
GeoTiff (requires rgdal) Yes
ENVI
ENVI .hdr Labelled Yes
EHdr
ESRI .hdr Labelled Yes
HFA
Erdas Imagine Images (.img) Yes
}writeFormats
rst <- raster(system.file("external/test.grd", package="raster"))
# read all data
rst <- readAll(rst)
# write all to a new binary file
rst <- writeRaster(rst, filename="binall.grd", overwrite=TRUE)
# write all to a new ERDAS .img file
rst <- writeRaster(rst, filename="binall.img", format="HFA", overwrite=TRUE)
# write all to an integer binary file
rst <- writeRaster(rst, filename="binallint.grd", datatype='INT4S', overwrite=TRUE)
# write all to ascii file
rst <- writeRaster(rst, filename="ascall.asc", format='ascii', overwrite=TRUE)
# make a brick and save multi-band file
b <- brick(rst, sqrt(rst))
rst <- writeRaster(b, filename="mutli.grd", bandorder='BIL', overwrite=TRUE)
# read and write row by row; write to ascii file
rst <- raster(system.file("external/test.grd", package="raster"))
ascras <- raster(rst)
for (r in 1:nrow(rst)) {
rst <- readRow(rst, r)
v <- values(rst) * 10
ascras <- setValues(ascras, v, r)
ascras <- writeRaster(ascras, filename='ascrow.asc', format='ascii', overwrite=TRUE)
}
# read and write row by row; write to binary file
binras <- raster(rst)
for (r in 1:nrow(rst)) {
rst <- readRow(rst, r)
binras <- setValues(binras, values(rst), r)
binras <- writeRaster(binras, 'binbyrow', overwrite=TRUE)
}
# read and write row by row; write to GeoTiff binary file
binras <- raster(rst)
for (r in 1:nrow(rst)) {
rst <- readRow(rst, r)
binras <- setValues(binras, values(rst), r)
binras <- writeRaster(binras, 'binbyrow2.tif', format="GTiff", overwrite=TRUE)
}
# write to netcdf
if (require(RNetCDF)) {
rst <- readAll(rst)
writeRaster(rst, filename='netCDF.nc', format="CDF", overwrite=TRUE)
}
Run the code above in your browser using DataLab