Loïc Dutrieux, Ben DeVries, Jan Verbesselt

You've just downloaded Landsat data; you're 3 lines of code away from a change map

Why we built bfastSpatial

  • Automate things that we were doing routinely
  • Streamline pre-processing and analysis
  • Because it's fun!!!

Overall it makes dealing with Landsat data for change detection more efficient and more accessible

Classical data pre-processing and analysis chain

  • Download the data
  • Unpack the data
  • Atmospheric correction and orthorectification
  • Cloud masking
  • Calculation of vegetation indices
  • Prepare time-series
  • Run algorithm

With bfastSptial we've tried to streamline this process

Enough theory, let's try it!!!


You need:

  • (A recent version of) R
  • The devtools package
# update existing R packages 
#! the line below can potentially download lot's of R packages!
update.packages(checkBuilt = TRUE, ask = FALSE)                
# install devtools package

Then we can install the package using the devtools package

# install bfastSpatial from github

About the data

  • These are Surface reflectance Landsat data downloaded via espa
  • The full time-series (2000-2015) of a 5x5 km extent was downloaded
  • The product already contains vegetation indices (NDVI, NDMI, etc), processed by the USGS
  • For a tutorial on how to order data from USGS and download them, refer to the main bfastSpatial tutorial

At the border between Romania and Hungary

A preproducible example

Utilities: Investigate individual pixel time-series

  • bfmPixel() (run bfastmonitor on individual pixels)
  • Validation via timeSyncR

bfmPixel() example

# Plot a cloud free recent NDVI layer
plot(ndviStack, 394)

# Call bfmPixel in interactive mode
bfmPixel(x = ndviStack, start = 2010, monend = 2013, interactive = TRUE, plot = TRUE)

# Click on a pixel

And what about validation?

We have a tool for that too; try timeSyncR for visual interpretation of time-series


  • Early steps of the pre-processing are very standard and can be automated
  • It's easy to produce a change map
  • But a good change map requires local tuning
  • Spend some time looking at individual pixels
  • Keep your projects well structured

Where to find help


Special thanks to Loïc Dutrieux and Ben DeVries for leading the BfastSpatial effort and also this presentation!

Check out Loïc's webpage and github account: