QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
analysis
raster
qgsrastercalcnode.h
Go to the documentation of this file.
1
/***************************************************************************
2
qgsrastercalcnode.h
3
Node for raster calculator tree
4
--------------------
5
begin : 2010-10-23
6
copyright : (C) 20010 by Marco Hugentobler
7
email : marco dot hugentobler at sourcepole dot ch
8
***************************************************************************/
9
10
/***************************************************************************
11
* *
12
* This program is free software; you can redistribute it and/or modify *
13
* it under the terms of the GNU General Public License as published by *
14
* the Free Software Foundation; either version 2 of the License, or *
15
* (at your option) any later version. *
16
* *
17
***************************************************************************/
18
19
#ifndef QGSRASTERCALCNODE_H
20
#define QGSRASTERCALCNODE_H
21
22
#include "
qgis.h
"
23
#include "qgis_analysis.h"
24
#include "
qgis_sip.h
"
25
26
#include <QMap>
27
#include <QString>
28
#include <QVector>
29
30
class
QgsRasterBlock
;
31
class
QgsRasterMatrix
;
32
38
class
ANALYSIS_EXPORT
QgsRasterCalcNode
39
{
40
public
:
42
enum
Type
43
{
44
tOperator
= 1,
45
tNumber
,
46
tRasterRef
,
47
tMatrix
,
48
tFunction
49
};
50
52
enum
Operator
53
{
54
opPLUS
,
55
opMINUS
,
56
opMUL
,
57
opDIV
,
58
opPOW
,
59
opSQRT
,
60
opSIN
,
61
opCOS
,
62
opTAN
,
63
opASIN
,
64
opACOS
,
65
opATAN
,
66
opEQ
,
67
opNE
,
68
opGT
,
69
opLT
,
70
opGE
,
71
opLE
,
72
opAND
,
73
opOR
,
74
opSIGN
,
75
opLOG
,
76
opLOG10
,
77
opABS
,
78
opMAX
,
79
opMIN
,
80
opNONE
,
81
};
82
83
QgsRasterCalcNode
() =
default
;
84
85
QgsRasterCalcNode
(
double
number );
86
QgsRasterCalcNode
(
QgsRasterMatrix
*matrix );
87
QgsRasterCalcNode
(
Operator
op,
QgsRasterCalcNode
*left,
QgsRasterCalcNode
*right );
89
QgsRasterCalcNode
( QString functionName, QVector<QgsRasterCalcNode *> functionArgs );
90
QgsRasterCalcNode
(
const
QString &rasterName );
91
~QgsRasterCalcNode
();
92
93
QgsRasterCalcNode
(
const
QgsRasterCalcNode
&rh ) =
delete
;
94
QgsRasterCalcNode
&
operator=
(
const
QgsRasterCalcNode
&rh ) =
delete
;
95
96
Type
type
()
const
{
return
mType; }
97
98
//set left node
99
void
setLeft
(
QgsRasterCalcNode
*left
SIP_TRANSFER
) { mLeft.reset( left ); }
100
void
setRight
(
QgsRasterCalcNode
*right
SIP_TRANSFER
) { mRight.reset( right ); }
101
110
bool
calculate( QMap<QString, QgsRasterBlock *> &rasterData,
QgsRasterMatrix
&result,
int
row = -1 ) const
SIP_SKIP
;
111
117
QString toString(
bool
cStyle = false ) const;
118
123
QList<const
QgsRasterCalcNode
*> findNodes( const
QgsRasterCalcNode
::Type type ) const;
124
125
static
QgsRasterCalcNode
*parseRasterCalcString( const QString &str, QString &parserErrorMsg )
SIP_FACTORY
;
126
132
QStringList referencedLayerNames() const;
133
138
QStringList cleanRasterReferences() const;
139
140
private:
141
#ifdef SIP_RUN
142
QgsRasterCalcNode
(
const
QgsRasterCalcNode
&rh );
143
#endif
144
149
QgsRasterMatrix
evaluateFunction(
const
std::vector<std::unique_ptr<QgsRasterMatrix>> &matrixVector,
QgsRasterMatrix
&result )
const
;
150
151
Type mType = tNumber;
152
std::unique_ptr<QgsRasterCalcNode> mLeft;
153
std::unique_ptr<QgsRasterCalcNode> mRight;
154
double
mNumber = 0;
155
QString mRasterName;
156
QgsRasterMatrix
*mMatrix =
nullptr
;
157
Operator mOperator = opNONE;
158
//added for the conditional statement
159
QString mFunctionName;
160
QVector<QgsRasterCalcNode *> mFunctionArgs;
161
};
162
163
164
#endif
// QGSRASTERCALCNODE_H
QgsRasterBlock
Raster data container.
Definition
qgsrasterblock.h:42
QgsRasterCalcNode
Represents a node in a raster calculator.
Definition
qgsrastercalcnode.h:39
QgsRasterCalcNode::setLeft
void setLeft(QgsRasterCalcNode *left)
Definition
qgsrastercalcnode.h:99
QgsRasterCalcNode::Operator
Operator
possible operators
Definition
qgsrastercalcnode.h:53
QgsRasterCalcNode::opGE
@ opGE
>=
Definition
qgsrastercalcnode.h:70
QgsRasterCalcNode::opGT
@ opGT
Definition
qgsrastercalcnode.h:68
QgsRasterCalcNode::opMAX
@ opMAX
Definition
qgsrastercalcnode.h:78
QgsRasterCalcNode::opLOG
@ opLOG
Definition
qgsrastercalcnode.h:75
QgsRasterCalcNode::opABS
@ opABS
Definition
qgsrastercalcnode.h:77
QgsRasterCalcNode::opEQ
@ opEQ
=
Definition
qgsrastercalcnode.h:66
QgsRasterCalcNode::opASIN
@ opASIN
Definition
qgsrastercalcnode.h:63
QgsRasterCalcNode::opSIGN
@ opSIGN
Change sign.
Definition
qgsrastercalcnode.h:74
QgsRasterCalcNode::opNONE
@ opNONE
Definition
qgsrastercalcnode.h:80
QgsRasterCalcNode::opMINUS
@ opMINUS
Definition
qgsrastercalcnode.h:55
QgsRasterCalcNode::opLOG10
@ opLOG10
Definition
qgsrastercalcnode.h:76
QgsRasterCalcNode::opNE
@ opNE
!=
Definition
qgsrastercalcnode.h:67
QgsRasterCalcNode::opLT
@ opLT
<
Definition
qgsrastercalcnode.h:69
QgsRasterCalcNode::opOR
@ opOR
Definition
qgsrastercalcnode.h:73
QgsRasterCalcNode::opSIN
@ opSIN
Definition
qgsrastercalcnode.h:60
QgsRasterCalcNode::opAND
@ opAND
Definition
qgsrastercalcnode.h:72
QgsRasterCalcNode::opMIN
@ opMIN
Definition
qgsrastercalcnode.h:79
QgsRasterCalcNode::opATAN
@ opATAN
Definition
qgsrastercalcnode.h:65
QgsRasterCalcNode::opLE
@ opLE
<=
Definition
qgsrastercalcnode.h:71
QgsRasterCalcNode::opPOW
@ opPOW
Definition
qgsrastercalcnode.h:58
QgsRasterCalcNode::opPLUS
@ opPLUS
Definition
qgsrastercalcnode.h:54
QgsRasterCalcNode::opSQRT
@ opSQRT
Definition
qgsrastercalcnode.h:59
QgsRasterCalcNode::opACOS
@ opACOS
Definition
qgsrastercalcnode.h:64
QgsRasterCalcNode::opTAN
@ opTAN
Definition
qgsrastercalcnode.h:62
QgsRasterCalcNode::opMUL
@ opMUL
Definition
qgsrastercalcnode.h:56
QgsRasterCalcNode::opDIV
@ opDIV
Definition
qgsrastercalcnode.h:57
QgsRasterCalcNode::opCOS
@ opCOS
Definition
qgsrastercalcnode.h:61
QgsRasterCalcNode::QgsRasterCalcNode
QgsRasterCalcNode()=default
QgsRasterCalcNode::QgsRasterCalcNode
QgsRasterCalcNode(const QgsRasterCalcNode &rh)=delete
QgsRasterCalcNode::operator=
QgsRasterCalcNode & operator=(const QgsRasterCalcNode &rh)=delete
QgsRasterCalcNode::type
Type type() const
Definition
qgsrastercalcnode.h:96
QgsRasterCalcNode::setRight
void setRight(QgsRasterCalcNode *right)
Definition
qgsrastercalcnode.h:100
QgsRasterCalcNode::Type
Type
defines possible types of node
Definition
qgsrastercalcnode.h:43
QgsRasterCalcNode::tFunction
@ tFunction
Definition
qgsrastercalcnode.h:48
QgsRasterCalcNode::tNumber
@ tNumber
Definition
qgsrastercalcnode.h:45
QgsRasterCalcNode::tRasterRef
@ tRasterRef
Definition
qgsrastercalcnode.h:46
QgsRasterCalcNode::tOperator
@ tOperator
Definition
qgsrastercalcnode.h:44
QgsRasterCalcNode::tMatrix
@ tMatrix
Definition
qgsrastercalcnode.h:47
QgsRasterMatrix
Represents a matrix in a raster calculator operation.
Definition
qgsrastermatrix.h:30
qgis.h
qgis_sip.h
SIP_SKIP
#define SIP_SKIP
Definition
qgis_sip.h:138
SIP_TRANSFER
#define SIP_TRANSFER
Definition
qgis_sip.h:35
SIP_FACTORY
#define SIP_FACTORY
Definition
qgis_sip.h:83
Generated on
for QGIS API Documentation by
1.17.0