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"   114             AbstractParameters* clone() const;
   144             AbstractParameters* clone() const;
   160         bool isInitialized() const;
   193               : m_isRaster(false), m_isRealNumber(false), m_isBinaryOp(false), m_isUnaryOp(false),
   194               m_realNumberValue(0), m_rasterBand(0), m_rasterNPtr(0), m_binaryOp(
""), m_unaryOp(
"")
   200               : m_isRaster(false), m_isRealNumber(false), m_isBinaryOp(false), m_isUnaryOp(false),
   201               m_realNumberValue(0), m_rasterBand(0), m_rasterNPtr(0), m_binaryOp(
""), m_unaryOp(
"")
   229           double& outputValue ) 
const;
   240         inline void additionBinOp( 
const double& inputValue1, 
const double& inputValue2,
   241           double& outputValue )
 const { outputValue = inputValue1 + inputValue2; }
   247           double& outputValue )
 const { outputValue = inputValue1 - inputValue2; }
   253           double& outputValue )
 const { outputValue = inputValue1 * inputValue2; }
   258         inline void divisionBinOp( 
const double& inputValue1, 
const double& inputValue2,
   259           double& outputValue )
 const {
   260           ( inputValue2 == 0.0 ) ? ( outputValue = 0 ) 
   261           : ( outputValue = inputValue1 / inputValue2 ); 
   268           double& outputValue )
 const { outputValue = pow(inputValue1, inputValue2); }
   274           double& outputValue)
 const { outputValue = sqrt(inputValue); }
   280           double& outputValue)
 const { outputValue = sin(inputValue); }
   286           double& outputValue)
 const { outputValue = asin(inputValue); }
   292           double& outputValue)
 const { outputValue = cos(inputValue); }
   298           double& outputValue)
 const { outputValue = acos(inputValue); }
   304           double& outputValue)
 const { outputValue = log10(inputValue); }
   310           double& outputValue)
 const { outputValue = tan(inputValue); }
   316           double& outputValue)
 const { outputValue = atan(inputValue); }
   322           double& outputValue)
 const { outputValue = log(inputValue); }
   332         bool executeString( 
const std::string& aStr, 
   333           const std::vector< te::rst::Raster* >& inRasters,
   334           std::unique_ptr<te::rst::Raster>& outRaster,
   343         void inFix2PostFix( 
const std::vector< std::string >& input, 
   344           std::vector< std::string >& output ) 
const;
   350         void printTokens( 
const std::vector< std::string >& input ) 
const;        
   357         bool isOperator( 
const std::string& inputToken ) 
const;
   364         bool isBinaryOperator( 
const std::string& inputToken ) 
const;
   371         bool isUnaryOperator( 
const std::string& inputToken ) 
const;
   379         bool op1HasGreaterOrEqualPrecedence( 
const std::string& operator1, 
   380           const std::string& operator2 ) 
const;
   389         bool isRasterBandToken( 
const std::string& token, 
unsigned int& rasterIdx,
   390           unsigned int& bandIdx ) 
const;
   399         bool execBinaryOperator( 
const std::string& token, ExecStackT& 
   400           execStack, 
bool generateOutput ) 
const;
   412         bool execBinaryOperatorRasterXRaster( 
const te::rst::Raster& inRaster1, 
   414           const unsigned int band2,
   415           const BinOpFuncPtrT binOptFunctPtr,
   416           std::unique_ptr<te::rst::Raster>& outRasterPtr ) 
const; 
   428           const unsigned int bandIdx, 
const double value, 
   429           const BinOpFuncPtrT binOptFunctPtr,
   430           std::unique_ptr<te::rst::Raster>& outRasterPtr,
   431           const bool realNumberIsRigthtTerm ) 
const;  
   440         bool execUnaryOperator( 
const std::string& token, ExecStackT& 
   441           execStack, 
bool generateOutput ) 
const;
   452           const unsigned int band, 
const UnaryOpFuncPtrT unaryOptFunctPtr,
   453           std::unique_ptr<te::rst::Raster>& outRasterPtr) 
const;
   462         bool execUnaryOperatorReal(
const double value,
   463           const UnaryOpFuncPtrT unaryOptFunctPtr,
   464           std::unique_ptr<te::rst::Raster>& outRasterPtr,
   465           const bool realNumberIsRigthtTerm) 
const;
   473         bool isRealNumberToken( 
const std::string& token, 
double& realValue ) 
const;
   482           std::unique_ptr<te::rst::Raster>& rasterPtr ) 
const;
   489         void getTokensStrs( 
const std::string& inputStr,
   490           std::vector< std::string >& outTokens ) 
const;
   495 #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. 
 
std::string m_binaryOp
Binary operator. 
 
void exponencialBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Exponencial binary operator function. 
 
void cosUnaryOp(const double &inputValue, double &outputValue) const
Cosine unary operator function. 
 
bool m_isBinaryOp
true if this is a binary operator pointer element. 
 
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). 
 
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. 
 
void additionBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Addition binary operator function. 
 
void subtractionBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Subtraction binary operator function. 
 
std::stack< ExecStackElement > ExecStackT
Execution stack type definition. 
 
void acosUnaryOp(const double &inputValue, double &outputValue) const
Arc cosine unary operator function. 
 
void tanUnaryOp(const double &inputValue, double &outputValue) const
Tangent unary operator function. 
 
Raster Processing algorithm base interface. 
 
An abstract class for raster data strucutures. 
 
bool m_isUnaryOp
true if this is a unary operator pointer element. 
 
std::unique_ptr< te::rst::Raster > m_outputRasterPtr
The generated output registered raster. 
 
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. 
 
void asinUnaryOp(const double &inputValue, double &outputValue) const
Arc sine unary operator function. 
 
ExecStackElement & operator=(const ExecStackElement &rhs)
 
std::string m_unaryOp
Unary operator. 
 
void multiplicationBinOp(const double &inputValue1, const double &inputValue2, double &outputValue) const
Multiplication binary operator function. 
 
void atanUnaryOp(const double &inputValue, double &outputValue) const
Arc Tangent unary operator function. 
 
void logUnaryOp(const double &inputValue, double &outputValue) const
Common logarithm unary operator function. 
 
te::rst::Raster * m_rasterNPtr
Raster pointer. 
 
void sinUnaryOp(const double &inputValue, double &outputValue) const
Sine unary operator function. 
 
std::unique_ptr< te::rst::Raster > m_rasterHandler
Raster handler. 
 
unsigned int m_rasterBand
Raster band index. 
 
void lnUnaryOp(const double &inputValue, double &outputValue) const
unary operator function. 
 
void sqrtUnaryOp(const double &inputValue, double &outputValue) const
Square root unary operator function. 
 
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.