<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Arial" size="3"><span style="font-size:12pt;">
<div> </div>
<div><font size="2"><span style="font-size:10pt;">Hello,</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">I am attempting to run bfast on a raster brick (a time series of AVHRR data).</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">I have adapted the tutorial code provided in the bfast manual for applying bfastmonitor to raster bricks (code below).</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">When I try to apply my bfast function to a full image, I get the following error:</span></font></div>
<div><font size="2"><span style="font-size:10pt;">        </span></font></div>
<div><font size="2"><span style="font-size:10pt;">        Error in .calcTest(x[1:5], fun, na.rm, forcefun, forceapply) : </span></font></div>
<div><font size="2"><span style="font-size:10pt;">                 cannot use this function</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">The test of the single pixel works fine and returns the correct value.</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">I would appreciate any suggestions on how to fix this.</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">Many thanks,</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">Joanne</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">################################################################</span></font></div>
<div><font size="2"><span style="font-size:10pt;">require("raster")</span></font></div>
<div><font size="2"><span style="font-size:10pt;">require("bfast")</span></font></div>
<div><font size="2"><span style="font-size:10pt;">setwd("T:/ecomonitor/age/prototype/data/fpar")</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">#read the ENVI format file into a raster brick</span></font></div>
<div><font size="2"><span style="font-size:10pt;">data <- brick("test.img")</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">#read in the list of dates for the time series</span></font></div>
<div><font size="2"><span style="font-size:10pt;">date.list <- scan("dates_list.txt", what=character(0))</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">#assign layer names from date.list</span></font></div>
<div><font size="2"><span style="font-size:10pt;">layerNames(data) <- date.list</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">#helper function for the calc function</span></font></div>
<div><font size="2"><span style="font-size:10pt;">xbfast <- function(data, date.list) {</span></font></div>
<div><font size="2"><span style="font-size:10pt;">         ndvi <- ts(data, names=date.list, frequency=36, start=c(1985,1), end=c(2007,36))</span></font></div>
<div><font size="2"><span style="font-size:10pt;">        result <- bfast(ndvi, h=0.012, season="harmonic", max.iter=1, breaks=2)</span></font></div>
<div><font size="2"><span style="font-size:10pt;">    return(cbind(result$Time))</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> }</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">#apply on a single pixel for testing</span></font></div>
<div><font size="2"><span style="font-size:10pt;">pixel <- as.vector(data[4])</span></font></div>
<div><font size="2"><span style="font-size:10pt;">ndvi <- ts(pixel, names=date.list, frequency=36, start=c(1985,1), end=c(2007,36))</span></font></div>
<div><font size="2"><span style="font-size:10pt;">output <- xbfast(ndvi, date.list)</span></font></div>
<div><font size="2"><span style="font-size:10pt;">plot(output)</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">#apply on the full image                                    #This is the part that throws the error</span></font></div>
<div><font size="2"><span style="font-size:10pt;">timeofbreak <- calc(data, fun=function(x) {</span></font></div>
<div><font size="2"><span style="font-size:10pt;">output <- ts(apply(x, 1, xbfast, date.list))     #Not sure if this is supposed to be "t" as in the example or "ts". Regardless, the error message is the same<font color="blue">.</font></span></font></div>
<div><font size="2"><span style="font-size:10pt;">return(output)</span></font></div>
<div><font size="2"><span style="font-size:10pt;">})</span></font></div>
<div><font size="2"><span style="font-size:10pt;">plot(timeofbreak)</span></font></div>
<div><font size="2"><span style="font-size:10pt;">################################################################</span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;">Note that the test.img is very small (4 x 4 pixels):</span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">>data</span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">class       : RasterBrick </span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">dimensions  : 2, 2, 4, 828  (nrow, ncol, ncell, nlayers)</span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">resolution  : 1000, 1000  (x, y)</span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">extent      : 787641.7, 789641.7, 5455728, 5457728  (xmin, xmax, ymin, ymax)</span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">coord. ref. : +proj=utm +zone=16 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 </span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">values      : T:\ecomonitor\age\prototype\data\fpar\test.img </span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;">layer names : X1985.01.01, X1985.01.11, X1985.01.21, X1985.02.01, X1985.02.11, X1985.02.21, X1985.03.01,...</span></font></div>
<div><font face="Courier" size="2" color="blue"><span style="font-size:10pt;"> </span></font></div>
<div><font face="Courier" size="2" color="blue"><span style="font-size:10pt;"> </span></font></div>
<div><font face="Courier" size="2"><span style="font-size:10pt;"> </span></font></div>
<div><font size="2"><span style="font-size:10pt;"> </span></font></div>
</span></font>
</body>
</html>