Sentinel-2 (BAIS2) 计算的燃烧面积指数存在问题

问题描述 投票:0回答:1

我正在使用标准化烧伤比 (NBR) 和 Sentinel-2 烧伤面积指数 (BAIS-2) 进行火痕检测和严重程度。我对 NBR 没有任何问题。然而,在计算 BAIS2 时,我得到了奇怪的值范围。根据我读过的一些论文和这个网站(BAIS2详细信息),BAIS2的范围从-1到1。

Filipponi(2018)给出的公式是:

BAIS2 = (1-(B6B7B8a/B4)^0.5)*((B12-B8a)/(B12+B8a)^0.5+1)

这里有我使用的一段代码:

#. Load libraries 
library(raster)
library(sp)
#.
#. Load data
#. data_a is the sentinel-2 image after the wildfire
#. data_b is the sentinel-2 image before the wildfire
data_a <- stack("April/20240407/S2A_MSIL2A_20240407T164851_N0510_R026_T14QPF_20240407T214153.tif")
data_b <- stack("March/20240308/S2A_MSIL2A_20240308T165131_N0510_R026_T14QPF_20240308T225001.tif")
rnames <- c('b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b8a', 'b9', 'b11', 'b12', 'cmask')
names(data_a) <- rnames
names(data_b) <- rnames
#.
#. Calculate extension and reduce size of 
#. Current Extension
#.
extension <- extent(c(677028.3468, 701333.4836, 2070957.1834, 2089943.2630))
lines(extension)
data_a <- crop(data_a, extension)
data_b <- crop(data_b, extension)
#.
plot((1 - (data_b$b6*data_b$b7*data_b$b8a/data_b$b4)^0.5)*((data_b$b12-data_b$b8a)/(data_b$b12+data_b$b8a)^0.5 + 1))
plot((1 - (data_a$b6*data_a$b7*data_a$b8a/data_a$b4)^0.5)*((data_a$b12-data_a$b8a)/(data_a$b12+data_a$b8a)^0.5 + 1))
#.

输出如下图。 火灾前的 BAIS2 火灾后的 BAIS2

有人知道我有什么错误吗?即使计算出 Delta,其范围也与文献中发现的范围不同,

谢谢

我读过几篇论文来了解数值和方程的范围。此外,我还做了一些其他图像受到一个样本的影响,但范围没有改变。

r sentinel2
1个回答
0
投票

我刚刚找到了答案。 BAIS2 需要以微米为单位计算,但我的条带以纳米为单位。因此,以 nm 为单位计算 NBR 是可以的,但在计算 BAIS2 时,所有波段都需要单位转换。

© www.soinside.com 2019 - 2024. All rights reserved.