A computer implemented method for compressing 3D hyperspectral image data having a plurality of spatial pixels associated with a hyperspectral image, and a number of spectral dimensions associated with each spatial pixel, the method comprising: receiving, using a processor, the 3D hyperspectral image data, a set of basis vectors associated therewith, and a maximum error amount comprising a maximum value for compressed data error levels; partitioning, using the processor, the 3D hyperspectral image data into a plurality of 2D images, each associated with one of the number of spectral dimensions, and an associated one of the set of basis vectors; ranking, using the processor, the set of basis vectors if not already ranked; iteratively applying a lossy compression with increasing compression ratios to each of the plurality of 2D images using the processor, starting with 2D images associated with a lowest ranked basis vector, as compressed 2D images, followed by 2D images respectively associated with successive next lowest ranked basis vectors; after each iteration, comparing, using the processor, an error associated with the compressed 2D images with the maximum error amount, to maximize an amount of volume compression within the maximum error amount; and, setting aside, using the processor, pixels of the 2D images with errors exceeding the maximum error amount, said set aside pixels being left in uncompressed form; wherein iteratively applying a lossy compression to the plurality of 2D images comprises measuring error in a worst case pixel associated with each of the plurality of 2D images and comparing the error in a worst case pixel associated with one of the plurality of 2D images in a current iteration to the error in a worst case pixel associated with that one of the plurality of 2D images in a prior iteration; wherein said comparing the error comprises testing whether the error in the worst case pixel in the current iteration is more than a user-determined amount greater than the error in the worst case pixel in the prior iteration; and if the error of the worst case pixel in the current iteration is more than the user-determined amount greater than the error in the worst case pixel of the prior iteration, stopping the iterative compression of that one of the plurality of 2D images. receiving, using a processor, the 3D hyperspectral image data, a set of basis vectors associated therewith, and a maximum error amount comprising a maximum value for compressed data error levels; partitioning, using the processor, the 3D hyperspectral image data into a plurality of 2D images, each associated with one of the number of spectral dimensions, and an associated one of the set of basis vectors; ranking, using the processor, the set of basis vectors if not already ranked; iteratively applying a lossy compression with increasing compression ratios to each of the plurality of 2D images using the processor, starting with 2D images associated with a lowest ranked basis vector, as compressed 2D images, followed by 2D images respectively associated with successive next lowest ranked basis vectors; after each iteration, comparing, using the processor, an error associated with the compressed 2D images with the maximum error amount, to maximize an amount of volume compression within the maximum error amount; and, setting aside, using the processor, pixels of the 2D images with errors exceeding the maximum error amount, said set aside pixels being left in uncompressed form; wherein iteratively applying a lossy compression to the plurality of 2D images comprises measuring error in a worst case pixel associated with each of the plurality of 2D images and comparing the error in a worst case pixel associated with one of the plurality of 2D images in a current iteration to the error in a worst case pixel associated with that one of the plurality of 2D images in a prior iteration; wherein said comparing the error comprises testing whether the error in the worst case pixel in the current iteration is more than a user-determined amount greater than the error in the worst case pixel in the prior iteration; and if the error of the worst case pixel in the current iteration is more than the user-determined amount greater than the error in the worst case pixel of the prior iteration, stopping the iterative compression of that one of the plurality of 2D images.