HyTools is a python library for processing airborne and spaceborne imaging spectroscopy data. At it's core it consists of functions for reading and writing ENVI formatted images and reading NEON AOP HDF files along with a series of image processing functions including spectral resampling, topographic, BRDF and glint correction, spectral transforms, masking and more. We have also created a series of command line tools which combine these functions and provide a streamlined workflow for processing images.
For examples see the HyTools basics ipython notebook here. For FlexBRDF correction see the tutorial here.
To install with pip run:
pip install hy-tools
or clone
git clone https://github.com/EnSpec/hytools.git
and install with setuptools
python setup.py install
import hytools as ht
#Create a HyTools container object
hy_obj = ht.HyTools()
#Read and load ENVI file metadata
hy_obj.read_file('./envi_file')
#Calculate NDVI, retrieves closest wavelength to input wavelength
ir = hy_obj.get_wave(900)
red = hy_obj.get_wave(660)
ndvi = (ir-red)/(ir+red)
#or
# Calculate normalized difference index, NDVI by default
ndvi = hy_obj.ndi()
#Other options for retrieving data
band = hy_obj.get_band(10)
column = hy_obj.get_column(1)
line = hy_obj.get_line(234)
chunk = hy_obj.get_chunk(0,100,0,100)
pixels = hy_obj.get_pixels([102,434],[324,345])
# Create a writer object to write to new file
writer = ht.io.WriteENVI('output_envi',hy_obj.get_header())
#Create an iterator object to cycle though image
iterator = hy_obj.iterate(by = 'line')
# Cycle line by line, read from original data
while not iterator.complete:
#Read next line
line = iterator.read_next()
#Do some calculations.......
radiance = line * gain + offset
#Write line to file
writer.write_line(radiance,iterator.current_line)
writer.close()