Class Band

  • All Implemented Interfaces:
    Extensible, Scaling, SceneTransformProvider
    Direct Known Subclasses:
    FilterBand, Mask, VirtualBand

    public class Band
    extends AbstractBand
    A band contains the data for geophysical parameter in remote sensing data products. Bands are two-dimensional images which hold their pixel values (samples) in a buffer of the type ProductData. The band class is just a container for attached metadata of the band, currently:
    • the flag coding FlagCoding
    • the band index at which position the band is stored in the associated product
    • the center wavelength of the band
    • the bandwidth of the band
    • the solar spectral flux of the band
    • the width and height of the band
    The band can contain a buffer to the real data, but this buffer must be read explicitely, to keep the memory fingerprint small, the data is not read automatically.

    The several getPixel and readPixel methods of this class do not necessarily return the values contained in the data buffer of type ProductData. If the scalingFactor, scalingOffset or log10Scaled are set a conversion of the form scalingFactor * rawSample + scalingOffset is applied to the raw samples before the getPixel and @ readPixel methods return the actual pixel values. If the log10Scaled property is true then the conversion is pow(10, scalingFactor * rawSample + scalingOffset). The several setPixel and writePixel perform the inverse operations in this case.

    Version:
    $Revision$ $Date$
    See Also:
    ProductData
    • Constructor Detail

      • Band

        public Band​(String name,
                    int dataType,
                    int width,
                    int height)
        Constructs a new Band.
        Parameters:
        name - the name of the new object
        dataType - the raster data type, must be one of the multiple ProductData.TYPE_X constants, with the exception of ProductData.TYPE_UINT32
        width - the width of the raster in pixels
        height - the height of the raster in pixels
    • Method Detail

      • getFlagCoding

        public FlagCoding getFlagCoding()
        Gets the flag coding for this band.
        Returns:
        a non-null value if this band is a flag dataset, null otherwise
      • isFlagBand

        public boolean isFlagBand()
        Tests whether or not this band is a flag band (getFlagCoding() != null).
        Returns:
        true if so
      • getIndexCoding

        public IndexCoding getIndexCoding()
        Gets the index coding for this band.
        Returns:
        a non-null value if this band is a flag dataset, null otherwise
      • isIndexBand

        public boolean isIndexBand()
        Tests whether or not this band is an index band (getIndexCoding() != null).
        Returns:
        true if so
      • getSampleCoding

        public SampleCoding getSampleCoding()
        Gets the sample coding.
        Returns:
        the sample coding, or null if not set.
      • setSampleCoding

        public void setSampleCoding​(SampleCoding sampleCoding)
        Sets the sample coding for this band.
        Parameters:
        sampleCoding - the sample coding
        Throws:
        IllegalArgumentException - if this band does not contain integer pixels
      • getSpectralBandIndex

        public int getSpectralBandIndex()
        Gets the (zero-based) spectral band index.
        Returns:
        the (zero-based) spectral band index or -1 if it is unknown
      • setSpectralBandIndex

        public void setSpectralBandIndex​(int spectralBandIndex)
        Sets the (zero-based) spectral band index.
        Parameters:
        spectralBandIndex - the (zero-based) spectral band index or -1 if it is unknown
      • getSpectralWavelength

        public float getSpectralWavelength()
        Gets the spectral wavelength in nm (nanometer) units.
        Returns:
        the wave length in nanometers of this band, or zero if this is not a spectral band or the wave length is not known.
      • setSpectralWavelength

        public void setSpectralWavelength​(float spectralWavelength)
        Sets the spectral wavelength in nm (nanomater) units.
        Parameters:
        spectralWavelength - the wavelength in nanometers of this band, or zero if this is not a spectral band or the wavelength is not known.
      • getSpectralBandwidth

        public float getSpectralBandwidth()
        Gets the spectral bandwidth in nm (nanomater) units.
        Returns:
        the bandwidth in nanometers of this band, or zero if this is not a spectral band or the bandwidth is not known.
      • setSpectralBandwidth

        public void setSpectralBandwidth​(float spectralBandwidth)
        Sets the spectral bandwidth in nm (nanomater) units.
        Parameters:
        spectralBandwidth - the spectral bandwidth in nanometers of this band, or zero if this is not a spectral band or the spectral bandwidth is not known.
      • getSolarFlux

        public float getSolarFlux()
        Gets the solar flux in mW/(m^2 nm) (milli-watts per square metre per nanometer) units for the wavelength of this band.
        Returns:
        the solar flux for the wavelength of this band, or zero if this is not a spectral band or the solar flux is not known.
      • setSolarFlux

        public void setSolarFlux​(float solarFlux)
        Sets the solar flux in mW/(m^2 nm) (milli-watts per square metre per nanometer) units for the wavelength of this band.
        Parameters:
        solarFlux - the solar flux for the wavelength of this band, or zero if this is not a spectral band or the solar flux is not known.
      • createSourceImage

        protected RenderedImage createSourceImage()
        Description copied from class: RasterDataNode
        Creates the source image associated with this RasterDataNode. This shall preferably be a MultiLevelImage instance which recognises this raster data node's {@link ##getImageToModelTransform() imageToModelTransform} property, if set.
        Specified by:
        createSourceImage in class RasterDataNode
        Returns:
        A new source image instance.
      • isProductReaderDirectlyUsable

        public boolean isProductReaderDirectlyUsable()
      • writeRasterData

        public void writeRasterData​(int offsetX,
                                    int offsetY,
                                    int width,
                                    int height,
                                    ProductData rasterData,
                                    ProgressMonitor pm)
                             throws IOException
        Writes data from this product raster into the specified region of the user-supplied raster.

        It is important to know that this method does not change this product raster's internal state nor does it write into this product raster's internal raster.

        Specified by:
        writeRasterData in class RasterDataNode
        Parameters:
        offsetX - the X-offset in raster co-ordinates where reading starts
        offsetY - the Y-offset in raster co-ordinates where reading starts
        width - the width of the raster data buffer
        height - the height of the raster data buffer
        rasterData - a raster data buffer receiving the pixels to be read
        pm - a monitor to inform the user about progress
        Throws:
        IOException - if an I/O error occurs
        See Also:
        ProductReader.readBandRasterData(Band, int, int, int, int, ProductData, com.bc.ceres.core.ProgressMonitor)
      • getRawStorageSize

        public long getRawStorageSize​(ProductSubsetDef subsetDef)
        Gets an estimated raw storage size in bytes of this product node.
        Specified by:
        getRawStorageSize in class AbstractBand
        Parameters:
        subsetDef - if not null the subset may limit the size returned
        Returns:
        the size in bytes.
      • acceptVisitor

        public void acceptVisitor​(ProductVisitor visitor)
        Accepts the given visitor. This method implements the well known 'Visitor' design pattern of the gang-of-four. The visitor pattern allows to define new operations on the product data model without the need to add more code to it. The new operation is implemented by the visitor.

        The method simply calls visitor.visit(this).

        Specified by:
        acceptVisitor in class RasterDataNode
        Parameters:
        visitor - the visitor, must not be null
      • removeFromFile

        public void removeFromFile​(ProductWriter productWriter)
        Description copied from class: ProductNode
        Physically remove this node from the file associated with the given product writer. The default implementation does nothing.
        Overrides:
        removeFromFile in class ProductNode
        Parameters:
        productWriter - the product writer to be used to remove this node from the underlying file.
      • createDefaultImageInfo

        public ImageInfo createDefaultImageInfo​(double[] histoSkipAreas,
                                                ProgressMonitor pm)
        Description copied from class: RasterDataNode
        Creates a default image information instance.

        An IllegalStateException is thrown in the case that this raster data node has no raster data.

        Overrides:
        createDefaultImageInfo in class RasterDataNode
        Parameters:
        histoSkipAreas - the left (at index 0) and right (at index 1) normalized areas of the raster data histogram to be excluded when determining the value range for a linear constrast stretching. Can be null, in this case {0.01, 0.04} resp. 5% of the entire area is skipped.
        pm - a monitor to inform the user about progress
        Returns:
        a valid image information instance, never null.
      • computeStxImpl

        protected Stx computeStxImpl​(int level,
                                     ProgressMonitor pm)
        Description copied from class: RasterDataNode
        Computes the statistics. May be overridden. This method belongs to preliminary API and may be removed or changed in the future.
        Overrides:
        computeStxImpl in class RasterDataNode
        Parameters:
        level - The resolution level.
        pm - A progress monitor.
        Returns:
        The statistics.
      • dispose

        public void dispose()
        Releases all of the resources used by this object instance and all of its owned children. Its primary use is to allow the garbage collector to perform a vanilla job.

        This method should be called only if it is for sure that this object instance will never be used again. The results of referencing an instance of this class after a call to dispose() are undefined.

        Overrides of this method should always call super.dispose(); after disposing this instance.

        Overrides:
        dispose in class RasterDataNode