The NBR formula is:
library(rLandsat8)
setwd("~/Downloads")
product <- "LC82040322013219LGN00"
l <- ReadLandsat8(product)
ndvi <- ToNBR(l)
Generate the differenced (or delta) NBR:
This isolates burned from unburned areas, provides a quantitative measure of absolute change in NBR.
Practical data range \(\approx \) –500 to + 1300 when scaled by \({ 10 }^{ 3 }\)
Ordinal severity levels and example range of \(\Delta \)NBR (scaled by \({ 10 }^{ 3 }\)) are shown:
Severity Level | NBR Range |
---|---|
Enhanced Regrowth, High | -500 to -251 |
Enhanced Regrowth, Low | -250 to -101 |
Unburned | -100 to +99 |
Low Severity | +100 to +269 |
Moderate-low Severity | +270 to +439 |
Moderate-high Severity | +440 to +659 |
High Severity | +660 to +1300 |
These value ranges are flexible; scene-pair dependent; shifts in thresholds +100 points are possible. dNBR less than about -550, or greater than about +1350 may occur, but usually are not considered burned. Rather, they likely are anomalies caused by miss-registration, clouds, or other factors not related to real land cover differences.
Normalized Burn Ratio (NBR) need to compute the TOA Reflectance, so you can choose to use the sun angle correction, if sun angle correction is required, specifying is.suncorrected = TRUE (default value is is.suncorrected = FALSE)
library(rLandsat8)
setwd("~/Downloads/")
prefire <- "LC82040322013219LGN00"
postfire <- "LC82040322013267LGN00"
lspre <- ReadLandsat8(prefire)
lspost <- ReadLandsat8(postfire)
r <- 1000 * dNBR(lspre, lspost)
m <- c(-Inf, -500, -1, -500, -251, 1, -251, -101, 2, -101, 99, 3, 99, 269,
4, 269, 439, 5, 439, 659, 6, 659, 1300, 7, 1300, +Inf, -1)
class.mat <- matrix(m, ncol = 3, byrow = TRUE)
reclass <- reclassify(r, class.mat, right=NA)
reclass <- ratify(reclass)
rat <- levels(reclass)[[1]]
rat$legend <- c("NA", "Enhanced Regrowth, High", "Enhanced Regrowth, Low", "Unburned", "Low Severity", "Moderate-low Severity", "Moderate-high Severity", "High Severity")
levels(reclass) <- rat
my_col=c('white', 'green', "yellow", "black", "orange", "brown", "red", "purple")
plot(reclass,col=my_col,legend=F,box=F,axes=F)
legend(x='right', legend =rat$legend,fill = my_col, y='right')
plot(reclass)