Package org.geotools.coverage
Class AbstractCoverage.Renderable
- Object
-
- PropertySourceImpl
-
- Renderable
-
- All Implemented Interfaces:
RenderableImage
,Serializable
,ImageFunction
,PropertySource
- Direct Known Subclasses:
GridCoverage2D.Renderable
- Enclosing class:
- AbstractCoverage
protected class AbstractCoverage.Renderable extends PropertySourceImpl implements RenderableImage, ImageFunction
A view of a coverage as a renderable image. Renderable images allow interoperability with Java2D for a two-dimensional slice of a coverage (which may or may not be a grid coverage).- Author:
- Martin Desruisseaux (IRD)
- See Also:
AbstractCoverage.getRenderableImage(int, int)
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected GeneralPosition
coordinate
A coordinate point where to evaluate the function.protected int
xAxis
Dimension to use for x axis.protected int
yAxis
Dimension to use for y axis.-
Fields inherited from interface RenderableImage
HINTS_OBSERVED
-
-
Constructor Summary
Constructors Constructor Description Renderable(int xAxis, int yAxis)
Constructs a renderable image.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RenderedImage
createDefaultRendering()
Returns a rendered image with a default width and height in pixels.protected RenderContext
createRenderContext(Rectangle2D gridBounds, RenderingHints hints)
Initializes a render context with an affine transform that maps the coverage envelope to the specified destination rectangle.RenderedImage
createRendering(RenderContext context)
Creates a rendered image using a given render context.RenderedImage
createScaledRendering(int width, int height, RenderingHints hints)
Creates a rendered image with widthwidth
and heightheight
in pixels.void
getElements(double startX, double startY, double deltaX, double deltaY, int countX, int countY, int element, double[] real, double[] imag)
Returns all values of a given element for a specified set of coordinates.void
getElements(float startX, float startY, float deltaX, float deltaY, int countX, int countY, int element, float[] real, float[] imag)
Returns all values of a given element for a specified set of coordinates.float
getHeight()
Gets the height in coverage coordinate space.float
getMinX()
Gets the minimum X coordinate of the rendering-independent image data.float
getMinY()
Gets the minimum Y coordinate of the rendering-independent image data.int
getNumElements()
Returns the number of elements per value at each position.Vector<RenderableImage>
getSources()
Returnsnull
to indicate that no source information is available.float
getWidth()
Gets the width in coverage coordinate space.boolean
isComplex()
Returnsfalse
since values are not complex.boolean
isDynamic()
Returnstrue
if successive renderings with the same arguments may produce different results.-
Methods inherited from class PropertySourceImpl
getProperties, getProperty, getPropertyClass, getPropertyNames, getPropertyNames
-
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface RenderableImage
getProperty, getPropertyNames
-
-
-
-
Field Detail
-
xAxis
protected final int xAxis
Dimension to use for x axis.
-
yAxis
protected final int yAxis
Dimension to use for y axis.
-
coordinate
protected final GeneralPosition coordinate
A coordinate point where to evaluate the function. The point dimension is equals to the coverage's dimension. The x andy
ordinates will be ignored, since they will vary for each pixel to be evaluated. Other ordinates, if any, should be set to a fixed value. For example a coverage may be three-dimensional, where the third dimension is the time axis. In such case,coordinate.ord[2]
should be set to the point in time where to evaluate the coverage. By default, all ordinates are initialized to 0. Subclasses should set the desired values in their constructor if needed.
-
-
Method Detail
-
getSources
public Vector<RenderableImage> getSources()
Returnsnull
to indicate that no source information is available.- Specified by:
getSources
in interfaceRenderableImage
-
isDynamic
public boolean isDynamic()
Returnstrue
if successive renderings with the same arguments may produce different results. The default implementation returnsfalse
.- Specified by:
isDynamic
in interfaceRenderableImage
- See Also:
GridCoverage2D.isDataEditable()
-
isComplex
public boolean isComplex()
Returnsfalse
since values are not complex.- Specified by:
isComplex
in interfaceImageFunction
- Returns:
- Always
false
in default implementation.
-
getWidth
public float getWidth()
Gets the width in coverage coordinate space.- Specified by:
getWidth
in interfaceRenderableImage
- See Also:
AbstractCoverage.getEnvelope()
,AbstractCoverage.getCoordinateReferenceSystem()
-
getHeight
public float getHeight()
Gets the height in coverage coordinate space.- Specified by:
getHeight
in interfaceRenderableImage
- See Also:
AbstractCoverage.getEnvelope()
,AbstractCoverage.getCoordinateReferenceSystem()
-
getMinX
public float getMinX()
Gets the minimum X coordinate of the rendering-independent image data. This is the coverage's envelope minimal value for the x axis.- Specified by:
getMinX
in interfaceRenderableImage
- See Also:
AbstractCoverage.getEnvelope()
,AbstractCoverage.getCoordinateReferenceSystem()
-
getMinY
public float getMinY()
Gets the minimum Y coordinate of the rendering-independent image data. This is the coverage's envelope minimal value for the y axis.- Specified by:
getMinY
in interfaceRenderableImage
- See Also:
AbstractCoverage.getEnvelope()
,AbstractCoverage.getCoordinateReferenceSystem()
-
createDefaultRendering
public RenderedImage createDefaultRendering()
Returns a rendered image with a default width and height in pixels.- Specified by:
createDefaultRendering
in interfaceRenderableImage
- Returns:
- A rendered image containing the rendered data
-
createScaledRendering
public RenderedImage createScaledRendering(int width, int height, RenderingHints hints)
Creates a rendered image with widthwidth
and heightheight
in pixels. Ifwidth
is 0, it will be computed automatically fromheight
. Conversely, ifheight
is 0, il will be computed automatically fromwidth
.The default implementation creates a render context with
createRenderContext(java.awt.geom.Rectangle2D, java.awt.RenderingHints)
and invokescreateRendering(RenderContext)
.- Specified by:
createScaledRendering
in interfaceRenderableImage
- Parameters:
width
- The width of rendered image in pixels, or 0.height
- The height of rendered image in pixels, or 0.hints
- Rendering hints, ornull
.- Returns:
- A rendered image containing the rendered data
-
createRendering
public RenderedImage createRendering(RenderContext context)
Creates a rendered image using a given render context. This method will uses an "ImageFunction
" operation if possible (i.e. if the area of interect is rectangular and the affine transform contains only translation and scale coefficients).- Specified by:
createRendering
in interfaceRenderableImage
- Parameters:
context
- The render context to use to produce the rendering.- Returns:
- A rendered image containing the rendered data
-
createRenderContext
protected RenderContext createRenderContext(Rectangle2D gridBounds, RenderingHints hints)
Initializes a render context with an affine transform that maps the coverage envelope to the specified destination rectangle. The affine transform mays swap axis in order to normalize their order (i.e. make them appear in the (x,y) order), so that the image appears properly oriented when rendered.- Parameters:
gridBounds
- The two-dimensional destination rectangle.hints
- The rendering hints, ornull
if none.- Returns:
- A render context initialized with an affine transform from the coverage to the
grid coordinate system. This transform is the inverse of
GridGeometry2D.getGridToCRS2D()
. - See Also:
GridGeometry2D.getGridToCRS2D()
-
getNumElements
public int getNumElements()
Returns the number of elements per value at each position. This is the maximum value plus 1 allowed ingetElements(...)
methods invocation. The default implementation returns the number of sample dimensions in the coverage.- Specified by:
getNumElements
in interfaceImageFunction
- Returns:
- The number of sample dimensions.
-
getElements
public void getElements(float startX, float startY, float deltaX, float deltaY, int countX, int countY, int element, float[] real, float[] imag)
Returns all values of a given element for a specified set of coordinates. This method is automatically invoked at rendering time for populating an image tile, providing that the rendered image is created using the "ImageFunction
" operator and the image type is notdouble
.- Specified by:
getElements
in interfaceImageFunction
-
getElements
public void getElements(double startX, double startY, double deltaX, double deltaY, int countX, int countY, int element, double[] real, double[] imag)
Returns all values of a given element for a specified set of coordinates. This method is automatically invoked at rendering time for populating an image tile, providing that the rendered image is created using the "ImageFunction
" operator and the image type isdouble
. The default implementation invokesAbstractCoverage.evaluate(Position,double[])
recursively.- Specified by:
getElements
in interfaceImageFunction
-
-