Class TLcdEarthCompositeTileSet

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

public class TLcdEarthCompositeTileSet extends ALcdEarthTileSet
Groups coverages from multiple ILcdEarthTileSet objects into one new tileset. The tilesets from which coverages are taken must all have the same tiling structure in order for them to be usable with TLcdEarthCompositeTileSet. The produceTile() method simply delegates to the tileset which originally contained the requested coverage.

This tileset is thread-safe for tile reading if the registered tilesets are too.

Since:
8.2
  • Constructor Details

    • TLcdEarthCompositeTileSet

      public TLcdEarthCompositeTileSet(ILcdBounds aBounds, int aLevels)
      Constructs a new TLcdEarthCompositeTileSet with the specified bounds and levelcount but a default number of rows and columns at level 0.
      Parameters:
      aBounds - the bounds of the tileset.
      aLevels - the number of levels.
    • TLcdEarthCompositeTileSet

      public TLcdEarthCompositeTileSet(ILcdBounds aBounds, int aLevels, long aLevel0Rows, long aLevel0Columns)
      Constructs a new TLcdEarthCompositeTileSet with the specified tile structure.
      Parameters:
      aBounds - the bounds of the tileset.
      aLevels - the number of levels.
      aLevel0Rows - the number of tile rows at level 0.
      aLevel0Columns - the number of tile columns at level 0.
  • Method Details

    • registerTileSet

      public void registerTileSet(ILcdEarthTileSet aTileSet)
      Registers all coverages of a tileset.
      Parameters:
      aTileSet - A tileset with a proper configuration (e.g. bounds, levels, tile counts).
      Throws:
      IllegalArgumentException - if the specified tileset does not have the same tile structure as this tileset or one of its coverages is already registered.
    • registerCoverage

      public void registerCoverage(ILcdEarthTileSet aTileSet, ILcdEarthTileSetCoverage aCoverage)
      Registers a single coverage of a tileset.
      Parameters:
      aTileSet - A tileset with a proper configuration.
      aCoverage - A coverage in the given tileset.
      Throws:
      IllegalArgumentException - if the specified tileset does not have the same tile structure as this tileset or the coverage is already registered.
      NullPointerException - if the specified coverage is null
    • canRegisterCoverage

      public boolean canRegisterCoverage(ILcdEarthTileSet aTileSet, ILcdEarthTileSetCoverage aCoverage)
      Returns whether a single coverage of a tileset can be registered.
      Parameters:
      aTileSet - A tileset with a proper configuration.
      aCoverage - A coverage in the given tileset.
      Returns:
      true if the specified tileset does has the same tile structure and this tileset and coverage are not yet registered; false otherwise.
      See Also:
    • unregisterTileSet

      public boolean unregisterTileSet(ILcdEarthTileSet aTileSet)
      Unregisters all coverages of a tileset.
      Parameters:
      aTileSet - A tileset.
      Returns:
      true if at least one coverage of the tileset was registered; false otherwise.
    • unregisterCoverage

      public boolean unregisterCoverage(ILcdEarthTileSet aTileSet, ILcdEarthTileSetCoverage aCoverage)
      Unregisters a single coverage of a tileset if it is currently registered.
      Parameters:
      aTileSet - A tileset.
      aCoverage - A coverage in the given tileset.
      Returns:
      true if the coverage was registered; false otherwise.
    • isCoverageRegistered

      public boolean isCoverageRegistered(ILcdEarthTileSet aTileSet, ILcdEarthTileSetCoverage aCoverage)
      Returns whether a coverage of a tileset is currently registered.
      Parameters:
      aTileSet - A tileset.
      aCoverage - A coverage in the given tileset.
      Returns:
      true if the coverage is registered; false otherwise.
    • getRegisteredTileSet

      public ILcdEarthTileSet getRegisteredTileSet(ILcdEarthTileSetCoverage aCoverage)
      Returns the tileset that is currently registered with a coverage.
      Parameters:
      aCoverage - A coverage in this tileset.
      Returns:
      the tileset that is registered with the coverage or null if the specified coverage is not of this tileset.
    • 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
    • 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
    • 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
    • dispose

      public void dispose()
      Disposes each of the registered tilesets.
      Specified by:
      dispose in interface ILcdDisposable
      Specified by:
      dispose in interface ILcdEarthTileSet
      Overrides:
      dispose in class ALcdEarthTileSet
    • 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:
    • 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
    • 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
    • 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