25 #ifndef __TERRALIB_RP_INTERNAL_ARITHMETICOPERATIONS_H
26 #define __TERRALIB_RP_INTERNAL_ARITHMETICOPERATIONS_H
29 #include "../raster/Grid.h"
30 #include "../raster/Interpolator.h"
31 #include "../common/progress/TaskProgress.h"
101 AbstractParameters* clone() const;
125 void reset() throw(
te::rp::Exception );
131 AbstractParameters* clone() const;
139 bool execute( AlgorithmOutputParameters& outputParams ) throw(
te::rp::Exception );
142 void reset() throw(
te::rp::Exception );
147 bool isInitialized() const;
172 : m_isRaster( false ), m_isRealNumber( false ), m_realNumberValue( 0 ),
173 m_rasterBand( 0 ), m_rasterNPtr( 0 )
179 : m_isRaster( false ), m_isRealNumber( false ), m_realNumberValue( 0 ),
180 m_rasterBand( 0 ), m_rasterNPtr( 0 )
204 double& outputValue )
const;
213 inline void additionBinOp(
const double& inputValue1,
const double& inputValue2,
214 double& outputValue )
const { outputValue = inputValue1 + inputValue2; };
220 double& outputValue )
const { outputValue = inputValue1 - inputValue2; };
226 double& outputValue )
const { outputValue = inputValue1 * inputValue2; };
231 inline void divisionBinOp(
const double& inputValue1,
const double& inputValue2,
232 double& outputValue )
const { ( inputValue2 == 0.0 ) ? ( outputValue = 0 )
233 : ( outputValue = inputValue1 / inputValue2 ); };
243 bool executeString(
const std::string& aStr,
244 const std::vector< te::rst::Raster* >& inRasters,
245 std::auto_ptr<te::rst::Raster>& outRaster,
254 void inFix2PostFix(
const std::vector< std::string >& input,
255 std::vector< std::string >& output )
const;
261 void printTokens(
const std::vector< std::string >& input )
const;
268 bool isOperator(
const std::string& inputToken )
const;
275 bool isBinaryOperator(
const std::string& inputToken )
const;
282 bool isUnaryOperator(
const std::string& inputToken )
const;
290 bool op1HasGreaterOrEqualPrecedence(
const std::string& operator1,
291 const std::string& operator2 )
const;
300 bool isRasterBandToken(
const std::string& token,
unsigned int& rasterIdx,
301 unsigned int& bandIdx )
const;
310 bool execBinaryOperator(
const std::string& token, ExecStackT&
311 execStack,
bool generateOutput )
const;
323 bool execBinaryOperatorRasterXRaster(
const te::rst::Raster& inRaster1,
325 const unsigned int band2,
326 const BinOpFuncPtrT binOptFunctPtr,
327 std::auto_ptr<te::rst::Raster>& outRasterPtr )
const;
339 const unsigned int bandIdx,
const double value,
340 const BinOpFuncPtrT binOptFunctPtr,
341 std::auto_ptr<te::rst::Raster>& outRasterPtr,
342 const bool realNumberIsRigthtTerm )
const;
351 bool execUnaryOperator(
const std::string& token, ExecStackT&
352 execStack,
bool generateOutput )
const;
360 bool isRealNumberToken(
const std::string& token,
double& realValue )
const;
369 std::auto_ptr<te::rst::Raster>& rasterPtr )
const;
376 void getTokensStrs(
const std::string& inputStr,
377 std::vector< std::string >& outTokens )
const;
382 #endif // __TERRALIB_RP_INTERNAL_ARITHMETICOPERATIONS_H
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
void divisionBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Division binary operator function.
Base exception class for plugin module.
bool m_isInitialized
Tells if this instance is initialized.
This class can be used to inform the progress of a task.
Raster Processing algorithm output parameters base interface.
ArithmeticOperations::InputParameters m_inputParameters
Input execution parameters.
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
TEDATAACCESSEXPORT te::da::Expression * operator==(const te::da::Expression &e1, const te::da::Expression &e2)
double m_realNumberValue
Real number value.
Raster Processing algorithm base interface class.
InterpolationMethod
Allowed interpolation methods.
bool m_isRaster
true if this is a raster pointer element.
std::stack< ExecStackElement > ExecStackT
Execution stack type definition.
std::auto_ptr< te::rst::Raster > m_rasterHandler
Raster handler.
Raster Processing algorithm base interface.
An abstract class for raster data strucutures.
ExecStackElement(const ExecStackElement &rhs)
ArithmeticOperations output parameters.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
te::rst::Raster * m_rasterNPtr
Raster pointer.
std::auto_ptr< te::rst::Raster > m_outputRasterPtr
The generated output registered raster.
void subtractionBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Subtraction binary operator function.
unsigned int m_rasterBand
Raster band index.
Performs arithmetic operation over raster data.
A rectified grid is the spatial support for raster data.
bool m_isRealNumber
true if this is a real number element.
void multiplicationBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Multiplication binary operator function.
ExecStackElement & operator==(const ExecStackElement &rhs)
void additionBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Addition binary operator function.