speclib_raster_methods: Functions for processing large hyperspectral raster files

speclib_raster-methodsR Documentation

Functions for processing large hyperspectral raster files

Description

Functions for processing large hyperspectral raster files using the low-level functions provided by the raster-package. For a detailed overview see the vignette "Writing functions for large raster files" shipped along with the raster-package.

Usage

## S4 method for signature 'Speclib'
blockSize(x)

## S4 method for signature 'Speclib,character'
writeStart(x, filename, ...) 

## S4 method for signature 'Speclib'
getValuesBlock(x, ...)

## S4 method for signature 'Speclib,Speclib'
writeValues(x, v, start) 

## S4 method for signature 'Speclib,matrix'
writeValues(x, v, start) 

## S4 method for signature 'Speclib,numeric'
writeValues(x, v, start) 

## S4 method for signature 'Speclib'
writeStop(x) 

Arguments

x

Object of class Speclib.

filename

Name of the new file to create.

v

Object to write the data to file. May be one of the following classes: "Speclib", "matrix" or "numeric".

start

Integer. Row number (counting starts at 1) from where to start writing v.

...

Further arguements passed to respective functions in the raster-packages.

Author(s)

Lukas Lehnert

Examples

 
## Not run: 
## Create raster file using PROSAIL
## Run PROSAIL
parameter <- data.frame(N = c(rep.int(seq(0.5, 1.4, 0.1), 6)),
                        LAI = c(rep.int(0.5, 10), rep.int(1, 10), 
                                rep.int(1.5, 10), rep.int(2, 10), 
                                rep.int(2.5, 10), rep.int(3, 10)))
spectra <- PROSAIL(parameterList = parameter)

## Create SpatialPixelsDataFrame and fill data with spectra from PROSAIL
rows <- round(nspectra(spectra)/10, 0)
cols <- ceiling(nspectra(spectra)/rows)
grd <- SpatialGrid(GridTopology(cellcentre.offset = c(1,1,1), 
                                cellsize = c(1,1,1), 
                                cells.dim = c(cols, rows, 1)))
x <- SpatialPixelsDataFrame(grd, data = as.data.frame(spectra(spectra)))

## Write data to example file (example_in.tif) in workingdirectory
writeGDAL(x, fname = "example_in.tif", drivername = "GTiff")

## Examples for Speclib using file example_in.tif
## Example 1:
## Noise reduction in spectra
infile <- "example_in.tif"
outfile <- "example_result_1.tif"
wavelength <- spectra$wavelength

ra <- speclib(infile, wavelength)
tr <- blockSize(ra)

res <- writeStart(ra, outfile, overwrite = TRUE)
for (i in 1:tr$n) 
{
  v <- getValuesBlock(ra, row=tr$row[i], nrows=tr$nrows[i])
  v <- noiseFiltering(v, method="sgolay", n=25)
  res <- writeValues(res, v, tr$row[i])
}
res <- writeStop(res)

## Example 2:
## masking spectra and calculating vegetation indices
outfile <- "example_result_2.tif" 
n_veg <- as.numeric(length(vegindex()))
res <- writeStart(ra, outfile, overwrite = TRUE, nl = n_veg)
for (i in 1:tr$n) 
{
  v <- getValuesBlock(ra, row=tr$row[i], nrows=tr$nrows[i])
  mask(v) <- c(1350, 1450)
  v <- as.matrix(vegindex(v, index=vegindex()))
  res <- writeValues(res, v, tr$row[i])
}
res <- writeStop(res)

## End(Not run)

hsdar documentation built on March 18, 2022, 6:35 p.m.