All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
te::rp::ArithmeticOperations Class Reference

Performs arithmetic operation over raster data. More...

#include <ArithmeticOperations.h>

Inheritance diagram for te::rp::ArithmeticOperations:
te::rp::Algorithm

Classes

class  ExecStackElement
 Execution stack element. More...
 
class  InputParameters
 ArithmeticOperations input parameters. More...
 
class  OutputParameters
 ArithmeticOperations output parameters. More...
 

Public Member Functions

 ArithmeticOperations ()
 
bool execute (AlgorithmOutputParameters &outputParams) throw ( te::rp::Exception )
 Executes the algorithm using the supplied parameters. More...
 
bool initialize (const AlgorithmInputParameters &inputParams) throw ( te::rp::Exception )
 Initialize the algorithm instance making it ready for execution. More...
 
bool isInitialized () const
 Returns true if the algorithm instance is initialized and ready for execution. More...
 
void reset () throw ( te::rp::Exception )
 Clear all internal allocated objects and reset the algorithm to its initial state. More...
 
 ~ArithmeticOperations ()
 

Protected Types

typedef std::stack
< ExecStackElement
ExecStackT
 Execution stack type definition. More...
 

Protected Member Functions

bool allocResultRaster (unsigned int nLines, unsigned int nCols, boost::shared_ptr< te::rst::Raster > &rasterPtr) const
 Allocate a new RAM memory raster. More...
 
bool execBinaryOperator (const std::string &token, ExecStackT &execStack, bool generateOutput) const
 Execute the given binary operator using the current given execution stack. More...
 
bool execUnaryOperator (const std::string &token, ExecStackT &execStack, bool generateOutput) const
 Execute the given unary operator using the current given execution stack. More...
 
bool executeString (const std::string &aStr, std::vector< boost::shared_ptr< te::rst::Raster > > inRasters, boost::shared_ptr< te::rst::Raster > &outRaster, bool generateOutput) const
 Execute the automata parsing the given input string. More...
 
void getTokensStrs (const std::string &inputStr, std::vector< std::string > &outTokens) const
 Split the input string into a vector of token strings. More...
 
void inFix2PostFix (const std::vector< std::string > &input, std::vector< std::string > &output) const
 Convert the input tokens vector from the infix notation to postfix notation. More...
 
bool isBinaryOperator (const std::string &inputToken) const
 Returns true if the given token is a binary operator. More...
 
bool isOperator (const std::string &inputToken) const
 Returns true if the given token is an operator. More...
 
bool isRasterBandToken (const std::string &token, unsigned int &rasterIdx, unsigned int &bandIdx) const
 Returns true if the given token is a raster data token. More...
 
bool isRealNumberToken (const std::string &token, double &realValue) const
 Returns true if the given token is a real number. More...
 
bool isUnaryOperator (const std::string &inputToken) const
 Returns true if the given token is a unary operator. More...
 
bool op1HasGreaterOrEqualPrecedence (const std::string &operator1, const std::string &operator2) const
 Returns true if operator1 has greater of equal precedence over operator2. More...
 
void printTokens (const std::vector< std::string > &input) const
 Print tokens to stout. More...
 

Protected Attributes

ArithmeticOperations::InputParameters m_inputParameters
 Input execution parameters. More...
 
bool m_isInitialized
 Tells if this instance is initialized. More...
 

Detailed Description

Performs arithmetic operation over raster data.

The expression (arithmetic stringIt) must be formed by a combination of the following elements, separated by spaces:

Operators: +, -, *, /

Real Numbers (negative numbers must follow the form "-1.0")

Raster bands: R0:1, R0:1, R1:0, .... (R0:1 is a reference to the first raster - with index 0 - from feeder, second band - with index 1).

Note
Reference: TerraLib 4 - Image Processing Module

Definition at line 65 of file ArithmeticOperations.h.

Member Typedef Documentation

Execution stack type definition.

Definition at line 174 of file ArithmeticOperations.h.

Constructor & Destructor Documentation

te::rp::ArithmeticOperations::ArithmeticOperations ( )

Definition at line 123 of file ArithmeticOperations.cpp.

References reset().

te::rp::ArithmeticOperations::~ArithmeticOperations ( )

Definition at line 128 of file ArithmeticOperations.cpp.

Member Function Documentation

bool te::rp::ArithmeticOperations::allocResultRaster ( unsigned int  nLines,
unsigned int  nCols,
boost::shared_ptr< te::rst::Raster > &  rasterPtr 
) const
protected

Allocate a new RAM memory raster.

Parameters
nLinesNumber of raster lines.
nColsNumber of raster columns.
rasterPtrThe output raster pointer.
Returns
Returns true if OK, false on errors.

Definition at line 1058 of file ArithmeticOperations.cpp.

References te::common::Convert2String(), te::dt::DOUBLE_TYPE, and te::rst::RasterFactory::make().

Referenced by execBinaryOperator().

bool te::rp::ArithmeticOperations::execBinaryOperator ( const std::string &  token,
ExecStackT execStack,
bool  generateOutput 
) const
protected

Execute the given binary operator using the current given execution stack.

Parameters
tokenOperator token.
execStackExecution stack.
generateOutputif true the execution will generate valid output data, if false only dummy stack elements will be generated.
Returns
true if OK, false on errors..

Definition at line 553 of file ArithmeticOperations.cpp.

References allocResultRaster(), te::rst::Raster::getValue(), te::rp::ArithmeticOperations::ExecStackElement::m_isRaster, te::rp::ArithmeticOperations::ExecStackElement::m_isRealNumber, te::rp::ArithmeticOperations::ExecStackElement::m_raster, te::rp::ArithmeticOperations::ExecStackElement::m_rasterBand, te::rp::ArithmeticOperations::ExecStackElement::m_realNumberValue, te::rst::Raster::setValue(), TERP_LOG_AND_RETURN_FALSE, and TERP_TRUE_OR_RETURN_FALSE.

Referenced by executeString().

bool te::rp::ArithmeticOperations::execUnaryOperator ( const std::string &  token,
ExecStackT execStack,
bool  generateOutput 
) const
protected

Execute the given unary operator using the current given execution stack.

Parameters
tokenOperator token.
execStackExecution stack.
generateOutputif true the execution will generate valid output data, if false only dummy stack elements will be generated.
Returns
true if OK, false on errors..

Definition at line 1025 of file ArithmeticOperations.cpp.

Referenced by executeString().

bool te::rp::ArithmeticOperations::executeString ( const std::string &  aStr,
std::vector< boost::shared_ptr< te::rst::Raster > >  inRasters,
boost::shared_ptr< te::rst::Raster > &  outRaster,
bool  generateOutput 
) const
protected

Execute the automata parsing the given input string.

Parameters
aStrThe input arithmetic expression string.
inRastersInput rasters pointers.
outRasterOutput raster pointer (pre-initiated).
generateOutputIf true, the output raster data will be generated, if false only the automata execution will be performed..

Definition at line 334 of file ArithmeticOperations.cpp.

References execBinaryOperator(), execUnaryOperator(), getTokensStrs(), inFix2PostFix(), isBinaryOperator(), isRasterBandToken(), isRealNumberToken(), isUnaryOperator(), te::rp::ArithmeticOperations::ExecStackElement::m_isRaster, te::rp::ArithmeticOperations::ExecStackElement::m_isRealNumber, te::rp::ArithmeticOperations::ExecStackElement::m_raster, te::rp::ArithmeticOperations::ExecStackElement::m_rasterBand, te::rp::ArithmeticOperations::ExecStackElement::m_realNumberValue, TERP_LOG_AND_RETURN_FALSE, and TERP_TRUE_OR_RETURN_FALSE.

Referenced by execute(), and initialize().

void te::rp::ArithmeticOperations::getTokensStrs ( const std::string &  inputStr,
std::vector< std::string > &  outTokens 
) const
protected

Split the input string into a vector of token strings.

Parameters
inputStrThe input string.
outTokensThe generated output tokens vector.

Definition at line 1073 of file ArithmeticOperations.cpp.

References isOperator().

Referenced by executeString().

void te::rp::ArithmeticOperations::inFix2PostFix ( const std::vector< std::string > &  input,
std::vector< std::string > &  output 
) const
protected

Convert the input tokens vector from the infix notation to postfix notation.

Parameters
inputThe input tokens vector.
outputThe output tokens vector.

Definition at line 405 of file ArithmeticOperations.cpp.

References isOperator(), and op1HasGreaterOrEqualPrecedence().

Referenced by executeString().

bool te::rp::ArithmeticOperations::initialize ( const AlgorithmInputParameters inputParams)
throw (te::rp::Exception
)
virtual

Initialize the algorithm instance making it ready for execution.

Parameters
inputParamsInput parameters.
Returns
true if OK, false on errors.
Note
A return error string can be obtained via te::rp::Module::getLastLogStr()

Implements te::rp::Algorithm.

Definition at line 285 of file ArithmeticOperations.cpp.

References executeString(), te::rp::ArithmeticOperations::InputParameters::m_arithmeticString, m_inputParameters, m_isInitialized, te::rp::ArithmeticOperations::InputParameters::m_rasterVec, reset(), TERP_TRUE_OR_RETURN_FALSE, and TERP_TRUE_OR_THROW.

Referenced by te::qt::widgets::ArithmeticOpWizard::execute().

bool te::rp::ArithmeticOperations::isBinaryOperator ( const std::string &  inputToken) const
protected

Returns true if the given token is a binary operator.

Parameters
inputTokenInput token.
Returns
Returns true if the given token is a binary operator.

Definition at line 485 of file ArithmeticOperations.cpp.

Referenced by executeString(), and isOperator().

bool te::rp::ArithmeticOperations::isInitialized ( ) const
virtual

Returns true if the algorithm instance is initialized and ready for execution.

Returns
true if the algorithm instance is initialized and ready for execution.

Implements te::rp::Algorithm.

Definition at line 329 of file ArithmeticOperations.cpp.

References m_isInitialized.

bool te::rp::ArithmeticOperations::isOperator ( const std::string &  inputToken) const
protected

Returns true if the given token is an operator.

Parameters
inputTokenInput token.
Returns
Returns true if the given token is an operator.

Definition at line 479 of file ArithmeticOperations.cpp.

References isBinaryOperator(), and isUnaryOperator().

Referenced by execute(), getTokensStrs(), and inFix2PostFix().

bool te::rp::ArithmeticOperations::isRasterBandToken ( const std::string &  token,
unsigned int &  rasterIdx,
unsigned int &  bandIdx 
) const
protected

Returns true if the given token is a raster data token.

Parameters
tokenInput token.
rasterIdxThe output converted raster index value.
bandIdxThe output converted band index value.
Returns
Returns true if the given token is a raster data token.

Definition at line 515 of file ArithmeticOperations.cpp.

Referenced by executeString().

bool te::rp::ArithmeticOperations::isRealNumberToken ( const std::string &  token,
double &  realValue 
) const
protected

Returns true if the given token is a real number.

Parameters
tokenInput token.
realValueThe output converted value.
Returns
Returns true if the given token is a real number.

Definition at line 1031 of file ArithmeticOperations.cpp.

Referenced by executeString().

bool te::rp::ArithmeticOperations::isUnaryOperator ( const std::string &  inputToken) const
protected

Returns true if the given token is a unary operator.

Parameters
inputTokenInput token.
Returns
Returns true if the given token is a unary operator.

Definition at line 492 of file ArithmeticOperations.cpp.

Referenced by executeString(), and isOperator().

bool te::rp::ArithmeticOperations::op1HasGreaterOrEqualPrecedence ( const std::string &  operator1,
const std::string &  operator2 
) const
protected

Returns true if operator1 has greater of equal precedence over operator2.

Parameters
operator1Operator1 input token.
operator2Operator2 input token.
Returns
Returns true if operator1 has greater of equal precedence over operator2.

Definition at line 497 of file ArithmeticOperations.cpp.

Referenced by inFix2PostFix().

void te::rp::ArithmeticOperations::printTokens ( const std::vector< std::string > &  input) const
protected

Print tokens to stout.

Parameters
inputThe input tokens vector.

Definition at line 467 of file ArithmeticOperations.cpp.

Member Data Documentation

ArithmeticOperations::InputParameters te::rp::ArithmeticOperations::m_inputParameters
protected

Input execution parameters.

Definition at line 176 of file ArithmeticOperations.h.

Referenced by execute(), initialize(), and reset().

bool te::rp::ArithmeticOperations::m_isInitialized
protected

Tells if this instance is initialized.

Definition at line 178 of file ArithmeticOperations.h.

Referenced by execute(), initialize(), isInitialized(), and reset().


The documentation for this class was generated from the following files: