VeloxRaster ClassMost velox functionality is implemented as methods of the VeloxRaster class.
Objects of class VeloxRaster are R5 (Reference Class) objects and are thus mutable.
Hence, the usual copy on modify semantics do not apply.
Rather, calling a raster-modifying VeloxRaster method, e.g. the crop method (vx$crop()), will modify the object the method is applied to directly.
The main advantage of having mutable raster objects is that it saves memory: Unless expressely requested by the user, the raster data will not be copied for modification.
As an example, consider the following code:
require(velox) ## Create VeloxRaster from matrix mat <- matrix(1:100, 10, 10) vx <- velox(x = mat, extent = c(0,10,0,10), res = c(1,1)) ## Crop VeloxRaster vx$crop(c(0,5,0,5)) print(vx$dim)
Due to mutability, the vx object is permanently modified by the crop operation.
If we wish to keep a copy of the original vx object, we have to instruct R to make a copy explicity:
## Create VeloxRaster from matrix mat <- matrix(1:100, 10, 10) vx <- velox(x = mat, extent = c(0,10,0,10), res = c(1,1)) ## Copy the VeloxRaster vx.copy <- vx$copy() ## Crop the copied VeloxRaster vx.copy$crop(c(0,5,0,5)) print(vx.copy$dim) print(vx$dim)
VeloxRaster objectsVeloxRaster objects are created with the velox function.
velox is fully interoperable with the raster package; creating VeloxRaster objects from Raster* is simple:
require(raster) ## Create VeloxRaster from RasterLayer mat <- matrix(1:100, 10, 10) ras <- raster(x = mat) ras.vx <- velox(ras) ## Create VeloxRaster from RasterStack ras1 <- ras2 <- raster(x = mat) stk <- stack(ras1, ras2) stk.vx <- velox(stk) ## Create VeloxRaster from RasterBrick brk <- brick(ras1, ras2) brk.vx <- velox(brk)
We can also create VeloxRaster objects from matrices, or lists of matrices:
## Create VeloxRaster from a matrix mat <- matrix(1:100, 10, 10) mat.vx <- velox(mat, extent = c(0,10,0,10), res = c(1,1)) ## Create VeloxRaster from a list of matrices mat.ls <- list(mat, mat) matls.vx <- velox(mat.ls, extent = c(0,10,0,10), res = c(1,1))
Finally, we can read GDAL-supported raster files from disk:
## Create a RasterLayer mat <- matrix(1:100, 10, 10) ras <- raster(x = mat) ## Write it to disk as a GeoTiff file writeRaster(ras, file.path(tempdir(), 'test.tif')) ## Read the GeoTiff as VeloxRaster tif.vx <- velox(file.path(tempdir(), 'test.tif')) print(tif.vx$dim) ## Clean up unlink(file.path(tempdir(), 'test.tif'))
VeloxRaster objectsCasting VeloxRaster objects as Raster* objects is also simple:
## Create VeloxRaster from a list of matrices mat.ls <- list(mat, mat) vx <- velox(mat.ls, extent = c(0,10,0,10), res = c(1,1)) ## Cast first band as RasterLayer ras <- vx$as.RasterLayer(band = 1) ## Cast as RasterStack stk <- vx$as.RasterStack() ## Cast as RasterBrick brk <- vx$as.RasterBrick()
We can also cast raster bands as matrices:
## Cast first raster band as matrix mat <- vx$as.matrix(band = 1)
VeloxRaster objectsFinally, we can save VeloxRaster objects to disk as GeoTiff files:
## Create VeloxRaster from a list of matrices mat.ls <- list(mat, mat) vx <- velox(mat.ls, extent = c(0,10,0,10), res = c(1,1)) ## Save to disk vx$write(path = file.path(tempdir(), 'test.tif')) ## Clean up unlink(file.path(tempdir(), 'test.tif'))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.