Functions for writing blocks (>= 1 row(s)) of values to files. Writing has to start at the first cell of a row (identified with argument start) and the values written must represent 1 or more entire rows. Begin by opening a file with writeStart, then write values to it in chunks. When writing is done close the file with writeStop.
If you want to write all values of a Raster* object at once, you can also use writeRaster which is easier to use but more limited. The functions described here allow writing values to file using chunks of different sizes (e.g. 1 or 10 rows). Function blockSize can be used to suggest a chunk size to use.
## S4 method for signature 'RasterLayer,character'writeStart(x, filename, options=NULL, format, prj=FALSE,...)## S4 method for signature 'RasterBrick,character'writeStart(x, filename, options=NULL, format, prj=FALSE,...)## S4 method for signature 'RasterLayer,vector'writeValues(x, v, start,...)## S4 method for signature 'RasterBrick,matrix'writeValues(x, v, start,...)## S4 method for signature 'RasterLayer'writeStop(x)## S4 method for signature 'RasterBrick'writeStop(x)
Arguments
x: Raster* object
filename: character. Output file name
options: character, see writeRaster
format: character, see writeRaster
prj: logical. If TRUE, a "prj" file is written
...: additional arguments as for writeRaster
v: vector (RasterLayer) or matrix (RasterBrick) of values
start: Integer. Row number (counting starts at 1) from where to start writing v
Returns
RasterLayer or RasterBrick
See Also
writeRaster, blockSize, update
Examples
## Not run:r <- raster(system.file("external/test.grd", package="raster"))# write to a new binary file in chunkss <- raster(r)# tr <- blockSize(r)tr
s <- writeStart(s, filename='test.grd', overwrite=TRUE)for(i in1:tr$n){ v <- getValuesBlock(r, row=tr$row[i], nrows=tr$nrows[i]) s <- writeValues(s, v, tr$row[i])}s <- writeStop(s)s2 <- writeStart(s, filename='test2.tif', format='GTiff', overwrite=TRUE)# writing last row firstfor(i in tr$n:1){ v <- getValuesBlock(r, row=tr$row[i], nrows=tr$nrows[i]) s2 <- writeValues(s2, v, tr$row[i])}# row number 5 once morev <- getValuesBlock(r, row=5, nrows=1)writeValues(s2, v,5)s2 <- writeStop(s2)## write values of a RasterStack to a RasterBricks <- stack(system.file("external/rlogo.grd", package="raster"))# create empty brickb <- brick(s, values=FALSE)b <- writeStart(b, filename="test.grd", format="raster",overwrite=TRUE)tr <- blockSize(b)for(i in1:tr$n){ v <- getValuesBlock(s, row=tr$row[i], nrows=tr$nrows[i]) b <- writeValues(b, v, tr$row[i])}b <- writeStop(b)# note that the above is equivalent to # b <- writeRaster(s, filename="test.grd", format="raster",overwrite=TRUE)## End(Not run)