org.esa.beam.framework.datamodel
Class TiePointGrid

java.lang.Object
  extended by com.bc.ceres.core.ExtensibleObject
      extended by org.esa.beam.framework.datamodel.ProductNode
          extended by org.esa.beam.framework.datamodel.DataNode
              extended by org.esa.beam.framework.datamodel.RasterDataNode
                  extended by org.esa.beam.framework.datamodel.TiePointGrid
All Implemented Interfaces:
com.bc.ceres.core.Extensible, Scaling

public class TiePointGrid
extends RasterDataNode

A tie-point grid contains the data for geophysical parameter in remote sensing data products. Tie-point grid are two-dimensional images which hold their pixel values (samples) in a float array.

Usually, tie-point grids are a sub-sampling of a data product's scene resolution.

Version:
$Revision$ $Date$
Author:
Norman Fomferra

Nested Class Summary
 
Nested classes/interfaces inherited from class org.esa.beam.framework.datamodel.RasterDataNode
RasterDataNode.RasterDataDoubleList, RasterDataNode.RasterDataProcessor
 
Field Summary
static int DISCONT_AT_180
          Tie point values have angles in the range -180...+180 degrees and may comprise a discontinuity at 180 (resp
static int DISCONT_AT_360
          Tie point values have are angles in the range 0...+360 degrees and may comprise a discontinuity at 360 (resp. 0) degrees.
static int DISCONT_NONE
          Tie point values are assumed to have none discontinuities.
 
Fields inherited from class org.esa.beam.framework.datamodel.RasterDataNode
INVALID_POS_TEXT, IO_ERROR_TEXT, NO_DATA_TEXT, PROPERTY_NAME_GEOCODING, PROPERTY_NAME_IMAGE_INFO, PROPERTY_NAME_LOG_10_SCALED, PROPERTY_NAME_NO_DATA_VALUE, PROPERTY_NAME_NO_DATA_VALUE_USED, PROPERTY_NAME_ROI_DEFINITION, PROPERTY_NAME_SCALING_FACTOR, PROPERTY_NAME_SCALING_OFFSET, PROPERTY_NAME_STX, PROPERTY_NAME_VALID_PIXEL_EXPRESSION
 
Fields inherited from class org.esa.beam.framework.datamodel.DataNode
PROPERTY_NAME_DATA, PROPERTY_NAME_READ_ONLY, PROPERTY_NAME_SYNTHETIC, PROPERTY_NAME_UNIT
 
Fields inherited from class org.esa.beam.framework.datamodel.ProductNode
PROPERTY_NAME_DESCRIPTION, PROPERTY_NAME_NAME
 
Fields inherited from interface org.esa.beam.framework.datamodel.Scaling
IDENTITY
 
Constructor Summary
TiePointGrid(String name, int gridWidth, int gridHeight, float offsetX, float offsetY, float subSamplingX, float subSamplingY, float[] tiePoints)
          Constructs a new TiePointGrid with the given tie point grid properties.
TiePointGrid(String name, int gridWidth, int gridHeight, float offsetX, float offsetY, float subSamplingX, float subSamplingY, float[] tiePoints, boolean containsAngles)
          Constructs a new TiePointGrid with the given tie point grid properties.
TiePointGrid(String name, int gridWidth, int gridHeight, float offsetX, float offsetY, float subSamplingX, float subSamplingY, float[] tiePoints, int discontinuity)
          Constructs a new TiePointGrid with the given tie point grid properties.
 
Method Summary
 void acceptVisitor(ProductVisitor visitor)
          Accepts the given visitor.
 TiePointGrid cloneTiePointGrid()
           
protected  RenderedImage createSourceImage()
          Creates the source image associated with this RasterDataNode.
static TiePointGrid createSubset(TiePointGrid sourceTiePointGrid, ProductSubsetDef subsetDef)
           
static TiePointGrid createZenithFromElevationAngleTiePointGrid(TiePointGrid elevationAngleGrid)
           
 void dispose()
          Releases all of the resources used by this object instance and all of its owned children.
protected static double[] ensureMinLengthArray(double[] array, int length)
           
protected static float[] ensureMinLengthArray(float[] array, int length)
           
protected static int[] ensureMinLengthArray(int[] array, int length)
           
 int getDiscontinuity()
          Gets the angular discontinuity.
static int getDiscontinuity(float[] tiePoints)
          Determines the angular discontinuity of the given tie point values.
 int getGeophysicalDataType()
          Returns the geophysical data type of this RasterDataNode.
 float getOffsetX()
          Retrieves the x co-ordinate of the first (upper-left) tie-point in pixels.
 float getOffsetY()
          Retrieves the y co-ordinate of the first (upper-left) tie-point in pixels.
 double getPixelDouble(int x, int y)
          Gets the interpolated sample for the pixel located at (x,y) as a double value.
 float getPixelFloat(float x, float y)
          Computes the interpolated sample for the pixel located at (x,y) given as floating point co-ordinates.
 float getPixelFloat(int x, int y)
          Computes the interpolated sample for the pixel located at (x,y).
 int getPixelInt(int x, int y)
          Gets the interpolated sample for the pixel located at (x,y) as an integer value.
 double[] getPixels(int x, int y, int w, int h, double[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          Retrieves an array of tie point data interpolated to the product with and height as double array.
 float[] getPixels(int x, int y, int w, int h, float[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          Retrieves an array of tie point data interpolated to the product width and height as float array.
 int[] getPixels(int x, int y, int w, int h, int[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          Retrieves an array of tie point data interpolated to the product with and height as integer array.
 ProductData getSceneRasterData()
          Gets a raster data holding this tie-point's interpolated pixel data for an entire product scene.
 int getSceneRasterHeight()
          Returns the height in pixels of the scene represented by this tie-point grid.
 int getSceneRasterWidth()
          Returns the width in pixels of the scene represented by this tie-point grid.
 float getSubSamplingX()
          Returns the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
 float getSubSamplingY()
          Returns the sub-sampling in Y-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
 float[] getTiePoints()
          Gets the data array holding this band's pixel samples.
 boolean isFloatingPointType()
          Returns true
 double[] readPixels(int x, int y, int w, int h, double[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          Retrieves an array of tie point data interpolated to the product with and height as double array.
 float[] readPixels(int x, int y, int w, int h, float[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          Retrieves an array of tie point data interpolated to the product with and height as float array.
 int[] readPixels(int x, int y, int w, int h, int[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          Retrieves an array of tie point data interpolated to the product with and height as float array.
 void readRasterData(int offsetX, int offsetY, int width, int height, ProductData rasterData, com.bc.ceres.core.ProgressMonitor pm)
          Reads raster data from this dataset into the user-supplied raster data buffer.
 void readRasterDataFully(com.bc.ceres.core.ProgressMonitor pm)
          Reads the complete underlying raster data.
 void setDiscontinuity(int discontinuity)
          Sets the angular discontinuity.
 void setPixelDouble(int x, int y, double pixelValue)
          This method is not implemented because pixels are read-only in tie-point grids.
 void setPixelFloat(int x, int y, float pixelValue)
          This method is not implemented because pixels are read-only in tie-point grids.
 void setPixelInt(int x, int y, int pixelValue)
          This method is not implemented because pixels are read-only in tie-point grids.
 void setPixels(int x, int y, int w, int h, double[] pixels)
          This method is not implemented because pixels are read-only in tie-point grids.
 void setPixels(int x, int y, int w, int h, float[] pixels)
          This method is not implemented because pixels are read-only in tie-point grids.
 void setPixels(int x, int y, int w, int h, int[] pixels)
          This method is not implemented because pixels are read-only in tie-point grids.
 void writePixels(int x, int y, int w, int h, double[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          This method is not implemented because pixels are read-only in tie-point grids.
 void writePixels(int x, int y, int w, int h, float[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          This method is not implemented because pixels are read-only in tie-point grids.
 void writePixels(int x, int y, int w, int h, int[] pixels, com.bc.ceres.core.ProgressMonitor pm)
          This method is not implemented because pixels are read-only in tie-point grids.
 void writeRasterData(int offsetX, int offsetY, int width, int height, ProductData rasterData, com.bc.ceres.core.ProgressMonitor pm)
          Writes data from this product raster into the specified region of the user-supplied raster.
 void writeRasterDataFully(com.bc.ceres.core.ProgressMonitor pm)
          Writes the complete underlying raster data.
 
Methods inherited from class org.esa.beam.framework.datamodel.RasterDataNode
canBeOrthorectified, checkCompatibleRasterData, clearNoDataValue, computeStxImpl, createColorIndexedImage, createCompatibleRasterData, createCompatibleRasterData, createCompatibleSceneRasterData, createDefaultImageInfo, createDefaultImageInfo, createPixelValidator, createPointing, createRgbImage, createTransectProfileData, fireImageInfoChanged, getGeoCoding, getGeophysicalImage, getGeophysicalNoDataValue, getImageInfo, getImageInfo, getImageInfo, getNoDataValue, getOverlayMaskGroup, getPixels, getPixels, getPixels, getPixelString, getPointing, getRasterData, getRasterHeight, getRasterWidth, getRoiMaskGroup, getSampleFloat, getSampleInt, getScalingFactor, getScalingOffset, getSourceImage, getStx, getStx, getValidMaskExpression, getValidMaskImage, getValidPixelExpression, getValidShape, hasIntPixels, hasRasterData, isCompatibleRasterData, isGeophysicalImageSet, isLog10Scaled, isNoDataValueSet, isNoDataValueUsed, isPixelValid, isPixelValid, isPixelValid, isScalingApplied, isSourceImageSet, isStxSet, isValidMaskImageSet, isValidMaskProperty, isValidMaskUsed, loadRasterData, loadRasterData, processRasterData, quantizeRasterData, quantizeRasterData, readPixels, readPixels, readPixels, readRasterData, readRasterDataFully, readValidMask, resetValidMask, scale, scaleInverse, setGeoCoding, setGeophysicalNoDataValue, setImageInfo, setImageInfo, setLog10Scaled, setModified, setNoDataValue, setNoDataValueUsed, setRasterData, setScalingFactor, setScalingOffset, setSourceImage, setSourceImage, setStx, setValidPixelExpression, unloadRasterData, updateExpression, writePixels, writePixels, writePixels, writeRasterData, writeRasterDataFully
 
Methods inherited from class org.esa.beam.framework.datamodel.DataNode
checkDataCompatibility, createCompatibleProductData, fireProductNodeDataChanged, getData, getDataElems, getDataElemSize, getDataType, getNumDataElems, getRawStorageSize, getUnit, isReadOnly, isSynthetic, setData, setDataElems, setReadOnly, setSynthetic, setUnit
 
Methods inherited from class org.esa.beam.framework.datamodel.ProductNode
fireProductNodeChanged, fireProductNodeChanged, getDescription, getDisplayName, getName, getOwner, getProduct, getProductReader, getProductReaderSafe, getProductRefString, getProductSafe, getProductWriter, getProductWriterSafe, getRawStorageSize, isModified, isPartOfSubset, isValidNodeName, removeFromFile, setDescription, setName, setOwner, toString
 
Methods inherited from class com.bc.ceres.core.ExtensibleObject
getExtension
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DISCONT_NONE

public static int DISCONT_NONE
Tie point values are assumed to have none discontinuities.


DISCONT_AT_180

public static int DISCONT_AT_180
Tie point values have angles in the range -180...+180 degrees and may comprise a discontinuity at 180 (resp. -180) degrees.


DISCONT_AT_360

public static int DISCONT_AT_360
Tie point values have are angles in the range 0...+360 degrees and may comprise a discontinuity at 360 (resp. 0) degrees.

Constructor Detail

TiePointGrid

public TiePointGrid(String name,
                    int gridWidth,
                    int gridHeight,
                    float offsetX,
                    float offsetY,
                    float subSamplingX,
                    float subSamplingY,
                    float[] tiePoints)
Constructs a new TiePointGrid with the given tie point grid properties.

Parameters:
name - the name of the new object
gridWidth - the width of the tie-point grid in pixels
gridHeight - the height of the tie-point grid in pixels
offsetX - the X co-ordinate of the first (upper-left) tie-point in pixels
offsetY - the Y co-ordinate of the first (upper-left) tie-point in pixels
subSamplingX - the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to. Must not be less than one.
subSamplingY - the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to. Must not be less than one.
tiePoints - the tie-point data values, must be an array of the size gridWidth * gridHeight

TiePointGrid

public TiePointGrid(String name,
                    int gridWidth,
                    int gridHeight,
                    float offsetX,
                    float offsetY,
                    float subSamplingX,
                    float subSamplingY,
                    float[] tiePoints,
                    int discontinuity)
Constructs a new TiePointGrid with the given tie point grid properties.

Parameters:
name - the name of the new object
gridWidth - the width of the tie-point grid in pixels
gridHeight - the height of the tie-point grid in pixels
offsetX - the X co-ordinate of the first (upper-left) tie-point in pixels
offsetY - the Y co-ordinate of the first (upper-left) tie-point in pixels
subSamplingX - the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to. Must not be less than one.
subSamplingY - the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to. Must not be less than one.
tiePoints - the tie-point data values, must be an array of the size gridWidth * gridHeight
discontinuity - the discontinuity mode, can be either DISCONT_NONE or DISCONT_AT_180 DISCONT_AT_360

TiePointGrid

public TiePointGrid(String name,
                    int gridWidth,
                    int gridHeight,
                    float offsetX,
                    float offsetY,
                    float subSamplingX,
                    float subSamplingY,
                    float[] tiePoints,
                    boolean containsAngles)
Constructs a new TiePointGrid with the given tie point grid properties.

Parameters:
name - the name of the new object
gridWidth - the width of the tie-point grid in pixels
gridHeight - the height of the tie-point grid in pixels
offsetX - the X co-ordinate of the first (upper-left) tie-point in pixels
offsetY - the Y co-ordinate of the first (upper-left) tie-point in pixels
subSamplingX - the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to. Must not be less than one.
subSamplingY - the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to. Must not be less than one.
tiePoints - the tie-point data values, must be an array of the size gridWidth * gridHeight
containsAngles - if true, the angular discontinuity is derived from the provided tie-point data values
Method Detail

getDiscontinuity

public static int getDiscontinuity(float[] tiePoints)
Determines the angular discontinuity of the given tie point values.

Returns:
the angular discontinuity, will always be either DISCONT_AT_180 or DISCONT_AT_360

getDiscontinuity

public int getDiscontinuity()
Gets the angular discontinuity.

Returns:
the angular discontinuity, will always be either DISCONT_NONE or DISCONT_AT_180 or DISCONT_AT_360

setDiscontinuity

public void setDiscontinuity(int discontinuity)
Sets the angular discontinuity.

Parameters:
discontinuity - angular discontinuity, can be either DISCONT_NONE or DISCONT_AT_180 or DISCONT_AT_360

isFloatingPointType

public boolean isFloatingPointType()
Returns true

Overrides:
isFloatingPointType in class RasterDataNode
Returns:
true

getGeophysicalDataType

public int getGeophysicalDataType()
Returns the geophysical data type of this RasterDataNode. The value retuned is always one of the ProductData.TYPE_XXX constants.

Overrides:
getGeophysicalDataType in class RasterDataNode
Returns:
the geophysical data type
See Also:
ProductData

getSceneRasterData

public ProductData getSceneRasterData()
Gets a raster data holding this tie-point's interpolated pixel data for an entire product scene.

In opposite to the getRasterData method, this method returns raster data that has at least getBandOutputRasterWidth()*getBandOutputRasterHeight() elements of the given data type to store the scene's pixels.

Specified by:
getSceneRasterData in class RasterDataNode
Returns:
raster data covering the pixels for a complete scene
See Also:
RasterDataNode.getRasterData(), RasterDataNode.getRasterWidth(), RasterDataNode.getRasterHeight(), getSceneRasterWidth(), getSceneRasterHeight()

getSceneRasterWidth

public int getSceneRasterWidth()
Returns the width in pixels of the scene represented by this tie-point grid. The value returned is (getRasterWidth() - 1) * getSubSamplingX() + 1

Overrides:
getSceneRasterWidth in class RasterDataNode
Returns:
the scene width in pixels

getSceneRasterHeight

public int getSceneRasterHeight()
Returns the height in pixels of the scene represented by this tie-point grid. The value returned is (getRasterHeight() - 1) * getSubSamplingY() + 1

Overrides:
getSceneRasterHeight in class RasterDataNode
Returns:
the scene height in pixels

getOffsetX

public float getOffsetX()
Retrieves the x co-ordinate of the first (upper-left) tie-point in pixels.


getOffsetY

public float getOffsetY()
Retrieves the y co-ordinate of the first (upper-left) tie-point in pixels.


getSubSamplingX

public float getSubSamplingX()
Returns the sub-sampling in X-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.

Returns:
the sub-sampling in X-direction, never less than one.

getSubSamplingY

public float getSubSamplingY()
Returns the sub-sampling in Y-direction given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.

Returns:
the sub-sampling in Y-direction, never less than one.

getTiePoints

public float[] getTiePoints()
Gets the data array holding this band's pixel samples.

Returns:
the data array for this band, or null if no data has been loaded
See Also:
ProductData.getElems()

getPixelInt

public int getPixelInt(int x,
                       int y)
Gets the interpolated sample for the pixel located at (x,y) as an integer value.

If the pixel co-odinates given by (x,y) are not covered by this tie-point grid, the method extrapolates.

Specified by:
getPixelInt in class RasterDataNode
Parameters:
x - The X co-ordinate of the pixel location
y - The Y co-ordinate of the pixel location
Returns:
the pixel value at (x,y)
Throws:
ArrayIndexOutOfBoundsException - if the co-ordinates are not in bounds

dispose

public void dispose()
Description copied from class: RasterDataNode
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

getPixelFloat

public float getPixelFloat(int x,
                           int y)
Computes the interpolated sample for the pixel located at (x,y).

If the pixel co-odinates given by (x,y) are not covered by this tie-point grid, the method extrapolates.

Specified by:
getPixelFloat in class RasterDataNode
Parameters:
x - The X co-ordinate of the pixel location, given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
y - The Y co-ordinate of the pixel location, given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
Returns:
the pixel value at (x,y)
Throws:
ArrayIndexOutOfBoundsException - if the co-ordinates are not in bounds

getPixelFloat

public float getPixelFloat(float x,
                           float y)
Computes the interpolated sample for the pixel located at (x,y) given as floating point co-ordinates.

If the pixel co-odinates given by (x,y) are not covered by this tie-point grid, the method extrapolates.

Parameters:
x - The X co-ordinate of the pixel location, given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
y - The Y co-ordinate of the pixel location, given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
Throws:
ArrayIndexOutOfBoundsException - if the co-ordinates are not in bounds

getPixelDouble

public double getPixelDouble(int x,
                             int y)
Gets the interpolated sample for the pixel located at (x,y) as a double value.

If the pixel co-ordinates given by (x,y) are not covered by this tie-point grid, the method extrapolates.

Specified by:
getPixelDouble in class RasterDataNode
Parameters:
x - The X co-ordinate of the pixel location, given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
y - The Y co-ordinate of the pixel location, given in the pixel co-ordinates of the data product to which this tie-pint grid belongs to.
Returns:
the pixel value at (x,y)
Throws:
ArrayIndexOutOfBoundsException - if the co-ordinates are not in bounds

setPixelInt

public void setPixelInt(int x,
                        int y,
                        int pixelValue)
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
setPixelInt in class RasterDataNode
Parameters:
x - the X co-ordinate of the pixel location
y - the Y co-ordinate of the pixel location
pixelValue - the new pixel value at (x,y)

setPixelFloat

public void setPixelFloat(int x,
                          int y,
                          float pixelValue)
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
setPixelFloat in class RasterDataNode
Parameters:
x - the X co-ordinate of the pixel location
y - the Y co-ordinate of the pixel location
pixelValue - the new pixel value at (x,y)

setPixelDouble

public void setPixelDouble(int x,
                           int y,
                           double pixelValue)
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
setPixelDouble in class RasterDataNode
Parameters:
x - the X co-ordinate of the pixel location
y - the Y co-ordinate of the pixel location
pixelValue - the new pixel value at (x,y)

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] pixels,
                       com.bc.ceres.core.ProgressMonitor pm)
Retrieves an array of tie point data interpolated to the product with and height as integer array. If the given array is null a new one was created and returned.

Specified by:
getPixels in class RasterDataNode
Parameters:
x - the x coordinate of the array to be read
y - the y coordinate of the array to be read
w - the width of the array to be read
h - the height of the array to be read
pixels - the integer array to be filled with data
pm - a monitor to inform the user about progress
Throws:
IllegalArgumentException - if the length of the given array is less than w*h.

getPixels

public float[] getPixels(int x,
                         int y,
                         int w,
                         int h,
                         float[] pixels,
                         com.bc.ceres.core.ProgressMonitor pm)
Retrieves an array of tie point data interpolated to the product width and height as float array. If the given array is null a new one is created and returned.

Specified by:
getPixels in class RasterDataNode
Parameters:
x - the x coordinate of the array to be read
y - the y coordinate of the array to be read
w - the width of the array to be read
h - the height of the array to be read
pixels - the float array to be filled with data
pm - a monitor to inform the user about progress
Throws:
IllegalArgumentException - if the length of the given array is less than w*h.

getPixels

public double[] getPixels(int x,
                          int y,
                          int w,
                          int h,
                          double[] pixels,
                          com.bc.ceres.core.ProgressMonitor pm)
Retrieves an array of tie point data interpolated to the product with and height as double array. If the given array is null a new one was created and returned.

Specified by:
getPixels in class RasterDataNode
Parameters:
x - the x coordinate of the array to be read
y - the y coordinate of the array to be read
w - the width of the array to be read
h - the height of the array to be read
pixels - the double array to be filled with data
pm - a monitor to inform the user about progress
Throws:
IllegalArgumentException - if the length of the given array is less than w*h.

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] pixels)
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
setPixels in class RasterDataNode
Parameters:
x - x offset into the band
y - y offset into the band
w - width of the pixel array to be written
h - height of the pixel array to be written.
pixels - integer array to be written

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      float[] pixels)
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
setPixels in class RasterDataNode
Parameters:
x - x offset into the band
y - y offset into the band
w - width of the pixel array to be written
h - height of the pixel array to be written.
pixels - float array to be written

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      double[] pixels)
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
setPixels in class RasterDataNode
Parameters:
x - x offset into the band
y - y offset into the band
w - width of the pixel array to be written
h - height of the pixel array to be written.
pixels - double array to be written

readPixels

public int[] readPixels(int x,
                        int y,
                        int w,
                        int h,
                        int[] pixels,
                        com.bc.ceres.core.ProgressMonitor pm)
                 throws IOException
Retrieves an array of tie point data interpolated to the product with and height as float array. If the given array is null a new one was created and returned.

Specified by:
readPixels in class RasterDataNode
Parameters:
x - the x coordinate of the array to be read
y - the y coordinate of the array to be read
w - the width of the array to be read
h - the height of the array to be read
pixels - the integer array to be filled with data
pm - a progress monitor
Returns:
the pixels read
Throws:
IllegalArgumentException - if the length of the given array is less than w*h.
IOException

readPixels

public float[] readPixels(int x,
                          int y,
                          int w,
                          int h,
                          float[] pixels,
                          com.bc.ceres.core.ProgressMonitor pm)
                   throws IOException
Retrieves an array of tie point data interpolated to the product with and height as float array. If the given array is null a new one was created and returned. *

Specified by:
readPixels in class RasterDataNode
Parameters:
x - the x coordinate of the array to be read
y - the y coordinate of the array to be read
w - the width of the array to be read
h - the height of the array to be read
pixels - the float array to be filled with data
pm - a monitor to inform the user about progress
Returns:
the pixels read
Throws:
IllegalArgumentException - if the length of the given array is less than w*h.
IOException

readPixels

public double[] readPixels(int x,
                           int y,
                           int w,
                           int h,
                           double[] pixels,
                           com.bc.ceres.core.ProgressMonitor pm)
                    throws IOException
Retrieves an array of tie point data interpolated to the product with and height as double array. If the given array is null a new one was created and returned.

Specified by:
readPixels in class RasterDataNode
Parameters:
x - the x coordinate of the array to be read
y - the y coordinate of the array to be read
w - the width of the array to be read
h - the height of the array to be read
pixels - the double array to be filled with data
pm - a monitor to inform the user about progress
Returns:
the pixels read
Throws:
IllegalArgumentException - if the length of the given array is less than w*h.
IOException

writePixels

public void writePixels(int x,
                        int y,
                        int w,
                        int h,
                        int[] pixels,
                        com.bc.ceres.core.ProgressMonitor pm)
                 throws IOException
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
writePixels in class RasterDataNode
Parameters:
x - x offset into the band
y - y offset into the band
w - width of the pixel array to be written
h - height of the pixel array to be written
pixels - array of pixels to write
pm - a progress monitor
Throws:
IOException

writePixels

public void writePixels(int x,
                        int y,
                        int w,
                        int h,
                        float[] pixels,
                        com.bc.ceres.core.ProgressMonitor pm)
                 throws IOException
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
writePixels in class RasterDataNode
Parameters:
x - x offset into the band
y - y offset into the band
w - width of the pixel array to be written
h - height of the pixel array to be written
pixels - array of pixels to write
pm - a progress monitor
Throws:
IOException

writePixels

public void writePixels(int x,
                        int y,
                        int w,
                        int h,
                        double[] pixels,
                        com.bc.ceres.core.ProgressMonitor pm)
                 throws IOException
This method is not implemented because pixels are read-only in tie-point grids.

Specified by:
writePixels in class RasterDataNode
Parameters:
x - x offset into the band
y - y offset into the band
w - width of the pixel array to be written
h - height of the pixel array to be written
pixels - array of pixels to write
pm - a progress monitor
Throws:
IOException

readRasterData

public void readRasterData(int offsetX,
                           int offsetY,
                           int width,
                           int height,
                           ProductData rasterData,
                           com.bc.ceres.core.ProgressMonitor pm)
                    throws IOException
Reads raster data from this dataset into the user-supplied raster data buffer.

This method always directly (re-)reads this band's data from its associated data source into the given data buffer.

Specified by:
readRasterData in class RasterDataNode
Parameters:
offsetX - the X-offset in the raster co-ordinates where reading starts
offsetY - the Y-offset in the 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
IllegalArgumentException - if the raster is null
IllegalStateException - if this product raster was not added to a product so far, or if the product to which this product raster belongs to, has no associated product reader
See Also:
ProductReader.readBandRasterData(Band, int, int, int, int, ProductData, com.bc.ceres.core.ProgressMonitor)

readRasterDataFully

public void readRasterDataFully(com.bc.ceres.core.ProgressMonitor pm)
                         throws IOException
Reads the complete underlying raster data.

After this method has been called successfully, hasRasterData() should always return true and getRasterData() should always return a valid ProductData instance with at least getRasterWidth()*getRasterHeight() elements (samples).

In opposite to the loadRasterData method, the readRasterDataFully method always reloads the data of this product raster, independently of whether its has already been loaded or not.

Specified by:
readRasterDataFully in class RasterDataNode
Parameters:
pm - a monitor to inform the user about progress
Throws:
IOException - if an I/O error occurs
See Also:
RasterDataNode.loadRasterData(), RasterDataNode.readRasterData(int, int, int, int, ProductData, com.bc.ceres.core.ProgressMonitor)

writeRasterData

public void writeRasterData(int offsetX,
                            int offsetY,
                            int width,
                            int height,
                            ProductData rasterData,
                            com.bc.ceres.core.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)

writeRasterDataFully

public void writeRasterDataFully(com.bc.ceres.core.ProgressMonitor pm)
                          throws IOException
Writes the complete underlying raster data.

Specified by:
writeRasterDataFully in class RasterDataNode
Parameters:
pm - a monitor to inform the user about progress
Throws:
IOException - if an I/O error occurs

createSourceImage

protected RenderedImage createSourceImage()
Description copied from class: RasterDataNode
Creates the source image associated with this RasterDataNode. This shall preferably be a MultiLevelImage instance.

Specified by:
createSourceImage in class RasterDataNode
Returns:
A new source image instance.

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

cloneTiePointGrid

public TiePointGrid cloneTiePointGrid()

createZenithFromElevationAngleTiePointGrid

public static TiePointGrid createZenithFromElevationAngleTiePointGrid(TiePointGrid elevationAngleGrid)

ensureMinLengthArray

protected static int[] ensureMinLengthArray(int[] array,
                                            int length)

ensureMinLengthArray

protected static float[] ensureMinLengthArray(float[] array,
                                              int length)

ensureMinLengthArray

protected static double[] ensureMinLengthArray(double[] array,
                                               int length)

createSubset

public static TiePointGrid createSubset(TiePointGrid sourceTiePointGrid,
                                        ProductSubsetDef subsetDef)


Copyright © 2002-2013 Brockmann Consult GmbH. All Rights Reserved.