This article discusses the
ILcdMultilevelRaster interfaces. Just like the
ALcdImage class and its variants, they represent grids of pixels with geographical bounds. The
ILcdRaster interfaces and their implementations pre-date
ALcdImage, however. The
ALcdImage classes offer more functionality: they allow working with multi-band and HDR imagery, and let you apply the image operators
discussed in how to model raster data for image processing.
ILcdRaster and the related classes are compatible in the sense that a single Java object can extend from
ALcdImage and implement
ILcdRaster at the same time. All model decoders that produce raster data provide domain objects that do so.
ILcdRaster is a basic extension of
ILcdBounded and represents a 2D rectangular area consisting of rows and columns with equally sized tiles. Each tile (
ILcdTile) is a matrix of integer values. The tiling structure allows a fast retrieval of data for a specific area in a specific resolution.
What is an ILcdTile? provides more information on the usage of
You can retrieve the value of a tile in two ways:
By using the
retrieveValuemethod and specifying the raster coordinates. Note that for some data types, such as elevation data, the returned value can be the result of interpolation or filtering.
By using the
retrieveTilemethod and specifying a tile row index and tile column index. The returned tile can then be queried for the actual value without interpolation or filtering. For more information on working with tiles, refer to What is an ILcdTile?.
The level of detail of a raster is determined by the pixel density of the raster. The pixel density provides an estimate for
the number of pixels per unit surface area in model coordinates. The higher the pixel density, the more detailed the raster.
You can retrieve the pixel density by using the method
getPixelDensity. This allows you to determine whether a raster is too detailed or not detailed enough for visualization or for other purposes.
Especially since rasters are typically loaded lazily, a simple check of the pixel density can prevent the loading of massive
amounts of data with the wrong level of detail.
For visualization purposes, you can set a
java.awt.image.ColorModel on the raster by using the
setColorModel method. Because
ILcdCache, it is also possible to attach cached data to an
ILcdRaster. The main implementation of the
ILcdRaster interface is the
TLcdRaster class. For more information on
TLcdRaster, their properties and methods, refer to the API reference.
ILcdMultilevelRaster is essentially a list of
ILcdRaster instances covering the same area at different levels of detail. The different levels are ordered by an increasing pixel density,
from the least detailed to the most detailed level.
ILcdMultilevelRaster has bounds of its own, which are the union of the bounds of the rasters that it contains. The bounds of the rasters are typically
identical but can be different, when rasters from different sources cover approximately the same area, for example. The main
implementation of the
ILcdMultilevelRaster interface is the
TLcdMultilevelRaster class. For more information on their properties and methods, refer to the API reference.
ILcdTile raster tile is a matrix of integer values. A tile has a resolution expressed in pixels and a pixel size expressed in bits.
There are two ways to retrieve the contents of a tile:
As individual values, by using the method
retrieveValuewith coordinates expressed in pixels.
As images, by using the method
createImage. The tile contents are retrieved in bulk.
Similar to an
ILcdTile can have a
ColorModel for visualization purposes. The major difference between an
ILcdRaster and an
ILcdTile is that an
ILcdRaster is defined in model coordinates (doubles) and an
ILcdTile in pixel coordinates (integer).
It is not required that all tiles in a raster have the same tile resolution. For example, a raster representing a DTED data set covers a rectangular area in geodetic coordinates. Each tile covers a cell of 1 degree by 1 degree, but tiles near the poles have a lower resolution than tiles near the equator.
The tiles in a raster usually all have the same size defined by the tile width and the tile height, in the coordinates of
the associated reference system. In some cases, the tiles in the last grid column and the last grid row may be truncated to
smaller sizes. This may happen if the number of columns times the nominal tile width is larger than the raster width. Or if
the number of rows times the nominal tile height is larger than the raster height. For example, a raster with a size of 5000m
by 2500m may have 5 by 3 tiles with nominal sizes of 1000m by 1000m. The tiles in the last row are then truncated to 1000m
by 500m. Figure 1, “Properties of an
ILcdRaster and its tiles” provides a schematic overview of a raster and its tiles.
ILcdRasterand its tiles