iLand
devstageout.h
Go to the documentation of this file.
1#ifndef DEVSTAGEOUT_H
2#define DEVSTAGEOUT_H
3
4#include <QObject>
5#include <QJSValue>
6
7#include "expression.h"
8#include "output.h"
9#include "grid.h"
10
11class Tree; // forward
12class ResourceUnit; // forward
13
14class DevStageCell; // forward
15class DevStageOut : public Output
16{
17public:
19 virtual void exec();
20 virtual void setup();
21private:
22 void setupCategories();
24 void setupStockableArea();
25
26 void calculateDevStages();
27
28 // default model: classifcation of Zenner et al
29 int8_t runZennerModel();
30 Expression mFilter;
31
32 int mCellSize;
33 Grid<int8_t> mGrid;
34 Grid<uint16_t> mStockableArea;
35 QScopedPointer<DevStageCell> mCell;
36
37 double mTotalStockableArea;
38 QStringList mStages;
39 QStringList mColor;
40 QJSValue mEvalObj;
41 QJSValue mEvalFunc;
42 QJSValue mPostEvalFunc;
43 QJSValueList mEvalParam;
44
45 bool mRefreshCPA;
46 friend class DevStageCell;
47};
48
49
50class DevStageCell : public QObject
51{
52 Q_OBJECT
53 Q_PROPERTY(int x READ x)
54 Q_PROPERTY(int y READ y)
55 Q_PROPERTY(double DBHMax READ DBHMax)
56 Q_PROPERTY(double DBHMin READ DBHMin)
57 Q_PROPERTY(double DBHMean READ DBHMean)
58 Q_PROPERTY(double DBHMedian READ DBHMedian)
59 Q_PROPERTY(double HMax READ HMax)
60 Q_PROPERTY(double HMean READ HMean)
61 Q_PROPERTY(double HMedian READ HMedian)
62 Q_PROPERTY(double NQD READ NQD)
63 Q_PROPERTY(double deadwoodShare READ deadwoodShare)
64 Q_PROPERTY(double CPA READ CPA)
65 Q_PROPERTY(double N_ha READ N_ha)
66 Q_PROPERTY(double Pct_PMugo READ Pct_PMugo)
67
68public:
69 explicit DevStageCell(QObject *parent = nullptr);
71 void setObj(DevStageOut *dsc) { mOut = dsc; }
72 int loadTrees(int8_t *grid_ptr);
73 void calculateStats();
74
75 // Location of the pixel that is currently processed (by index, given by the grid)
76 int x() const {return mLocation.x(); }
77 int y() const { return mLocation.y(); }
78
79 double DBHMax() const { return sv.dbh_max; }
80 double DBHMin() const { return sv.dbh_min; }
81 double DBHMean() const { return sv.dbh_mean; }
82 double DBHMedian() const { return sv.dbh_median; }
83 double HMax() const { return sv.h_max; }
84 double HMean() const { return sv.h_mean; }
85 double HMedian() const { return sv.h_median; }
86 double N_ha() const { return sv.n_trees; }
88 double NQD() const { return sv.dbh_nqd; }
89
90 // other variables
91 double deadwoodShare();
92 double CPA();
93 double Pct_PMugo();
94
95
96public slots:
97 QJSValue grid();
98 Grid<double> *paintGrid(QString what, QStringList &names, QStringList &colors);
99signals:
100
101private:
102 DevStageOut *mOut;
103 QVector<const Tree*> mTrees;
104 QPoint mLocation; // current position (grid indices)
105 const ResourceUnit *mRU; // current resource unit
106 // individual variables that are available
107 struct SStandVars {
108 double dbh_max;
109 double dbh_mean;
110 double dbh_min;
111 double dbh_median;
112 double dbh_nqd;
113 double h_max;
114 double h_mean;
115 double h_median;
116 double n_trees;
117 } sv;
118
119 FloatGrid mCPA_grid;
120
121 // grid for painting
122 Grid<double> mPaintGrid;
123
124
125};
126
127#endif // DEVSTAGEOUT_H
Definition: devstageout.h:51
double CPA
crown projection area
Definition: devstageout.h:64
double Pct_PMugo
pct of the area covered by P. mugo
Definition: devstageout.h:66
DevStageCell(QObject *parent=nullptr)
Definition: devstageout.cpp:242
void setObj(DevStageOut *dsc)
Definition: devstageout.h:71
double CPA()
crown projection area
double Pct_PMugo()
% area covered by P. mugo
double DBHMax() const
Definition: devstageout.h:79
double DBHMean
Definition: devstageout.h:57
double N_ha
number of trees (>4m) per ha
Definition: devstageout.h:65
~DevStageCell()
Definition: devstageout.h:70
double NQD
Definition: devstageout.h:62
double DBHMedian() const
Definition: devstageout.h:82
double HMean
Definition: devstageout.h:60
double DBHMax
Definition: devstageout.h:55
double DBHMean() const
Definition: devstageout.h:81
void calculateStats()
Definition: devstageout.cpp:271
double NQD() const
DBH variation expressed as 100*interquartile distance/median.
Definition: devstageout.h:88
double deadwoodShare()
share of standing/lying deadwood relative to living biomass
double HMedian
Definition: devstageout.h:61
double N_ha() const
Definition: devstageout.h:86
int loadTrees(int8_t *grid_ptr)
Definition: devstageout.cpp:247
int y() const
Definition: devstageout.h:77
double DBHMedian
Definition: devstageout.h:58
double HMax() const
Definition: devstageout.h:83
double deadwoodShare
Definition: devstageout.h:63
double HMax
Definition: devstageout.h:59
double DBHMin() const
Definition: devstageout.h:80
int y
y position of the current cell (cell index)
Definition: devstageout.h:54
Grid< double > * paintGrid(QString what, QStringList &names, QStringList &colors)
function called from iLand visualization
Definition: devstageout.cpp:413
int x
x position of the current cell (cell index)
Definition: devstageout.h:53
int x() const
Definition: devstageout.h:76
double HMean() const
Definition: devstageout.h:84
double DBHMin
Definition: devstageout.h:56
double HMedian() const
Definition: devstageout.h:85
QJSValue grid()
return a copy of the underlying grid
Definition: devstageout.cpp:401
Definition: devstageout.h:16
virtual void exec()
main function that executes the output
Definition: devstageout.cpp:32
DevStageOut()
Definition: devstageout.cpp:17
virtual void setup()
setup() is called during project setup and can be ovveridden for specific setup
Definition: devstageout.cpp:84
An expression engine for mathematical expressions provided as strings.
Definition: expression.h:29
Grid class (template).
Definition: grid.h:44
The Output class abstracts output data (database, textbased, ...).
Definition: output.h:55
ResourceUnit is the spatial unit that encapsulates a forest stand and links to several environmental ...
Definition: resourceunit.h:49
A tree is the basic simulation entity of iLand and represents a single tree.
Definition: tree.h:44