Class TLcdEarthTexturedTerrainTileSet
- All Implemented Interfaces:
ILcdEarthTileSet
,ILcdBounded
,ILcdDisposable
,AutoCloseable
TLcdEarthTexturedTerrainTileVertexArray
objects. These tiles can be visualized as a 3D terrain.
Coverages
Coverage | Comments | Supported format |
---|---|---|
texture | This coverage can be specified in the constructor and contains the texture or image data of the terrain. | BufferedImage orTLcdEarthTextureData |
elevation | This coverage can be specified in the constructor and contains the elevation data of the terrain. The elevation data can be used to generate the terrain geometry on-the-fly. | TLcdEarthElevationData |
geometry | This coverage can be specified in the constructor and contains the geometry of the terrain. | TLcdEarthTerrainTileVertexArray |
textured geometry | This coverage combines the texture and geometry data into textured geometry tiles (that is terrain tiles). | TLcdEarthTexturedTerrainTileVertexArray |
Textured geometry tiles
When producing a tile for thetextured geometry coverage
and either the geometry tile or image tile is missing this tile set will try to produce the
missing image/geometry tile by falling back to a lower level. This fall back is only supported
for geometry tiles if they are elevation-based (that is no geometry tile set was specified in the
constructor). The fallback behavior can be disabled by setting setFallbackForTerrainTiles(boolean)
to false
. The advantage of using the fall back is that the texture and geometry/elevation
tile sets do not need to contain the same set of tiles. As a result less data may need to be
stored and retrieved.
The resolution of the textured geometry tiles can differ from the resolution of the tiles in the
texture coverage. The difference can be changed through the setTerrainTextureResolution(int)
method. By default the terrain texture resolution is set to 128
.
Thread safety
This tileset is thread-safe for tile reading.- Since:
- 8.2
-
Constructor Summary
ConstructorDescriptionTLcdEarthTexturedTerrainTileSet
(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data.TLcdEarthTexturedTerrainTileSet
(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aElevationSet, ILcdEarthRasterTileSetCoverage aElevationTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data.TLcdEarthTexturedTerrainTileSet
(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aElevationSet, ILcdEarthRasterTileSetCoverage aElevationTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage, ILcdGeoReference aModelReference) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data.TLcdEarthTexturedTerrainTileSet
(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage, ILcdGeoReference aModelReference) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data. -
Method Summary
Modifier and TypeMethodDescriptionvoid
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.void
Clears the internal cache.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.Returns the bounds of this tile set, expressed in the model reference of the model that contains this tile set.Returns the coverage with the elevations.Returns the coverage with the geometry.int
Returns the number of available detail levels.int
Returns the resolution of the terrain textures.Returns the coverage with the textures.Returns the coverage with the textured geometry.long
getTileColumnCount
(int aLevel) Returns the number of columns in the tile grid at the given level.long
Returns the maximum time for which a cached tile can be reused.long
getTileRowCount
(int aLevel) Returns the number of rows in the tile grid at the given level.getTileSetCoverage
(int aIndex) Returns the coverage at the specified index.getTileSetCoverage
(String aCoverageName) Returns the tileset coverage with the specified name.int
Returns the number of coverages this tileset contains.boolean
Returns whether this tile set will try to produce a missing geometry or texture tile needed for producing a terrain tile (that is a tile in thetextured geometry coverage
) by falling back to a lower level if the other tile is available (that is no fall back will occur if both the geometry and texture tile are not available).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.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.produceTile
(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aX, long aY, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, Object aContext) Gets a tile from the repository.void
setFallbackForTerrainTiles
(boolean aFallbackForTerrainTiles) Sets whether this tile set should try to fall back to a lower level for terrain tiles.void
setTerrainTextureResolution
(int aTextureResolution) Sets the resolution of the terrain textures.void
setTileLifeTime
(long aTime) Sets the maximum time for which a tile can be reused.void
Updates the internal cache.void
updateTile
(ALcdEarthTile aTile, TLcdEarthTileOperationMode aMode, ILcdEarthTileSetCallback aCallback, Object aContext) Produces an updated version of the given tile, if necessary.updateTile
(ALcdEarthTile aEarthTile, Object aContext) Returns an updated version of the specified tile.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.luciad.util.ILcdDisposable
close
-
Constructor Details
-
TLcdEarthTexturedTerrainTileSet
public TLcdEarthTexturedTerrainTileSet(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data. The tileset reference is assumed to be geodetic. The geometry and texture tileset should have the same tile grid structure (that is bounds, level count, #rows and #columns).- Parameters:
aGeometrySet
- the tileset that can be used to generate the geometry data.aGeometryTileSetCoverage
- the coverage inaGeometrySet
that contains geometry data.aTextureSet
- the tileset that can be used to generate the texture data.aTextureTileSetCoverage
- the coverage inaTextureSet
that contains texture data.- Throws:
IllegalArgumentException
- if the geometry or texture tileset/coverage are not compatible or unsupported.
-
TLcdEarthTexturedTerrainTileSet
public TLcdEarthTexturedTerrainTileSet(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage, ILcdGeoReference aModelReference) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data. The geometry and texture tileset should have the same tile grid structure (that is bounds, level count, #rows and #columns).- Parameters:
aGeometrySet
- the tileset that can be used to generate the geometry data.aGeometryTileSetCoverage
- the coverage inaGeometrySet
that contains geometry data.aTextureSet
- the tileset that can be used to generate the texture data.aTextureTileSetCoverage
- the coverage inaTextureSet
that contains texture data.aModelReference
- the reference of the tileset.- Throws:
IllegalArgumentException
- if the geometry or texture tileset/coverage are not compatible or unsupported.
-
TLcdEarthTexturedTerrainTileSet
public TLcdEarthTexturedTerrainTileSet(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aElevationSet, ILcdEarthRasterTileSetCoverage aElevationTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data. The tileset reference is assumed to be geodetic. The geometry and texture tileset should have the same tile grid structure (that is bounds, level count, #rows and #columns). If either the tileset for geometry or elevation data isnull
the tileset for the other data will be used to generate it on-the-fly.- Parameters:
aGeometrySet
- the tileset that can be used to generate the geometry data.aGeometryTileSetCoverage
- the coverage inaGeometrySet
that contains geometry data.aElevationSet
- the tileset that can be used to generate the elevation data ornull
.aElevationTileSetCoverage
- the coverage inaElevationSet
that contains elevation data ornull
.aTextureSet
- the tileset that can be used to generate the texture data.aTextureTileSetCoverage
- the coverage inaTextureSet
that contains texture data.- Throws:
IllegalArgumentException
- if the geometry, elevation or texture tileset/coverage are not compatible/unsupported or if both the geometry and elevation tilesets arenull
-
TLcdEarthTexturedTerrainTileSet
public TLcdEarthTexturedTerrainTileSet(ILcdEarthTileSet aGeometrySet, ILcdEarthRasterTileSetCoverage aGeometryTileSetCoverage, ILcdEarthTileSet aElevationSet, ILcdEarthRasterTileSetCoverage aElevationTileSetCoverage, ILcdEarthTileSet aTextureSet, ILcdEarthRasterTileSetCoverage aTextureTileSetCoverage, ILcdGeoReference aModelReference) Constructs a newTLcdEarthTextureTerrainTileSet
with the specified geometry and texture data. The geometry, elevation and texture tileset should have the same tile grid structure (that is bounds, level count, #rows and #columns). If either the tileset for geometry or elevation data isnull
the tileset for the other data will be used to generate it on-the-fly.- Parameters:
aGeometrySet
- the tileset that can be used to generate the geometry data ornull
.aGeometryTileSetCoverage
- the coverage inaGeometrySet
that contains geometry data ornull
.aElevationSet
- the tileset that can be used to generate the elevation data ornull
.aElevationTileSetCoverage
- the coverage inaElevationSet
that contains elevation data ornull
.aTextureSet
- the tileset that can be used to generate the texture data.aTextureTileSetCoverage
- the coverage inaTextureSet
that contains texture data.aModelReference
- the reference of the tileset.- Throws:
IllegalArgumentException
- if the geometry, elevation or texture tileset/coverage are not compatible/unsupported or if both the geometry and elevation tilesets arenull
-
-
Method Details
-
setTerrainTextureResolution
public void setTerrainTextureResolution(int aTextureResolution) Sets the resolution of the terrain textures. The specified resolution is only a hint and may not be support. If it is not supported a similar supported resolution is set instead.- Parameters:
aTextureResolution
- the desired resolution in pixels
-
getTerrainTextureResolution
public int getTerrainTextureResolution()Returns the resolution of the terrain textures. This resolution may differ from the resolution of the tiles in the texture coverage.- Returns:
- the resolution in pixels
- See Also:
-
getTileLifeTime
public long getTileLifeTime()Returns the maximum time for which a cached tile can be reused.- Returns:
- the time in milliseconds
- See Also:
-
setTileLifeTime
public void setTileLifeTime(long aTime) Sets the maximum time for which a tile can be reused.- Parameters:
aTime
- the time in milliseconds- See Also:
-
clearCache
public void clearCache()Clears the internal cache. The reuse of tiles can for example occur because some information of the neighbouring tiles is necessary (ex. to avoid discontinuous data at the tile borders) for producing a tile.- See Also:
-
updateCache
public void updateCache()Updates the internal cache.- See Also:
-
isFallbackForTerrainTiles
public boolean isFallbackForTerrainTiles()Returns whether this tile set will try to produce a missing geometry or texture tile needed for producing a terrain tile (that is a tile in thetextured geometry coverage
) by falling back to a lower level if the other tile is available (that is no fall back will occur if both the geometry and texture tile are not available). This fall back is only supported for geometry tiles if they are elevation-based (that is no geometry tile set was specified in the constructor). This is enabled by default.- Returns:
true
if this tile set will try to fall back to a lower level for terrain tiles
-
setFallbackForTerrainTiles
public void setFallbackForTerrainTiles(boolean aFallbackForTerrainTiles) Sets whether this tile set should try to fall back to a lower level for terrain tiles.- Parameters:
aFallbackForTerrainTiles
- whether this tile set should try to fall back to a lower level for terrain tiles- See Also:
-
getTexturedGeometryCoverage
Returns the coverage with the textured geometry.- Returns:
- the textured geometry coverage.
-
getElevationCoverage
Returns the coverage with the elevations.- Returns:
- the elevation coverage.
-
getGeometryCoverage
Returns the coverage with the geometry.- Returns:
- the geometry coverage.
-
getTextureCoverage
Returns the coverage with the textures.- Returns:
- the geometry coverage.
-
produceTile
public void produceTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aTileX, long aTileY, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, TLcdEarthTileOperationMode aMode, ILcdEarthTileSetCallback aCallback, Object aContext) Description copied from interface:ILcdEarthTileSet
Produces the requested tile, and invoke the supplied callback when done. The resulting tile is passed to the call back'stileAvailable()
method. If the tile cannot be produced for some reason, the methodtileNotAvailable()
should be called instead.If the tileset supports it and
aMode
isTLcdEarthTileOperationMode.PREFER_ASYNCHRONOUS
, the tile request may be executed asynchronously. However, the callback must be invoked at some point in time, unless thecancelTile()
method is used to cancel the tile request before it is executed. IfaMode
isTLcdEarthTileOperationMode.FORCE_SYNCHRONOUS
, the request must be executed synchronously and the callback must be invoked beforeproduceTile()
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 calltileNotAvailable()
. If the tileset callstileAvailable()
, the geo reference of the resulting tile must be equal toaGeoReference
, 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, useisFormatSupported()
. If the specified format is not supported, the tileset should calltileNotAvailable()
.The context parameter may be used to pass application-specific data into the tileset. If it is not needed, its value may be
null
.- Specified by:
produceTile
in interfaceILcdEarthTileSet
- Parameters:
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 any
-
cancelTile
public void cancelTile(int aLevel, long aTileX, long aTileY, ILcdEarthTileSetCoverage aCoverage, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, ILcdEarthTileSetCallback aCallback, Object aContext) Description copied from interface:ILcdEarthTileSet
Cancels any pending tile requests for the given parameters. This method is only meaningful in tilesets that support the asynchronous operation mode. IfcancelTile()
is called, the tileset is no longer required to invoke theILcdEarthTileSetCallback
for the tile in question. The tileset is not obligated to honor thecancelTile()
request, but ifcancelTile()
is not called, then it is required to invoke theILcdEarthTileSetCallback
at some point.- Specified by:
cancelTile
in interfaceILcdEarthTileSet
- Parameters:
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 any
-
dispose
public void dispose()Description copied from interface:ILcdEarthTileSet
This method releases all resources held by the repository, such as file locks, threads or server connections.- Specified by:
dispose
in interfaceILcdDisposable
- Specified by:
dispose
in interfaceILcdEarthTileSet
-
getBounds
Description copied from interface:ILcdEarthTileSet
Returns the bounds of this tile set, expressed in the model reference of the model that contains this tile set.- Specified by:
getBounds
in interfaceILcdBounded
- Specified by:
getBounds
in interfaceILcdEarthTileSet
- Returns:
- the bounds of this tile set
- See Also:
-
getLevelCount
public int getLevelCount()Description copied from interface:ILcdEarthTileSet
Returns the number of available detail levels. Level 0 is the coarsest level.- Specified by:
getLevelCount
in interfaceILcdEarthTileSet
- Returns:
- the number of available detail levels
-
getTileRowCount
public long getTileRowCount(int aLevel) Description copied from interface:ILcdEarthTileSet
Returns the number of rows in the tile grid at the given level. Each level should have twice the number of rows of the previous one.- Specified by:
getTileRowCount
in interfaceILcdEarthTileSet
- Parameters:
aLevel
- the level to be queried- Returns:
- the number of tile rows on the specified level
-
getTileColumnCount
public long getTileColumnCount(int aLevel) Description copied from interface:ILcdEarthTileSet
Returns the number of columns in the tile grid at the given level. Each level should have twice the number of columns of the previous one.- Specified by:
getTileColumnCount
in interfaceILcdEarthTileSet
- Parameters:
aLevel
- the level to be queried- Returns:
- the number of tile columns on the specified level
-
getTileSetCoverageCount
public int getTileSetCoverageCount()Description copied from interface:ILcdEarthTileSet
Returns the number of coverages this tileset contains.- Specified by:
getTileSetCoverageCount
in interfaceILcdEarthTileSet
- Returns:
- the number of coverages this tileset contains
-
getTileSetCoverage
Description copied from interface:ILcdEarthTileSet
Returns the coverage at the specified index.- Specified by:
getTileSetCoverage
in interfaceILcdEarthTileSet
- Parameters:
aIndex
- the index of the coverage to return- Returns:
- the requested
ILcdEarthTileSetCoverage
-
containsTileSetCoverage
Description copied from interface:ILcdEarthTileSet
Returns true if the repository contains a coverage with the specified name.- Specified by:
containsTileSetCoverage
in interfaceILcdEarthTileSet
- Parameters:
aCoverageName
- the name of the coverage to look for- Returns:
- true if the repository contains a coverage with the specified name, false otherwise
-
getTileSetCoverage
Description copied from interface:ILcdEarthTileSet
Returns the tileset coverage with the specified name.- Specified by:
getTileSetCoverage
in interfaceILcdEarthTileSet
- Parameters:
aCoverageName
- the name of the coverage to look for- Returns:
- the tileset coverage with the specified name
-
updateTile
public void updateTile(ALcdEarthTile aTile, TLcdEarthTileOperationMode aMode, ILcdEarthTileSetCallback aCallback, Object aContext) Description copied from interface:ILcdEarthTileSet
Produces an updated version of the given tile, if necessary. Produces the same tile if the given tile is up to date.- Specified by:
updateTile
in interfaceILcdEarthTileSet
- Parameters:
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 any
-
updateTile
Description copied from interface:ILcdEarthTileSet
Returns an updated version of the specified tile.- Specified by:
updateTile
in interfaceILcdEarthTileSet
- Parameters:
aEarthTile
- the tile to checkaContext
- application-specific data to be used by the tileset, if any- Returns:
- the tile itself or a new, updated version
- Throws:
IOException
- if the tile cannot be updated
-
produceTile
public ALcdEarthTile produceTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aX, long aY, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, Object aContext) Description copied from interface:ILcdEarthTileSet
Gets a tile from the repository.- Specified by:
produceTile
in interfaceILcdEarthTileSet
- Parameters:
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 any- Returns:
- the requested tile, or null if the repository does not contain this tile
-
containsTile
public boolean containsTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aX, long aY, Object aContext) Description copied from interface:ILcdEarthTileSet
Returns true if the repository contains the specified tile.- Specified by:
containsTile
in interfaceILcdEarthTileSet
- Parameters:
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 any- Returns:
- true if the repository contains the requested tile
-
isGeoReferenceSupported
public boolean isGeoReferenceSupported(ILcdEarthTileSetCoverage aCoverage, ILcdGeoReference aGeoReference) Description copied from interface:ILcdEarthTileSet
Returns true if the tileset can produce tiles for the given coverage in the given reference system. Note that any reference other than the native reference may result in reduced performance.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.- Specified by:
isGeoReferenceSupported
in interfaceILcdEarthTileSet
- Parameters:
aCoverage
- the coverage to check foraGeoReference
- the reference to check for- Returns:
- true if the given coverage can be queried with the given reference
-
isFormatSupported
Description copied from interface:ILcdEarthTileSet
Returns true if the tileset can produce tiles for the given coverage in the given format. Note that any format other than the native format may result in reduced performance.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.- Specified by:
isFormatSupported
in interfaceILcdEarthTileSet
- Parameters:
aCoverage
- the coverage to check foraFormat
- the format to check for- Returns:
- true if the given coverage can be queried with the given format
-