创建代码以计算IDL中的NDVI

时间:2015-12-16 05:27:45

标签: floating-point byte idl-programming-language

我是IDL的新手,0级。我想知道是否有人可以帮我计算BIL或BIP文件的NDVI。我有一个文件。我理解NDVI的概念,即NIR和R之间的反向关系。我只是不确定如何将它放在代码中。

另外,我知道NDVI是浮点数,但是,我需要以字节为单位保存最终的NDVI产品。

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:0)

数据文件的格式是什么?如果它是一种图像格式,那么使用其中一个READ_XXXX例程非常容易,所以我会更难以处理它只是一个二进制文件。我假设您知道图像的大小(n_bandsn_samplesn_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)