Learn R Programming

raster (version 1.7-23)

writeValues: Write values to a file

Description

Functions for writing blocks (>= 1 row(s)) of values to files. 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. Begin by opening a file with writeStart, then write values to it in chunks. When writing is done close the file with writeStop.

Usage

writeStart(x, filename, ...)
writeValues(x, v, start)
writeStop(x)

Arguments

x
Raster* object
filename
Output filename
...
Additional arguments for writeStart. See under Details
v
vector (RasterLayer) or matrix (RasterBrick) of values
start
Integer. Cell number (counting starts at 1) from where to start writing

Value

  • RasterLayer or RasterBrick object.

Details

Additional arguments for writeStart: rll{ format Character. Output file type. 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. Also see writeFormats datatype Character. Output data type. See dataType overwrite Logical. If TRUE, "filename" will be overwritten if it exists }

See Also

writeRaster, blockSize

Examples

Run this code
r <- raster(system.file("external/test.grd", package="raster"))
# write to a new binary file in chunks
s <- raster(r)
# 
tr <- blockSize(r)
tr
s <- writeStart(s, filename='test.grd',  overwrite=TRUE)
for (i in 1:tr$n) {
	v <- getValuesBlock(r, row=tr$row[i], nrows=tr$size)
	s <- writeValues(s, v, tr$row[i])
}
s <- writeStop(s)

if(require(rgdal)){
s2 <- writeStart(s, filename='test2.tif', format='GTiff', overwrite=TRUE)
# writing last row first
for (i in tr$n:1) {
	v <- getValuesBlock(r, row=tr$row[i], nrows=tr$size)
	s2 <- writeValues(s2, v, tr$row[i])
}
# row number 5 once more
v <- getValuesBlock(r, row=5, nrows=1)
writeValues(s2, v, 5)
s2 <- writeStop(s2)
}

## write values of a RasterStack to a RasterBrick
s <- stack(system.file("external/rlogo.grd", package="raster"))
# create empty brick
b <- brick(s, values=FALSE)  
b <- writeStart(b, filename="test.grd", format="raster",overwrite=TRUE)
tr <- blockSize(b)
for (i in 1:tr$n) {
	v <- getValuesBlock(s, row=tr$row[i], nrows=tr$size)
	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)

Run the code above in your browser using DataLab