我是IDL的新手,0级。我想知道是否有人可以帮我计算BIL或BIP文件的NDVI。我有一个文件。我理解NDVI的概念,即NIR和R之间的反向关系。我只是不确定如何将它放在代码中。
另外,我知道NDVI是浮点数,但是,我需要以字节为单位保存最终的NDVI产品。
有人可以帮忙吗?感谢。
答案 0 :(得分:0)
数据文件的格式是什么?如果它是一种图像格式,那么使用其中一个READ_XXXX
例程非常容易,所以我会更难以处理它只是一个二进制文件。我假设您知道图像的大小(n_bands
,n_samples
,n_lines
),交错(BIL或BIP)和数据类型(浮动下方)以及图像的索引。 NIR(nir_band
)和R(r_band
)的频段。
im = fltarr(n_samples, n_bands, n_lines) ; this is BIL
; use im = fltarr(n_bands, n_samples, n_lines) for BIP
; nir_band is an index, 0..n_bands - 1, representing near infrared light
; r_band is an index, 0..n_bands representing the visible light
nir = float(im[*, nir_band, *])
r = float(im[*, r_band, *])
ndvi = (nir - r) / (nir + r)
; you might want to use the MIN and MAX if you want to scale in a certain
; manner
byte_ndvi = bytscl(ndvi)