Создать код для расчета 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)
Другие вопросы по тегам