[R-sig-Geo] Prototyping some new features in rasterEngine...
Jonathan Greenberg
jgrn at illinois.edu
Tue Jan 7 19:34:10 CET 2014
Doh, sent the wrong examples. Swap in "rasterEngine" for "focal_hpc"
(generally, avoid using focal_hpc)
install.packages("spatial.tools", repos="http://R-Forge.R-project.org")
library(spatial.tools)
# sfQuickInit() # Uncomment out to run in parallel
tahoe_highrez <- brick(system.file("external/tahoe_highrez.tif",
package="spatial.tools"))
# Single focal window function:
local_smoother <- function(x,...)
{
# Assumes a 3-d array representing
# a single local window, and return
# a single value or a vector of values.
smoothed <- apply(x,3,mean)
# Uncomment for multiple output files:
# return(list(smoothed,smoothed*100))
return(smoothed)
}
# Apply the function to a 3x3 window:
system.time(
tahoe_3x3_smoothed <-
rasterEngine(x=tahoe_highrez,fun=local_smoother,window_dims=c(3,3))
)
# "Unravelled" focal window function:
local_smoother_fast <- function(x,...)
{
x_dims <- dim(x)
x_dims_out <- c(x_dims[1],1,3)
meanx <- array(colMeans(aperm(x,c(2,1,3))),dim=x_dims_out)
# Uncomment for multiple output files:
# return(list(meanx,meanx*100))
return(meanx)
}
system.time(
tahoe_3x3_smoothed_fast <-
rasterEngine(x=tahoe_highrez,fun=local_smoother_fast,window_dims=c(3,3),processing_unit="chunk")
)
# sfQuickStop() # Uncomment out to run in parallel
--j
On Tue, Jan 7, 2014 at 9:53 AM, Jonathan Greenberg <jgrn at illinois.edu> wrote:
> Folks:
>
> I released a new beta of spatial.tools today:
>
> install.packages("spatial.tools", repos="http://R-Forge.R-project.org")
>
> There are a few major new features I was hoping to get some eyes on to
> work out any bugs prior to a CRAN push:
>
> 1) rasterEngine can now process and return > 1 file at a time. The
> function should return a list of arrays corresponding to each file
> (each array should be the same number of rows and columns) and, if you
> want the outputs to be permanent, set the filename parameter to be a
> vector of output file names.
> 2) I'm trying out a (very) experimental feature that
> byte-code-compiles your function prior to executing it (call
> rasterEngine with compileFunction=TRUE). I'm hoping for longer, more
> intensive functions this may shave some time off the execution.
> 3) I implemented a setMinMax function that hopefully will make those
> annoying warnings go away at the end.
> 4) I implemented Robert Hijmans hdr() function within rasterEngine
> (modify with the "additional_header" parameter), and defaulted it to
> ENVI. Any output file(s) will now automatically be openable in most
> GIS systems. Note the normal "raster" header will also be created.
> 5) The focal function now has a "chunk" version, where the input to
> your function, rather than being a single focal window at a time, is
> an "unspooled" array of dimensions:
> column,focal_window_length,band
>
> Where the second dimension is the focal window "unravelled" for a
> given focal position into a vector starting from the top left, moving
> left-to-right, top-to-bottom. Conceptually this is more difficult to
> understand, but will allow for more rapid, vectorized processing.
> Compare these two (switch the return statements with the commented-out
> one to see the multiple-file-output in action):
>
> ###
>
> install.packages("spatial.tools", repos="http://R-Forge.R-project.org")
> library(spatial.tools)
> # sfQuickInit() # Uncomment out to run in parallel
>
> tahoe_highrez <- brick(system.file("external/tahoe_highrez.tif",
> package="spatial.tools"))
>
> # Single focal window function:
> local_smoother <- function(x,...)
> {
> # Assumes a 3-d array representing
> # a single local window, and return
> # a single value or a vector of values.
> smoothed <- apply(x,3,mean)
> # Uncomment for multiple output files:
> # return(list(smoothed,smoothed*100))
> return(smoothed)
> }
> # Apply the function to a 3x3 window:
> system.time(
> tahoe_3x3_smoothed <-
> focal_hpc(x=tahoe_highrez,fun=local_smoother,window_dims=c(3,3))
> )
>
> # "Unravelled" focal window function:
> local_smoother_fast <- function(x,...)
> {
> x_dims <- dim(x)
> x_dims_out <- c(x_dims[1],1,3)
> meanx <- array(colMeans(aperm(x,c(2,1,3))),dim=x_dims_out)
> # Uncomment for multiple output files:
> # return(list(meanx,meanx*100))
> return(meanx)
> }
>
> system.time(
> tahoe_3x3_smoothed_fast <-
> focal_hpc(x=tahoe_highrez,fun=local_smoother_fast,window_dims=c(3,3),processing_unit="chunk")
> )
>
> # sfQuickStop() # Uncomment out to run in parallel
>
> ###
>
> --
> Jonathan A. Greenberg, PhD
> Assistant Professor
> Global Environmental Analysis and Remote Sensing (GEARS) Laboratory
> Department of Geography and Geographic Information Science
> University of Illinois at Urbana-Champaign
> 259 Computing Applications Building, MC-150
> 605 East Springfield Avenue
> Champaign, IL 61820-6371
> Phone: 217-300-1924
> http://www.geog.illinois.edu/~jgrn/
> AIM: jgrn307, MSN: jgrn307 at hotmail.com, Gchat: jgrn307, Skype: jgrn3007
--
Jonathan A. Greenberg, PhD
Assistant Professor
Global Environmental Analysis and Remote Sensing (GEARS) Laboratory
Department of Geography and Geographic Information Science
University of Illinois at Urbana-Champaign
259 Computing Applications Building, MC-150
605 East Springfield Avenue
Champaign, IL 61820-6371
Phone: 217-300-1924
http://www.geog.illinois.edu/~jgrn/
AIM: jgrn307, MSN: jgrn307 at hotmail.com, Gchat: jgrn307, Skype: jgrn3007
More information about the R-sig-Geo
mailing list