public interface ILcdEarthTileSet extends ILcdBounded, ILcdDisposable
Important notice: the package com.luciad.imaging
presents a new API
for the modeling of raster data. For new projects, it is recommended to use
this API instead of ILcdEarthTileSet
et al.
Provides a tiled and multi-leveled view on some data set. Applications can use
the tileset to extract a limited working set from the data, which they
can then visualize or otherwise process. The contents of the tiles are not
specified by this interface.
A tileset knows the underlying data's bounds and geo reference, as well as the number of levels and the number of tile rows and columns on each level. The structure of the tiles is expected to be as follows:
The tileset interface allows:
ILcdEarthTileSetCallback
.
Note that asynchronous production can be achieved via the wrapper class
TLcdEarthAsynchronousTileSet
, so
that not all tilesets need to implement multi-threaded behaviour
themselves.ILcdEarthTileSetCallback
may also indicate that a tile is not available. In other words, although
the tiles on each detail level form a regular grid, not all cells in
this grid need to be populated. This allows for the creation of high
resolution overlays on lower resolution data.
A tileset may contain one or more "coverages" of data (ILcdEarthTileSetCoverage
objects). All coverages within one tileset share the same tiling and
multi-leveling layout. Coverages are used for two purposes:
ILcdEarthTileSetCoverage
,
ILcdEarthRasterTileSetCoverage
and ILcdEarthVectorTileSetCoverage
interfaces for instances returned from the getTileSetCoverage(int)
methods.Modifier and Type | Method and Description |
---|---|
void |
cancelTile(int aLevel,
long aTileX,
long aTileY,
ILcdEarthTileSetCoverage aCoverage,
ILcdGeoReference aGeoReference,
TLcdEarthTileFormat aFormat,
ILcdEarthTileSetCallback aCallback,
Object aContext)
Cancels any pending tile requests for the given parameters.
|
boolean |
containsTile(ILcdEarthTileSetCoverage aCoverage,
int aLevel,
long aX,
long aY,
Object aContext)
Returns true if the repository contains the specified tile.
|
boolean |
containsTileSetCoverage(String aCoverageName)
Returns true if the repository contains a coverage with the specified name.
|
void |
dispose()
This method releases all resources held by the
repository, such as file locks, threads or server connections.
|
ILcdBounds |
getBounds()
Returns the bounds of this tile set, expressed in the model reference of the model that
contains this tile set.
|
int |
getLevelCount()
Returns the number of available detail levels.
|
long |
getTileColumnCount(int aLevel)
Returns the number of columns in the tile grid at the given level.
|
long |
getTileRowCount(int aLevel)
Returns the number of rows in the tile grid at the given level.
|
ILcdEarthTileSetCoverage |
getTileSetCoverage(int aIndex)
Returns the coverage at the specified index.
|
ILcdEarthTileSetCoverage |
getTileSetCoverage(String aCoverageName)
Returns the tileset coverage with the specified name.
|
int |
getTileSetCoverageCount()
Returns the number of coverages this tileset contains.
|
boolean |
isFormatSupported(ILcdEarthTileSetCoverage aCoverage,
TLcdEarthTileFormat aFormat)
Returns true if the tileset can produce tiles for the given coverage in the given format.
|
boolean |
isGeoReferenceSupported(ILcdEarthTileSetCoverage aCoverage,
ILcdGeoReference aGeoReference)
Returns true if the tileset can produce tiles for the given coverage in the given reference
system.
|
ALcdEarthTile |
produceTile(ILcdEarthTileSetCoverage aCoverage,
int aLevel,
long aX,
long aY,
ILcdGeoReference aGeoReference,
TLcdEarthTileFormat aFormat,
Object aContext)
Gets a tile from the repository.
|
void |
produceTile(ILcdEarthTileSetCoverage aCoverage,
int aLevel,
long aTileX,
long aTileY,
ILcdGeoReference aGeoReference,
TLcdEarthTileFormat aFormat,
TLcdEarthTileOperationMode aMode,
ILcdEarthTileSetCallback aCallback,
Object aContext)
Produces the requested tile, and invoke the supplied callback when done.
|
ALcdEarthTile |
updateTile(ALcdEarthTile aEarthTile,
Object aContext)
Returns an updated version of the specified tile.
|
void |
updateTile(ALcdEarthTile aTile,
TLcdEarthTileOperationMode aMode,
ILcdEarthTileSetCallback aCallback,
Object aContext)
Produces an updated version of the given tile, if necessary.
|
close
void produceTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aTileX, long aTileY, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, TLcdEarthTileOperationMode aMode, ILcdEarthTileSetCallback aCallback, Object aContext)
tileAvailable()
method. If the tile cannot be produced for some reason, the method tileNotAvailable()
should be called instead.
If the tileset supports it and aMode
is TLcdEarthTileOperationMode.PREFER_ASYNCHRONOUS
,
the tile request may be executed asynchronously. However, the callback
must be invoked at some point in time, unless the
cancelTile()
method is used to cancel the tile request before it is executed. If
aMode
is TLcdEarthTileOperationMode.FORCE_SYNCHRONOUS
,
the request must be executed synchronously and the callback must be
invoked before produceTile()
returns.
Tiles may be requested in reference systems other than the native
geo reference of the underlying data, provided that the isGeoReferenceSupported()
method returns true for the requested reference. If this is not the case,
the tileset should call tileNotAvailable()
. If the tileset
calls tileAvailable()
, the geo reference of the resulting tile
must be equal to aGeoReference
, and the tile's bounds
must likewise be expressed in this reference.
Similarly, tiles may be requested in different data formats, as described
by TLcdEarthTileFormat
. The format
determines the type of the data object that will be contained in the
requested tile. To check if a format is supported, use isFormatSupported()
.
If the specified format is not supported, the tileset should call
tileNotAvailable()
.
The context parameter may be used to pass application-specific data into
the tileset. If it is not needed, its value may be null
.
aCoverage
- the coverage from which the tile is requestedaLevel
- the level from which the tile is requestedaTileX
- the column index of the requested tileaTileY
- the row index of the requested tileaGeoReference
- the reference system in which the tile should be returnedaFormat
- the desired format of the tile's dataaMode
- controls the synchronous or asynchronous behaviour of the tilesetaCallback
- will be invoked when the tile is available to be usedaContext
- application-specific data to be used by the tileset, if anyvoid dispose()
dispose
in interface ILcdDisposable
ILcdBounds getBounds()
getBounds
in interface ILcdBounded
ILcdBounded.getBounds()
int getLevelCount()
long getTileRowCount(int aLevel)
aLevel
- the level to be queriedlong getTileColumnCount(int aLevel)
aLevel
- the level to be queriedint getTileSetCoverageCount()
ILcdEarthTileSetCoverage getTileSetCoverage(int aIndex)
aIndex
- the index of the coverage to returnILcdEarthTileSetCoverage
boolean containsTileSetCoverage(String aCoverageName)
aCoverageName
- the name of the coverage to look forILcdEarthTileSetCoverage getTileSetCoverage(String aCoverageName)
aCoverageName
- the name of the coverage to look forvoid updateTile(ALcdEarthTile aTile, TLcdEarthTileOperationMode aMode, ILcdEarthTileSetCallback aCallback, Object aContext)
aTile
- tile to checkaMode
- controls the synchronous or asynchronous behaviour of the tilesetaCallback
- will be invoked when the tile is available to be usedaContext
- application-specific data to be used by the tileset, if anyALcdEarthTile updateTile(ALcdEarthTile aEarthTile, Object aContext) throws IOException
aEarthTile
- the tile to checkaContext
- application-specific data to be used by the tileset, if anyIOException
- if the tile cannot be updatedvoid cancelTile(int aLevel, long aTileX, long aTileY, ILcdEarthTileSetCoverage aCoverage, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, ILcdEarthTileSetCallback aCallback, Object aContext)
cancelTile()
is called, the tileset is no longer required
to invoke the ILcdEarthTileSetCallback
for the tile in question.
The tileset is not obligated to honor the cancelTile()
request, but if cancelTile()
is not called, then it
is required to invoke the ILcdEarthTileSetCallback
at some
point.aLevel
- the level from which the tile is requestedaTileX
- the column index of the requested tileaTileY
- the row index of the requested tileaCoverage
- the coverage from which the tile is requestedaGeoReference
- the reference system in which the tile is requestedaFormat
- the format in which the tile is requestedaCallback
- would be invoked when the tile would have been available to be usedaContext
- application-specific data to be used by the tileset, if anyboolean containsTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aX, long aY, Object aContext)
aCoverage
- the coverage from which to query a tileaLevel
- the detail level for which to query a tileaX
- the column index at which to query a tileaY
- the row index at which to query a tileaContext
- application-specific data to be used by the tileset, if anyALcdEarthTile produceTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aX, long aY, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, Object aContext) throws IOException
aCoverage
- the coverage from which to query a tileaLevel
- the detail level for which to query a tileaX
- the column index at which to query a tileaY
- the row index at which to query a tileaGeoReference
- the georeference of the requested tileaFormat
- the format of the requested tileaContext
- application-specific data to be used by the tileset, if anyIOException
- if the tile cannot be producedboolean isGeoReferenceSupported(ILcdEarthTileSetCoverage aCoverage, ILcdGeoReference aGeoReference)
This method must always return true for the native reference of the
coverage. If it returns true for any other georeference, then the tileset
must be able to handle the georeference in question in its
produceTile()
method.
aCoverage
- the coverage to check foraGeoReference
- the reference to check forboolean isFormatSupported(ILcdEarthTileSetCoverage aCoverage, TLcdEarthTileFormat aFormat)
This method must always return true for the native format of the
coverage. If it returns true for any other format, then the tileset
must be able to handle the format in question in its
produceTile()
method.
aCoverage
- the coverage to check foraFormat
- the format to check for