QGIS API Documentation 3.99.0-Master (c22de0620c0)
Loading...
Searching...
No Matches
qgsalgorithmrandomraster.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsalgorithmrandomraster.h
3 ---------------------
4 begin : May 2020
5 copyright : (C) 2020 by Clemens Raffler
6 email : clemens dot raffler at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSRANDOMRASTERALGORITHM_H
19#define QGSRANDOMRASTERALGORITHM_H
20
21
22#include <random>
23
24#include "qgis_sip.h"
25#include "qgsapplication.h"
27
28#include <QString>
29
30#define SIP_NO_FILE
31
32using namespace Qt::StringLiterals;
33
35
36class QgsRandomRasterAlgorithmBase : public QgsProcessingAlgorithm
37{
38 public:
39 QString group() const final;
40 QString groupId() const final;
41 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) final;
42
43 protected:
48 virtual void addAlgorithmParams() = 0;
49
50 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
51
55 virtual Qgis::DataType getRasterDataType( int typeId ) = 0;
56 virtual bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) = 0;
57
61 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
62
66 virtual long generateRandomLongValue( std::mt19937 &mersenneTwister ) = 0;
67 virtual double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) = 0;
68
69 private:
70 QgsRectangle mExtent;
72 double mPixelSize = 0;
74};
75
76
77class QgsRandomUniformRasterAlgorithm : public QgsRandomRasterAlgorithmBase
78{
79 public:
80 QgsRandomUniformRasterAlgorithm() = default;
81 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomRaster.svg"_s ); }
82 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomRaster.svg"_s ); }
83 QString name() const override;
84 QString displayName() const override;
85 QStringList tags() const override;
86 QString shortHelpString() const override;
87 QString shortDescription() const override;
88 QgsRandomUniformRasterAlgorithm *createInstance() const override SIP_FACTORY;
89
90 protected:
91 void addAlgorithmParams() final;
92 Qgis::DataType getRasterDataType( int typeId ) final;
93 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
94 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
95 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
96
97 private:
98 double mRandomUpperBound = 0;
99 double mRandomLowerBound = 0;
100 std::uniform_int_distribution<long> mRandomUniformIntDistribution;
101 std::uniform_real_distribution<double> mRandomUniformDoubleDistribution;
102};
103
104class QgsRandomBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
105{
106 public:
107 QgsRandomBinomialRasterAlgorithm() = default;
108 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
109 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomNormalRaster.svg"_s ); }
110 QString name() const override;
111 QString displayName() const override;
112 QStringList tags() const override;
113 QString shortHelpString() const override;
114 QString shortDescription() const override;
115 QgsRandomBinomialRasterAlgorithm *createInstance() const override SIP_FACTORY;
116
117 protected:
118 void addAlgorithmParams() final;
119 Qgis::DataType getRasterDataType( int typeId ) final;
120 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
121 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
122 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
123
124 private:
125 std::binomial_distribution<long> mRandombinomialDistribution;
126};
127
128class QgsRandomExponentialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
129{
130 public:
131 QgsRandomExponentialRasterAlgorithm() = default;
132 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
133 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
134 QString name() const override;
135 QString displayName() const override;
136 QStringList tags() const override;
137 QString shortHelpString() const override;
138 QString shortDescription() const override;
139 QgsRandomExponentialRasterAlgorithm *createInstance() const override SIP_FACTORY;
140
141 protected:
142 void addAlgorithmParams() final;
143 Qgis::DataType getRasterDataType( int typeId ) final;
144 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
145 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
146 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
147
148 private:
149 std::exponential_distribution<double> mRandomExponentialDistribution;
150};
151
152
153class QgsRandomGammaRasterAlgorithm : public QgsRandomRasterAlgorithmBase
154{
155 public:
156 QgsRandomGammaRasterAlgorithm() = default;
157 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomGammaRaster.svg"_s ); }
158 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomGammaRaster.svg"_s ); }
159 QString name() const override;
160 QString displayName() const override;
161 QStringList tags() const override;
162 QString shortHelpString() const override;
163 QString shortDescription() const override;
164 QgsRandomGammaRasterAlgorithm *createInstance() const override SIP_FACTORY;
165
166 protected:
167 void addAlgorithmParams() final;
168 Qgis::DataType getRasterDataType( int typeId ) final;
169 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
170 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
171 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
172
173 private:
174 std::gamma_distribution<double> mRandomGammaDistribution;
175};
176
177class QgsRandomGeometricRasterAlgorithm : public QgsRandomRasterAlgorithmBase
178{
179 public:
180 QgsRandomGeometricRasterAlgorithm() = default;
181 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
182 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
183 QString name() const override;
184 QString displayName() const override;
185 QStringList tags() const override;
186 QString shortHelpString() const override;
187 QString shortDescription() const override;
188 QgsRandomGeometricRasterAlgorithm *createInstance() const override SIP_FACTORY;
189
190 protected:
191 void addAlgorithmParams() override;
192 Qgis::DataType getRasterDataType( int typeId ) override;
193 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) override;
194 long generateRandomLongValue( std::mt19937 &mersenneTwister ) override;
195 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) override;
196
197 private:
198 std::geometric_distribution<long> mRandomGeometricDistribution;
199};
200
201
202class QgsRandomNegativeBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
203{
204 public:
205 QgsRandomNegativeBinomialRasterAlgorithm() = default;
206 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
207 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
208 QString name() const override;
209 QString displayName() const override;
210 QStringList tags() const override;
211 QString shortHelpString() const override;
212 QString shortDescription() const override;
213 QgsRandomNegativeBinomialRasterAlgorithm *createInstance() const override SIP_FACTORY;
214
215 protected:
216 void addAlgorithmParams() final;
217 Qgis::DataType getRasterDataType( int typeId ) final;
218 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
219 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
220 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
221
222 private:
223 std::negative_binomial_distribution<long> mRandomNegativeBinomialDistribution;
224};
225
226class QgsRandomNormalRasterAlgorithm : public QgsRandomRasterAlgorithmBase
227{
228 public:
229 QgsRandomNormalRasterAlgorithm() = default;
230 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
231 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
232 QString name() const override;
233 QString displayName() const override;
234 QStringList tags() const override;
235 QString shortHelpString() const override;
236 QString shortDescription() const override;
237 QgsRandomNormalRasterAlgorithm *createInstance() const override SIP_FACTORY;
238
239 protected:
240 void addAlgorithmParams() final;
241 Qgis::DataType getRasterDataType( int typeId ) final;
242 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
243 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
244 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
245
246 private:
247 std::normal_distribution<double> mRandomNormalDistribution;
248};
249
250class QgsRandomPoissonRasterAlgorithm : public QgsRandomRasterAlgorithmBase
251{
252 public:
253 QgsRandomPoissonRasterAlgorithm() = default;
254 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomPoissonRaster.svg"_s ); }
255 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomPoissonRaster.svg"_s ); }
256 QString name() const override;
257 QString displayName() const override;
258 QStringList tags() const override;
259 QString shortHelpString() const override;
260 QString shortDescription() const override;
261 QgsRandomPoissonRasterAlgorithm *createInstance() const override SIP_FACTORY;
262
263 protected:
264 void addAlgorithmParams() final;
265 Qgis::DataType getRasterDataType( int typeId ) final;
266 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
267 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
268 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
269
270 private:
271 std::poisson_distribution<long> mRandomPoissonDistribution;
272};
273
274
276
277#endif // QGSRANDOMRASTERALGORITHM_H
DataType
Raster data types.
Definition qgis.h:390
@ UnknownDataType
Unknown or unspecified type.
Definition qgis.h:391
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
static QString iconPath(const QString &iconFile)
Returns path to the desired icon file.
Represents a coordinate reference system (CRS).
Abstract base class for processing algorithms.
virtual QString group() const
Returns the name of the group this algorithm belongs to.
virtual bool prepareAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback)
Prepares the algorithm to run using the specified parameters.
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
virtual QVariantMap processAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback)=0
Runs the algorithm using the specified parameters.
virtual void initAlgorithm(const QVariantMap &configuration=QVariantMap())=0
Initializes the algorithm using the specified configuration.
Contains information about the context in which a processing algorithm is executed.
Base class for providing feedback from a processing algorithm.
A rectangle specified with double values.
#define SIP_FACTORY
Definition qgis_sip.h:83