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.