|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.esa.beam.framework.gpf.internal.TileImpl
public class TileImpl
A Tile implementation backed by a Raster.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface org.esa.beam.framework.gpf.Tile |
|---|
Tile.Pos |
| Constructor Summary | |
|---|---|
TileImpl(RasterDataNode rasterDataNode,
Raster raster)
|
|
TileImpl(RasterDataNode rasterDataNode,
Raster raster,
Rectangle rectangle,
boolean target)
|
|
TileImpl(RasterDataNode rasterDataNode,
WritableRaster raster,
Rectangle rectangle)
|
|
| Method Summary | |
|---|---|
ProductData |
getDataBuffer()
Obtains access to the underlying raw sample buffer. |
byte[] |
getDataBufferByte()
Gets the underlying raw sample array of type byte (signed or unsigned). |
double[] |
getDataBufferDouble()
Gets the underlying raw sample array of type double. |
float[] |
getDataBufferFloat()
Gets the underlying raw sample array of type float. |
int |
getDataBufferIndex(int x,
int y)
Gets the index into the underlying raw sample buffer for the given pixel coordinates. |
int[] |
getDataBufferInt()
Gets the underlying raw sample array of type int. |
short[] |
getDataBufferShort()
Gets the underlying raw sample array of type short (signed or unsigned). |
int |
getHeight()
Gets the height in pixels within the scene covered by the tile's RasterDataNode. |
int |
getMaxX()
Gets the maximum pixel x-coordinate within the scene covered by the tile's RasterDataNode. |
int |
getMaxY()
Gets the maximum pixel y-coordinate within the scene covered by the tile's RasterDataNode. |
int |
getMinX()
Gets the minimum pixel x-coordinate within the scene covered by the tile's RasterDataNode. |
int |
getMinY()
Gets the minimum pixel y-coordinate within the scene covered by the tile's RasterDataNode. |
RasterDataNode |
getRasterDataNode()
Gets the RasterDataNode associated with this tile,
e.g. |
ProductData |
getRawSamples()
Gets the raw (unscaled, uncalibrated) samples, e.g. |
Rectangle |
getRectangle()
Gets the tile rectangle in pixel coordinates within the scene covered by the tile's RasterDataNode. |
boolean |
getSampleBit(int x,
int y,
int bitIndex)
Gets the bit-coded sample value for the given pixel coordinate and the specified bit index as a boolean. |
boolean |
getSampleBoolean(int x,
int y)
Gets the (geo-)physically scaled sample at the given pixel coordinate as boolean value. |
double |
getSampleDouble(int x,
int y)
Gets the (geo-)physically scaled sample value for the given pixel coordinate as double. |
float |
getSampleFloat(int x,
int y)
Gets the (geo-)physically scaled sample at the given pixel coordinate as float value. |
int |
getSampleInt(int x,
int y)
Gets the (geo-)physically scaled sample at the given pixel coordinate as int value. |
double[] |
getSamplesDouble()
Gets the scaled, (geo-)physical array of double samples, copied from or directly returning the underlying
data buffer. |
float[] |
getSamplesFloat()
Gets the scaled, (geo-)physical array of double samples, copied from or directly returning the underlying
data buffer. |
int[] |
getSamplesInt()
Gets the scaled, (geo-)physical array of int samples, copied from or directly returning the underlying
data buffer. |
int |
getScanlineOffset()
Gets the scanline offset. |
int |
getScanlineStride()
Gets the raster scanline stride for addressing the internal data buffer. |
int |
getWidth()
Gets the width in pixels within the scene covered by the tile's RasterDataNode. |
boolean |
isSampleValid(int x,
int y)
Checks whether or not the sample value exists and is valid at a given image pixel position. |
boolean |
isTarget()
Checks if this is a target tile. |
Iterator<Tile.Pos> |
iterator()
Gets an iterator which can be used to visit all pixels in the tile. |
void |
setRawSamples(ProductData rawSamples)
Sets this tile's raw (unscaled, uncalibrated) samples. |
void |
setSample(int x,
int y,
boolean sample)
Sets the (geo-)physically scaled sample at the given pixel coordinate from a boolean value. |
void |
setSample(int x,
int y,
double sample)
Sets the (geo-)physically scaled sample at the given pixel coordinate from a double value. |
void |
setSample(int x,
int y,
float sample)
Sets the (geo-)physically scaled sample at the given pixel coordinate from a float value. |
void |
setSample(int x,
int y,
int sample)
Sets the (geo-)physically scaled sample at the given pixel coordinate from a int value. |
void |
setSample(int x,
int y,
int bitIndex,
boolean sample)
Sets the bit-coded sample at the given pixel coordinate and the specified bit index from a boolean value. |
void |
setSamples(double[] samples)
Sets this tile's scaled, (geo-)physical samples as array of doubles. |
void |
setSamples(float[] samples)
Sets this tile's scaled, (geo-)physical samples as array of floatss. |
void |
setSamples(int[] samples)
Sets this tile's scaled, (geo-)physical samples as array of floatss. |
double |
toGeoPhysical(double sample)
Converts a raw sample value (e.g. |
float |
toGeoPhysical(float sample)
Converts a raw sample value (e.g. |
double |
toRaw(double sample)
Converts a (geo-)physically scaled sample value of type double to a
its corresponding raw sample value (e.g. |
float |
toRaw(float sample)
Converts a (geo-)physically scaled sample value of type float to a
its corresponding raw sample value (e.g. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public TileImpl(RasterDataNode rasterDataNode,
Raster raster)
public TileImpl(RasterDataNode rasterDataNode,
WritableRaster raster,
Rectangle rectangle)
public TileImpl(RasterDataNode rasterDataNode,
Raster raster,
Rectangle rectangle,
boolean target)
| Method Detail |
|---|
public float toGeoPhysical(float sample)
Tilefloat.
toGeoPhysical in interface Tilesample - The raw sample value.
public double toGeoPhysical(double sample)
Tiledouble.
toGeoPhysical in interface Tilesample - The raw sample value.
public float toRaw(float sample)
Tilefloat to a
its corresponding raw sample value (e.g. digital counts).
toRaw in interface Tilesample - The calibrated sample value.
public double toRaw(double sample)
Tiledouble to a
its corresponding raw sample value (e.g. digital counts).
toRaw in interface Tilesample - The calibrated sample value.
public final boolean isTarget()
Tile
isTarget in interface Tiletrue if this is a target tile.
public boolean isSampleValid(int x,
int y)
Tile
isSampleValid in interface Tilex - the image pixel x-coordinatey - the image pixel y-coordinate
public final Rectangle getRectangle()
TileRasterDataNode.
Simply returns new Rectangle(
minX,
minY,
width,
height).
getRectangle in interface Tilepublic final int getMinX()
TileRasterDataNode.
getMinX in interface Tilepublic final int getMaxX()
TileRasterDataNode.
getMaxX in interface Tilepublic final int getMinY()
TileRasterDataNode.
getMinY in interface Tilepublic final int getMaxY()
TileRasterDataNode.
getMaxY in interface Tilepublic final int getWidth()
TileRasterDataNode.
getWidth in interface Tilepublic final int getHeight()
TileRasterDataNode.
getHeight in interface Tilepublic final RasterDataNode getRasterDataNode()
TileRasterDataNode associated with this tile,
e.g. a Band for source and target tiles or
TiePointGrid for a source tile.
getRasterDataNode in interface TileRasterDataNode associated with this tile.
public int getDataBufferIndex(int x,
int y)
TileThe pixel coordinates are absolute; meaning they are defined in the scene raster coordinate system
of this tile's RasterDataNode.
The returned index is computed as follows:
int dx = x -Tile.getMinX(); int dy = y -Tile.getMinY(); int index =Tile.getScanlineOffset()+ dy *Tile.getScanlineStride()+ dx;
getDataBufferIndex in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().
public ProductData getDataBuffer()
TileObtains access to the underlying raw sample buffer. The data buffer holds the raw (unscaled, uncalibrated) sample data (e.g. detector counts).
Elements in this array must be addressed by an index computed via thescanlineStride and
scanlineOffset properties.
The index can also be directly computed using the Tile.getDataBufferIndex(int, int) method.
The most efficient way to access and/or modify the samples in the raw data buffer is using the following nested loops:
int lineStride = tile.Tile.getScanlineStride(); int lineOffset = tile.Tile.getScanlineOffset(); for (int y = tile.Tile.getMinY(); y <= tile.Tile.getMaxY(); y++) { int index = lineOffset; for (int x = tile.Tile.getMinX(); x <= tile.Tile.getMaxX(); x++) { // use index here to access raw data buffer... index++; } lineOffset += lineStride; }
If the absolute x,y pixel coordinates are not required, the following construct maybe more readable:
int lineStride = tile.Tile.getScanlineStride(); int lineOffset = tile.Tile.getScanlineOffset(); for (int y = 0; y < tile.Tile.getHeight(); y++) { int index = lineOffset; for (int x = 0; x < tile.Tile.getWidth(); x++) { // use index here to access raw data buffer... index++; } lineOffset += lineStride; }
getDataBuffer in interface Tilepublic final byte[] getDataBufferByte()
Tilebyte (signed or unsigned).
If the underlying data buffer is not of type byte, null is returned.
Refer to Tile.getDataBuffer() for using the primitive array.
getDataBufferByte in interface Tilenull (see above).Tile.getDataBufferIndex(int, int),
Tile.getDataBuffer()public final short[] getDataBufferShort()
Tileshort (signed or unsigned).
If the underlying data buffer is not of type short, null is returned.
Refer to Tile.getDataBuffer() for using the primitive array.
getDataBufferShort in interface Tilenull (see above).Tile.getDataBufferIndex(int, int),
Tile.getDataBuffer()public final int[] getDataBufferInt()
Tileint.
If the underlying data buffer is not of type int, null is returned.
Refer to Tile.getDataBuffer() for using the primitive array.
getDataBufferInt in interface Tilenull (see above).Tile.getDataBufferIndex(int, int),
Tile.getDataBuffer()public final float[] getDataBufferFloat()
Tilefloat.
If the underlying data buffer is not of type float, null is returned.
Refer to Tile.getDataBuffer() for using the primitive array.
getDataBufferFloat in interface Tilenull (see above).Tile.getDataBufferIndex(int, int),
Tile.getDataBuffer()public final double[] getDataBufferDouble()
Tiledouble.
If the underlying data buffer is not of type double, null is returned.
Refer to Tile.getDataBuffer() for using the primitive array.
getDataBufferDouble in interface Tilenull (see above).Tile.getDataBufferIndex(int, int),
Tile.getDataBuffer()public final int getScanlineOffset()
Tile
getScanlineOffset in interface TileTile.getScanlineStride()public final int getScanlineStride()
Tile
getScanlineStride in interface TileTile.getScanlineOffset()public ProductData getRawSamples()
TileTile.getDataBuffer() method, the returned samples
will cover exactly the region Tile.getRectangle() rectangle} of this tile. Thus, the number
of returned samples will always equal width * height.
In order to apply changes of the samples values to this tile, it is mandatory to call
Tile.setRawSamples(org.esa.beam.framework.datamodel.ProductData) with the modified
ProductData instance.
getRawSamples in interface Tilepublic void setRawSamples(ProductData rawSamples)
Tilewidth * height
of this tile.
This method must be used
in order to apply changes made to the samples returned by the Tile.getRawSamples() method.
setRawSamples in interface TilerawSamples - The raw samples to be set.public int[] getSamplesInt()
Tileint samples, copied from or directly returning the underlying
data buffer. In contradiction to the Tile.getDataBuffer() method, the returned samples
will cover exactly the region Tile.getRectangle() rectangle} of this tile. Thus, the number
of returned samples will always equal width * height.
Sample values that are masked out (see Tile.isSampleValid(int, int)) are returned as array elements
having the value Float.NaN.
getSamplesInt in interface TileTile.setSamples(int[])public float[] getSamplesFloat()
Tiledouble samples, copied from or directly returning the underlying
data buffer. In contradiction to the Tile.getDataBuffer() method, the returned samples
will cover exactly the region Tile.getRectangle() rectangle} of this tile. Thus, the number
of returned samples will always equal width * height.
Sample values that are masked out (see Tile.isSampleValid(int, int)) are returned as array elements
having the value Float.NaN.
getSamplesFloat in interface TileTile.setSamples(float[])public double[] getSamplesDouble()
Tiledouble samples, copied from or directly returning the underlying
data buffer. In contradiction to the Tile.getDataBuffer() method, the returned samples
will cover exactly the region Tile.getRectangle() rectangle} of this tile. Thus, the number
of returned samples will always equal width * height.
Sample values that are masked out (see Tile.isSampleValid(int, int)) are returned as array elements
having the value Float.NaN.
getSamplesDouble in interface TileTile.setSamples(double[])public void setSamples(int[] samples)
Tilefloatss.
The number of given samples must be equal width * height
of this tile.
setSamples in interface Tilesamples - The (geo-)physical samples to be set.Tile.getSamplesInt()public void setSamples(float[] samples)
Tilefloatss.
The number of given samples must be equal width * height
of this tile.
setSamples in interface Tilesamples - The (geo-)physical samples to be set.Tile.getSamplesFloat()public void setSamples(double[] samples)
Tiledoubles.
The number of given samples must be equal width * height
of this tile.
This method must be used
in order to apply changes made to the samples returned by the Tile.getRawSamples() method.
setSamples in interface Tilesamples - The (geo-)physical samples to be set.Tile.getSamplesDouble()
public boolean getSampleBoolean(int x,
int y)
Tileboolean value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
getSampleBoolean in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().
boolean value.
public void setSample(int x,
int y,
boolean sample)
Tileboolean value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
setSample in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().sample - The (geo-)physically scaled sample as boolean value.
public int getSampleInt(int x,
int y)
Tileint value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
getSampleInt in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().
int value.
public void setSample(int x,
int y,
int sample)
Tileint value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed. The conversion ensures that no overflow happens. If necessary the value is cropped to the value range.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
setSample in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().sample - The (geo-)physically scaled sample as int value.
public float getSampleFloat(int x,
int y)
Tilefloat value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases it is more performant to directly access the tile's dataBuffer in conjunction
with the scanlineOffset and scanlineStride properties.
getSampleFloat in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().
float value.
public void setSample(int x,
int y,
float sample)
Tilefloat value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed. The conversion ensures that no overflow happens. If necessary the value is cropped to the value range.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
setSample in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().sample - The (geo-)physically scaled sample as float value.
public double getSampleDouble(int x,
int y)
Tiledouble.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
getSampleDouble in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().
double value.
public void setSample(int x,
int y,
double sample)
Tiledouble value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed. The conversion ensures that no overflow happens. If necessary the value is cropped to the value range.
Note that in most cases, accessing the tile's dataBuffer directly in conjunction
with the scanlineOffset and scanlineStride properties
gives a better performance.
setSample in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().sample - The (geo-)physically scaled sample as double value.
public boolean getSampleBit(int x,
int y,
int bitIndex)
Tileboolean.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases it is more performant to directly access the tile's dataBuffer in conjunction
with the scanlineOffset and scanlineStride properties.
getSampleBit in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().bitIndex - The bit index.
boolean value.
public void setSample(int x,
int y,
int bitIndex,
boolean sample)
Tileboolean value.
If the underlying data buffer is of a different sample data type, an appropriate type conversion is performed.
Note that in most cases it is more performant to directly access the tile's dataBuffer in conjunction
with the scanlineOffset and scanlineStride properties.
setSample in interface Tilex - The absolute pixel x-coordinate, must be greater or equal Tile.getMinX() and less or equal Tile.getMaxX().y - The absolute pixel y-coordinate, must be greater or equal Tile.getMinY() and less or equal Tile.getMaxY().bitIndex - The bit index.sample - The sample as boolean value.public Iterator<Tile.Pos> iterator()
Tile
for (Tile.Pos pos: tile) {
int x = pos.x;
int y = pos.y;
// ...
}
is equivalent to iterating over all pixels using two nested loops
for (int y = tile.getMinY(); y <= tile.getMaxY(); y++) {
for (int x = tile.getMinX(); x <= tile.getMaxX(); x++) {
// ...
}
}
iterator in interface Iterable<Tile.Pos>iterator in interface Tile
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||