[Gdal-dev] Efficient BIP Access?

Simon Perkins sy at perkins.net
Mon Apr 23 12:55:05 EDT 2007


Hi,

I have a need to access large hyperspectral (hundred of bands) data 
files efficiently. The files are stored in BIP format (nad interleaved 
by pixel, i.e. "packed" pixel format), and hyperspectral processing is 
typically carried out a pixel at a time using data from all bands.

The GDAL data access functions on the other hand are very band oriented, 
and cache blocks are inherently 2D, and in the absence of tiling, 
default to single rows of the image. So, if I want to access all bands 
in a tile of an image, this will often blow GDAL's cache, since multiple 
whole rows will be loaded for every band. It's also inherently 
inefficient since hundreds of separate multiple random access reads have 
to be made to the same portion of the file for each pixel.

Now, GDALDataset does define a RasterIO() method that allows 3D windows 
to be retrieved, but the default implementation reverts to accessing the 
data band by band. So my question is: which data formats implement this 
method efficiently for BIP images? Second question: do these 
implementations use GDALs cache?

Cheers,

Simon




More information about the Gdal-dev mailing list