giovedì 26 febbraio 2026

Da radianza a riflettanza su dati Aviris con IARR

 I dati Aviris sono distribuiti spesso in radianza ed in formato netcdf

Per trasformali in riflettanza in modo semplice tramite IARR Internal Average Relative Reflectance e per usarli in modo altrettanto tramite un formato Envi  si puo' usare il seguente script

 

Riflettanza

Radianza


 

import xarray as xr
import spectral.io.envi as envi
import numpy as np

ds_root = xr.open_dataset("dati.nc")

data_cube = ds_rad['radiance'].transpose('lines', 'samples', 'wavelength').values
mean_spectrum = np.mean(data_cube, axis=(1, 2))
reflectance = data_cube / mean_spectrum[:, None, None]


if 'wavelength' in ds_rad:
wavs = ds_rad['wavelength'].values.tolist()
elif 'wavelength' in ds_root:
wavs = ds_root['wavelength'].values.tolist()
else:
wavs = list(range(data_cube.shape[2]))

metadata = {
'description': 'AVIRIS-3 Radiance converted for SNAP',
'wavelength units': 'nanometers',
'wavelength': wavs
}

envi.save_image('aviris_radiance.hdr', data_cube, metadata=metadata, force=True)
envi.save_image('aviris_reflectance.hdr', reflectance, metadata=metadata, force=True)

print("Done! Open aviris_radiance.hdr in SNAP.")


 

Nessun commento:

Posta un commento

Kernel Panic QrCode

 In tanti anni ho visto qualche kernel panic, ma in questo formato non mi era mai successo    la cosa curiosa che al riavvio successivo ness...