Создать код для расчета NDVI в IDL
Я супер новичок в IDL, уровень 0. Мне было интересно, если кто-нибудь может помочь мне рассчитать NDVI для файла BIL или BIP. У меня есть один файл. Я понимаю концепцию NDVI, обратную связь между NIR и R. Я просто не уверен, как это выразить в коде.
Кроме того, я знаю, что NDVI - это число с плавающей запятой, однако мне нужно сохранить конечный продукт NDVI в байтах.
Кто-нибудь может помочь? Благодарю.
1 ответ
В каком формате находятся файлы данных? Это довольно легко использовать один из 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)