Class TLcdEarthAssetTerrainElevationTileSet

java.lang.Object
com.luciad.earth.tileset.ALcdEarthTileSet
com.luciad.earth.tileset.terrain.TLcdEarthAssetTerrainElevationTileSet
All Implemented Interfaces:
ILcdEarthTileSet, ILcdBounded, ILcdDisposable, AutoCloseable

public class TLcdEarthAssetTerrainElevationTileSet extends ALcdEarthTileSet
A tileset that generates elevation based tiles for an asset model.

This tileset provides similar functionality as the TLcdEarthTerrainElevationTileSet/TLcdEarthTerrainHeightTileSet but uses a model with ILcdEarthAssets instead of a ALcdEarthTerrainElevationProvider/ILcdHeightProvider to compute elevation values.

To produce or update a tile only the assets that have ILcdEarthTileSetCoverage.CoverageType.ELEVATION as coverage type and overlap with the tile are used. The models of these assets are decoded lazily using their model decoder and the order of the overlapping assets is determined using their natural ordering.

Changes to the asset model are taken into account in subsequent produced or updated tiles.

This class is thread-safe.

Since:
9.1
See Also:
  • Constructor Details

    • TLcdEarthAssetTerrainElevationTileSet

      public TLcdEarthAssetTerrainElevationTileSet(ILcdBounds aBounds, int aLevels, long aLevel0RowCount, long aLevel0ColCount, int aGeometryTileResolution, int aImageTileResolution, ILcdGeoReference aTileSetReference, ILcdModel aAssetModel)
      Constructs a TLcdEarthAssetTerrainElevationTileSet with the specified settings.
      Parameters:
      aBounds - the bounds of the tile set in the model reference
      aLevels - the number of tile levels
      aLevel0RowCount - the number of tile rows at level 0
      aLevel0ColCount - the number of tile columns at level 0
      aGeometryTileResolution - the resolution of the produced geometry tiles
      aImageTileResolution - the resolution of the produced image tiles
      aTileSetReference - the model reference
      aAssetModel - the asset model
  • Method Details

    • setModelDecoderFactory

      public void setModelDecoderFactory(ILcdEarthModelDecoderFactory aModelDecoderFactory)
      Sets the model decoder factory to use for decoding the assets.

      When set, model decoders will be created through this factory, rather than retrieved from the assets themselves.

      Parameters:
      aModelDecoderFactory - the model decoder factory
    • getModelDecoderFactory

      public ILcdEarthModelDecoderFactory getModelDecoderFactory()
      Returns the model decoder factory used for decoding assets.
      Returns:
      the model decoder factory.
      See Also:
    • setModelHeightProviderFactory

      public void setModelHeightProviderFactory(ILcdModelHeightProviderFactory aModelHeightProviderFactory)
      Sets the model height provider factory to use for retrieving heights from models.

      When set, heights will be obtained through the height providers created by this factory, rather than retrieved using the default elevation provider.

      Parameters:
      aModelHeightProviderFactory - the height provider factory
    • getModelHeightProviderFactory

      public ILcdModelHeightProviderFactory getModelHeightProviderFactory()
      Returns the model height provider factory to use for retrieving heights from models.
      Returns:
      the model height provider factory.
      See Also:
    • getTerrainElevationTileSet

      public TLcdEarthTerrainElevationTileSet getTerrainElevationTileSet()
      Returns the TLcdEarthTerrainElevationTileSet that is used to generate the tiles.
      Returns:
      the TLcdEarthTerrainElevationTileSet that is used to generate the tiles.
    • 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 interface ILcdDisposable
      Specified by:
      dispose in interface ILcdEarthTileSet
      Overrides:
      dispose in class ALcdEarthTileSet
    • 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's 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.

      Parameters:
      aCoverage - the coverage from which the tile is requested
      aLevel - the level from which the tile is requested
      aTileX - the column index of the requested tile
      aTileY - the row index of the requested tile
      aGeoReference - the reference system in which the tile should be returned
      aFormat - the desired format of the tile's data
      aMode - controls the synchronous or asynchronous behaviour of the tileset
      aCallback - will be invoked when the tile is available to be used
      aContext - application-specific data to be used by the tileset, if any
    • produceTile

      public ALcdEarthTile produceTile(ILcdEarthTileSetCoverage aCoverage, int aLevel, long aX, long aY, ILcdGeoReference aGeoReference, TLcdEarthTileFormat aFormat, Object aContext) throws IOException
      Description copied from interface: ILcdEarthTileSet
      Gets a tile from the repository.
      Specified by:
      produceTile in interface ILcdEarthTileSet
      Overrides:
      produceTile in class ALcdEarthTileSet
      Parameters:
      aCoverage - the coverage from which to query a tile
      aLevel - the detail level for which to query a tile
      aX - the column index at which to query a tile
      aY - the row index at which to query a tile
      aGeoReference - the georeference of the requested tile
      aFormat - the format of the requested tile
      aContext - 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
      Throws:
      IOException - if the tile cannot be produced
    • 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 interface ILcdEarthTileSet
      Overrides:
      updateTile in class ALcdEarthTileSet
      Parameters:
      aTile - tile to check
      aMode - controls the synchronous or asynchronous behaviour of the tileset
      aCallback - will be invoked when the tile is available to be used
      aContext - application-specific data to be used by the tileset, if any
    • updateTile

      public ALcdEarthTile updateTile(ALcdEarthTile aEarthTile, Object aContext) throws IOException
      Description copied from interface: ILcdEarthTileSet
      Returns an updated version of the specified tile.
      Specified by:
      updateTile in interface ILcdEarthTileSet
      Overrides:
      updateTile in class ALcdEarthTileSet
      Parameters:
      aEarthTile - the tile to check
      aContext - 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
    • 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 interface ILcdEarthTileSet
      Overrides:
      containsTile in class ALcdEarthTileSet
      Parameters:
      aCoverage - the coverage from which to query a tile
      aLevel - the detail level for which to query a tile
      aX - the column index at which to query a tile
      aY - the row index at which to query a tile
      aContext - application-specific data to be used by the tileset, if any
      Returns:
      true if the repository contains the requested tile
    • 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. If 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.
      Specified by:
      cancelTile in interface ILcdEarthTileSet
      Overrides:
      cancelTile in class ALcdEarthTileSet
      Parameters:
      aLevel - the level from which the tile is requested
      aTileX - the column index of the requested tile
      aTileY - the row index of the requested tile
      aCoverage - the coverage from which the tile is requested
      aGeoReference - the reference system in which the tile is requested
      aFormat - the format in which the tile is requested
      aCallback - would be invoked when the tile would have been available to be used
      aContext - application-specific data to be used by the tileset, if any
    • isGeoReferenceSupported

      public boolean isGeoReferenceSupported(ILcdEarthTileSetCoverage aCoverage, ILcdGeoReference aGeoReference)
      Description copied from class: ALcdEarthTileSet
      Returns true only for the coverage's native georeference.
      Specified by:
      isGeoReferenceSupported in interface ILcdEarthTileSet
      Overrides:
      isGeoReferenceSupported in class ALcdEarthTileSet
      Parameters:
      aCoverage - the coverage to check for
      aGeoReference - the reference to check for
      Returns:
      true if the given coverage can be queried with the given reference
    • isFormatSupported

      public boolean isFormatSupported(ILcdEarthTileSetCoverage aCoverage, TLcdEarthTileFormat aFormat)
      Description copied from class: ALcdEarthTileSet
      Returns true only for the coverage's native format.
      Specified by:
      isFormatSupported in interface ILcdEarthTileSet
      Overrides:
      isFormatSupported in class ALcdEarthTileSet
      Parameters:
      aCoverage - the coverage to check for
      aFormat - the format to check for
      Returns:
      true if the given coverage can be queried with the given format
    • getTileSetCoverage

      public ILcdEarthTileSetCoverage getTileSetCoverage(String aCoverageName)
      Description copied from interface: ILcdEarthTileSet
      Returns the tileset coverage with the specified name.
      Specified by:
      getTileSetCoverage in interface ILcdEarthTileSet
      Overrides:
      getTileSetCoverage in class ALcdEarthTileSet
      Parameters:
      aCoverageName - the name of the coverage to look for
      Returns:
      the tileset coverage with the specified name
    • containsTileSetCoverage

      public boolean containsTileSetCoverage(String aCoverageName)
      Description copied from interface: ILcdEarthTileSet
      Returns true if the repository contains a coverage with the specified name.
      Specified by:
      containsTileSetCoverage in interface ILcdEarthTileSet
      Overrides:
      containsTileSetCoverage in class ALcdEarthTileSet
      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

      public ILcdEarthTileSetCoverage getTileSetCoverage(int aIndex)
      Description copied from interface: ILcdEarthTileSet
      Returns the coverage at the specified index.
      Parameters:
      aIndex - the index of the coverage to return
      Returns:
      the requested ILcdEarthTileSetCoverage
    • getTileSetCoverageCount

      public int getTileSetCoverageCount()
      Description copied from interface: ILcdEarthTileSet
      Returns the number of coverages this tileset contains.
      Returns:
      the number of coverages this tileset contains
    • getBounds

      public ILcdBounds 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.
      Returns:
      the bounds of this tile set
      See Also: