20#ifndef __TERRALIB_RP_INTERNAL_COMPOSER_H
21#define __TERRALIB_RP_INTERNAL_COMPOSER_H
36#include <boost/ptr_container/ptr_vector.hpp>
91 const std::vector< unsigned int >& raster1Bands,
93 const std::vector< unsigned int >& raster2Bands,
95 const std::vector< unsigned int >& raster3Bands,
98 const double& noDataValue,
99 const bool forceRaster1NoDataValue,
100 const bool forceRaster2NoDataValue,
101 const std::vector< double >& pixelOffsets1,
102 const std::vector< double >& pixelScales1,
103 const std::vector< double >& pixelOffsets2,
104 const std::vector< double >& pixelScales2,
105 const unsigned int threadsNumber,
106 const bool enableProgressInterface,
108 const bool enableRasterCache );
120 double*
const values )
123 m_rulePtr->getComposedValues( line, col, values );
It interpolates one pixel based on a selected algorithm.
#define TERP_DEBUG_TRUE_OR_THROW(value, message)
Checks if value is true and throws an exception if not.
MultiPolygon is a MultiSurface whose elements are Polygons.
A point with x and y coordinate values.
Polygon is a subclass of CurvePolygon whose rings are defined by linear rings.
An access synchronizer to be used in SynchronizedRaster raster instances.
Polygon tile indexing class for optmized geometrical relational tests.
The parameters passed to composeIntoRaster1Thread method.
std::vector< unsigned int > const * m_raster3BandsPtr
Input raster 3 band indexes to use (this vector has the same size as raster1Bands).
std::vector< double > const * m_pixelScales2Ptr
The values scale to be applied to raster 2 pixel values before the composeed value calcule (one eleme...
te::rst::RasterSynchronizer * m_sync1Ptr
Raster 1 syncronizer pointer.
std::vector< double > const * m_pixelScales1Ptr
The values scale to be applied to raster 1 pixel values before the composeed value calcule (one eleme...
std::vector< unsigned int > const * m_raster2BandsPtr
Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
ComposeIntoRaster3ThreadParams(const ComposeIntoRaster3ThreadParams &)
te::rst::Interpolator::Method m_interpMethod2
The interpolation method to use when reading raster 2 data.
bool m_forceRaster1NoDataValue
Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignor...
std::condition_variable * m_blockProcessedSignalPtr
Signal used to update the main process progress update.
unsigned long int m_maxRasterCachedBlocks
The maximum number of raster cache blocks.
std::vector< double > const * m_pixelOffsets1Ptr
The values offset to be applied to raster 1 pixel values before the composeed value calcule (one elem...
ComposerRule const * m_rulePtr
unsigned int * m_processedBlocksNmbPtr
std::mutex * m_blockProcessedSignalMutexPtr
Mutex used to update the main process progress update.
~ComposeIntoRaster3ThreadParams()
ComposeIntoRaster3ThreadParams()
std::vector< unsigned int > const * m_raster1BandsPtr
Input raster 1 band indexes to use.
std::vector< double > const * m_pixelOffsets2Ptr
The values offset to be applied to raster 2 pixel values before the composeed value calcule (one elem...
unsigned int * m_runningThreadsCounterPtr
a pointer to the running threads counter.
te::rst::RasterSynchronizer * m_sync2Ptr
Raster 2 syncronizer pointer.
bool m_forceRaster2NoDataValue
Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignor...
bool m_useProgress
If enabled each thread will use its own progress interface, if false only a signal will be emitted on...
double m_noDataValue
The value returned where there is no pixel data bo compose.
te::rst::RasterSynchronizer * m_sync3Ptr
Raster 3 syncronizer pointer.
bool * m_returnValuePtr
A pointer to the threadreturn value.
bool * m_abortValuePtr
A pointer to the abort execution value.
ComposeIntoRaster3ThreadParams & operator=(const ComposeIntoRaster3ThreadParams &)
std::vector< RasterBlockInfo > * m_raster3BlocksInfosPtr
blocks to process.
te::rst::Interpolator::Method m_interpMethod1
The interpolation method to use when reading raster 2 data.
std::mutex * m_mutexPtr
mutex pointer.
te::rst::Interpolator::Method m_interpMethod1
The interpolation method to use when reading raster 1 data.
te::rst::Raster * m_raster3Ptr
Raster 3.
te::rst::Interpolator::Method m_interpMethod2
The interpolation method to use when reading raster 2 data.
void clear()
Clear all internal allocated resources.
const std::string & getErrorMessage() const
Return the current error message if there is any.
std::vector< unsigned int > m_raster2Bands
Input raster 2 band indexes to use.
te::rst::Raster const * m_raster1Ptr
Raster 1.
void initState()
Reset the instance to its initial default state.
bool composeIntoRaster3()
Execute a composition of the given input rasters and write the result into raster 3.
bool m_forceRaster2NoDataValue
Use noDataValue as the input raster 2 no-data value (The original rasters no-data values will be igno...
unsigned int m_threadsNumber
The number of threads to use (0:automatic , 1:disabled, any other integer dictates the number of thre...
std::vector< double > m_pixelScales2
The values scale to be applied to raster 2 pixel values before the composeed value calcule (one eleme...
std::vector< double > m_pixelScales1
The values scale to be applied to raster 1 pixel values before the composeed value calcule (one eleme...
std::string m_errorMessage
Current error message.
std::vector< double > m_pixelOffsets2
The values offset to be applied to raster 2 pixel values before the composeed value calcule (one elem...
bool m_enableRasterCache
enable/disable the use of raster cache.
Composer(const Composer &other)
bool m_enableProgressInterface
Enable progress interface.
void getComposedValues(const double &line, const double &col, double *const values)
Compose a pixel value using the current parameters.
std::vector< unsigned int > m_raster1Bands
Input raster 1 band indexes to use.
std::vector< double > m_pixelOffsets1
The values offset to be applied to raster 1 pixel values before the composeed value calcule (one elem...
void setErrorMessage(const std::string &newErrorMessage)
Set the current error message.
bool initialize(te::rst::Raster &raster1, const std::vector< unsigned int > &raster1Bands, const te::rst::Raster &raster2, const std::vector< unsigned int > &raster2Bands, te::rst::Raster &raster3, const std::vector< unsigned int > &raster3Bands, const te::rst::Interpolator::Method &interpMethod1, const te::rst::Interpolator::Method &interpMethod2, const double &noDataValue, const bool forceRaster1NoDataValue, const bool forceRaster2NoDataValue, const std::vector< double > &pixelOffsets1, const std::vector< double > &pixelScales1, const std::vector< double > &pixelOffsets2, const std::vector< double > &pixelScales2, const unsigned int threadsNumber, const bool enableProgressInterface, ComposerRule const *const rulePtr, const bool enableRasterCache)
Inititate the composer instance.
std::vector< unsigned int > m_raster3Bands
Input raster 3 band indexes to use.
Composer & operator=(const Composer &other)
std::unique_ptr< ComposerRule > m_rulePtr
Composer rule pointer.
bool m_forceRaster1NoDataValue
Use noDataValue as the input raster 1 no-data value (The original rasters no-data values will be igno...
double m_outputNoDataValue
The output raster no-data value.
te::rst::Raster const * m_raster2Ptr
Raster 2.
static void composeIntoRaster3Thread(ComposeIntoRaster3ThreadParams *paramsPtr)
Thread entry for the method composeIntoRaster1.
InterpolationMethod Method
Allowed interpolation methods.
An access synchronizer to be used in SynchronizedRaster raster instances.
An abstract class for raster data strucutures.
Namespace for Raster Processing module of TerraLib.
A rectified grid is the spatial support for raster data.
An abstract class for raster data strucutures.
unsigned int m_rasterRows2ProcessBound
unsigned int m_firstRasterRow2Process
unsigned int m_blkTotalPixelsNumber
unsigned int m_firstRasterCol2Process
unsigned int m_rasterCols2ProcessBound
Configuration flags for the Raster Processing module of TerraLib.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.