![]() |
LuciadCPillar 2024.1.05
|
This builder class allows to create a multi-level tiled raster model. More...
#include <luciad/models/rasters/MultilevelTiledRasterModelBuilder.h>
Public Member Functions | |
MultilevelTiledRasterModelBuilder (const MultilevelTiledRasterModelBuilder &other) | |
~MultilevelTiledRasterModelBuilder () | |
MultilevelTiledRasterModelBuilder & | addLevel (size_t tileWidthPixels, size_t tileHeightPixels, size_t columnCount, size_t rowCount, Bounds bounds) |
Adds a level of detail to the raster data structure. More... | |
MultilevelTiledRasterModelBuilder & | attributionProvider (std::shared_ptr< IMultilevelTiledAttributionProvider > attributionProvider) |
Sets the attribution provider for this model. More... | |
std::shared_ptr< IRasterModel > | build () |
Creates the raster model. More... | |
MultilevelTiledRasterModelBuilder & | dataBounds (Bounds bounds) |
Defines the extent of where actual data is a available. More... | |
MultilevelTiledRasterModelBuilder & | dataRetriever (std::shared_ptr< IMultilevelTiledRasterDataRetriever > dataRetriever) |
Defines the implementation to be used to retrieve the raster tile data. More... | |
MultilevelTiledRasterModelBuilder & | elevation () |
Marks this model as an elevation model. More... | |
MultilevelTiledRasterModelBuilder & | elevationNoDataValue (float noDataValue) |
Sets a no-data value for elevation data. More... | |
MultilevelTiledRasterModelBuilder & | enableInvalidation () |
Allows to create a raster model which can be invalidated. More... | |
MultilevelTiledRasterModelBuilder & | modelMetadata (ModelMetadata modelMetadata) |
Defines the model metadata. More... | |
MultilevelTiledRasterModelBuilder & | reference (std::shared_ptr< CoordinateReference > modelReference) |
Defines the reference in which the raster data is defined. More... | |
MultilevelTiledRasterModelBuilder & | samplingMode (RasterSamplingMode samplingMode) |
Defines the sampling mode of the data. More... | |
Static Public Member Functions | |
static MultilevelTiledRasterModelBuilder | newBuilder () |
Creates the builder class to create a raster model. More... | |
This builder class allows to create a multi-level tiled raster model.
The multi-level tile structure is defined by a reference and a number of levels where each level has a bounds and a number of columns and rows. The structure of the tiles is organized as follows:
(N,0,0)
on level N
is the top-left tile.The IMultilevelTiledRasterDataRetriever
interface allows to load the tile data, or it allows to indicate that there is no data available for a tile. The latter for example allows to create low resolution overlays on high resolution data.
The following figure shows how such a multi-level tile structure looks like.
This builder supports either imagery (RGBA) data or elevation data. The latter can be enabled by calling MultilevelTiledRasterModelBuilder::elevation
.
This article gives an example of how to use this class.
luciad::MultilevelTiledRasterModelBuilder::MultilevelTiledRasterModelBuilder | ( | const MultilevelTiledRasterModelBuilder & | other | ) |
luciad::MultilevelTiledRasterModelBuilder::~MultilevelTiledRasterModelBuilder | ( | ) |
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::addLevel | ( | size_t | tileWidthPixels, |
size_t | tileHeightPixels, | ||
size_t | columnCount, | ||
size_t | rowCount, | ||
Bounds | bounds | ||
) |
Adds a level of detail to the raster data structure.
At least 1 level must be created.
The order in which this method is called matters: it determines which level is added. The first call is for level 0 (the least detailed level), the second call for level 1, and so on..
All levels must be defined in the same reference.
tileWidthPixels | the width, in pixels, for a tile within the tiled structure. |
tileHeightPixels | the height, in pixels, for a tile within the tiled structure. |
columnCount | the number of columns within the tiled structure. |
rowCount | the number of rows within the tiled structure. |
bounds | the extent of the tiled structure. |
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::attributionProvider | ( | std::shared_ptr< IMultilevelTiledAttributionProvider > | attributionProvider | ) |
Sets the attribution provider for this model.
By default, no attribution provider is set.
attributionProvider | the attribution provider for the model. Can be nullptr . |
std::shared_ptr< IRasterModel > luciad::MultilevelTiledRasterModelBuilder::build | ( | ) |
Creates the raster model.
Mandatory information:
When calling the method MultilevelTiledRasterModelBuilder::dataBounds
the bounds must be contained within the bounds for every defined level.
luciad::LogicException
when the conditions to build the raster model are not met. MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::dataBounds | ( | Bounds | bounds | ) |
Defines the extent of where actual data is a available.
This information is optional. If not defined the extent of the data is assumed to be based the entire structure.
bounds | the extent of the 'actual' data. |
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::dataRetriever | ( | std::shared_ptr< IMultilevelTiledRasterDataRetriever > | dataRetriever | ) |
Defines the implementation to be used to retrieve the raster tile data.
This information is mandatory. A user implementation must be provided.
dataRetriever | the interface that is called to retrieve the raster tile data. Cannot be nullptr . |
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::elevation | ( | ) |
Marks this model as an elevation model.
If this method is called, the configured
IMultilevelTiledRasterDataRetriever
must return elevation data as well. See IMultilevelTiledRasterDataRetrieverCallback::onDataAvailable
and IMultilevelTiledRasterDataRetrieverCallback::onImageAvailable
for more information.
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::elevationNoDataValue | ( | float | noDataValue | ) |
Sets a no-data value for elevation data.
When the provided elevation data in IMultilevelTiledRasterDataRetrieverCallback
contains this value, it is interpreted as a no-data value. This means that consumers of the data will have information that no data is available at that location, and that they can choose an appropriate fallback. For example when terrain is visualized, it can decide to fall back on other elevation data when it encounters a no-data elevation value.
This method is optional.
This method must only be called when the elevation
method is also called. If not, the build
method will throw an exception.
noDataValue | the no-data value to use for elevation |
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::enableInvalidation | ( | ) |
Allows to create a raster model which can be invalidated.
By default raster models are created without invalidation.
Call this method when you need a raster model for which the content can change. Then a IRasterModel is created that returns true
for IRasterModel::canInvalidate
and for which you can call the method IRasterModel::invalidate
to indicate the content of the raster model has changed.
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::modelMetadata | ( | ModelMetadata | modelMetadata | ) |
Defines the model metadata.
This information is mandatory.
modelMetadata | the model metadata. |
|
static |
Creates the builder class to create a raster model.
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::reference | ( | std::shared_ptr< CoordinateReference > | modelReference | ) |
Defines the reference in which the raster data is defined.
This information is mandatory.
modelReference | the reference for the raster data. Cannot be nullptr . |
MultilevelTiledRasterModelBuilder & luciad::MultilevelTiledRasterModelBuilder::samplingMode | ( | RasterSamplingMode | samplingMode | ) |
Defines the sampling mode of the data.
This information is optional. The default value is Area
.
samplingMode | the sampling mode of the data. |