Learn R Programming

raster (version 3.6-23)

writeValues: Write values to a file

Description

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.

Usage

# S4 method for RasterLayer,character
writeStart(x, filename, options=NULL, format, prj=FALSE, ...)
# S4 method for RasterBrick,character
writeStart(x, filename, options=NULL, format, prj=FALSE, ...)
# S4 method for RasterLayer,vector
writeValues(x, v, start, ...)
# S4 method for RasterBrick,matrix
writeValues(x, v, start, ...)
# S4 method for RasterLayer
writeStop(x)
# S4 method for RasterBrick
writeStop(x)

Value

RasterLayer or RasterBrick

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

See Also

writeRaster, blockSize, update

Examples

Run this code

if (FALSE) {
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$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 first
for (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 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$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)
}

Run the code above in your browser using DataLab