R: Write values to a file

writeValues {raster} | R Documentation

## 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

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

### Arguments

`x` | Raster* object
`filename` | character. Output file name
`...` | 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`

### Value

RasterLayer or RasterBrick

### See Also

`writeRaster, blockSize, update`

### Examples

    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)

    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$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)

[Package raster version 2.5-8 Index]