QGIS API Documentation 3.99.0-Master (357b655ed83)
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#define SIP_NO_FILE
22
23#include <random>
24
25#include "qgis_sip.h"
26#include "qgsapplication.h"
28
29#include <QString>
30
31using namespace Qt::StringLiterals;
32
34
35class QgsRandomRasterAlgorithmBase : public QgsProcessingAlgorithm
36{
37 public:
38 QString group() const final;
39 QString groupId() const final;
40 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) final;
41
42 protected:
47 virtual void addAlgorithmParams() = 0;
48
49 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
50
54 virtual Qgis::DataType getRasterDataType( int typeId ) = 0;
55 virtual bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) = 0;
56
60 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
61
65 virtual long generateRandomLongValue( std::mt19937 &mersenneTwister ) = 0;
66 virtual double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) = 0;
67
68 private:
69 QgsRectangle mExtent;
71 double mPixelSize = 0;
73};
74
75
76class QgsRandomUniformRasterAlgorithm : public QgsRandomRasterAlgorithmBase
77{
78 public:
79 QgsRandomUniformRasterAlgorithm() = default;
80 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomRaster.svg"_s ); }
81 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomRaster.svg"_s ); }
82 QString name() const override;
83 QString displayName() const override;
84 QStringList tags() const override;
85 QString shortHelpString() const override;
86 QString shortDescription() const override;
87 QgsRandomUniformRasterAlgorithm *createInstance() const override SIP_FACTORY;
88
89 protected:
90 void addAlgorithmParams() final;
91 Qgis::DataType getRasterDataType( int typeId ) final;
92 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
93 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
94 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
95
96 private:
97 double mRandomUpperBound = 0;
98 double mRandomLowerBound = 0;
99 std::uniform_int_distribution<long> mRandomUniformIntDistribution;
100 std::uniform_real_distribution<double> mRandomUniformDoubleDistribution;
101};
102
103class QgsRandomBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
104{
105 public:
106 QgsRandomBinomialRasterAlgorithm() = default;
107 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
108 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomNormalRaster.svg"_s ); }
109 QString name() const override;
110 QString displayName() const override;
111 QStringList tags() const override;
112 QString shortHelpString() const override;
113 QString shortDescription() const override;
114 QgsRandomBinomialRasterAlgorithm *createInstance() const override SIP_FACTORY;
115
116 protected:
117 void addAlgorithmParams() final;
118 Qgis::DataType getRasterDataType( int typeId ) final;
119 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
120 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
121 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
122
123 private:
124 std::binomial_distribution<long> mRandombinomialDistribution;
125};
126
127class QgsRandomExponentialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
128{
129 public:
130 QgsRandomExponentialRasterAlgorithm() = default;
131 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
132 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
133 QString name() const override;
134 QString displayName() const override;
135 QStringList tags() const override;
136 QString shortHelpString() const override;
137 QString shortDescription() const override;
138 QgsRandomExponentialRasterAlgorithm *createInstance() const override SIP_FACTORY;
139
140 protected:
141 void addAlgorithmParams() final;
142 Qgis::DataType getRasterDataType( int typeId ) final;
143 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
144 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
145 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
146
147 private:
148 std::exponential_distribution<double> mRandomExponentialDistribution;
149};
150
151
152class QgsRandomGammaRasterAlgorithm : public QgsRandomRasterAlgorithmBase
153{
154 public:
155 QgsRandomGammaRasterAlgorithm() = default;
156 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomGammaRaster.svg"_s ); }
157 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomGammaRaster.svg"_s ); }
158 QString name() const override;
159 QString displayName() const override;
160 QStringList tags() const override;
161 QString shortHelpString() const override;
162 QString shortDescription() const override;
163 QgsRandomGammaRasterAlgorithm *createInstance() const override SIP_FACTORY;
164
165 protected:
166 void addAlgorithmParams() final;
167 Qgis::DataType getRasterDataType( int typeId ) final;
168 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
169 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
170 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
171
172 private:
173 std::gamma_distribution<double> mRandomGammaDistribution;
174};
175
176class QgsRandomGeometricRasterAlgorithm : public QgsRandomRasterAlgorithmBase
177{
178 public:
179 QgsRandomGeometricRasterAlgorithm() = default;
180 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
181 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
182 QString name() const override;
183 QString displayName() const override;
184 QStringList tags() const override;
185 QString shortHelpString() const override;
186 QString shortDescription() const override;
187 QgsRandomGeometricRasterAlgorithm *createInstance() const override SIP_FACTORY;
188
189 protected:
190 void addAlgorithmParams() override;
191 Qgis::DataType getRasterDataType( int typeId ) override;
192 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) override;
193 long generateRandomLongValue( std::mt19937 &mersenneTwister ) override;
194 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) override;
195
196 private:
197 std::geometric_distribution<long> mRandomGeometricDistribution;
198};
199
200
201class QgsRandomNegativeBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
202{
203 public:
204 QgsRandomNegativeBinomialRasterAlgorithm() = default;
205 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
206 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
207 QString name() const override;
208 QString displayName() const override;
209 QStringList tags() const override;
210 QString shortHelpString() const override;
211 QString shortDescription() const override;
212 QgsRandomNegativeBinomialRasterAlgorithm *createInstance() const override SIP_FACTORY;
213
214 protected:
215 void addAlgorithmParams() final;
216 Qgis::DataType getRasterDataType( int typeId ) final;
217 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
218 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
219 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
220
221 private:
222 std::negative_binomial_distribution<long> mRandomNegativeBinomialDistribution;
223};
224
225class QgsRandomNormalRasterAlgorithm : public QgsRandomRasterAlgorithmBase
226{
227 public:
228 QgsRandomNormalRasterAlgorithm() = default;
229 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
230 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
231 QString name() const override;
232 QString displayName() const override;
233 QStringList tags() const override;
234 QString shortHelpString() const override;
235 QString shortDescription() const override;
236 QgsRandomNormalRasterAlgorithm *createInstance() const override SIP_FACTORY;
237
238 protected:
239 void addAlgorithmParams() final;
240 Qgis::DataType getRasterDataType( int typeId ) final;
241 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
242 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
243 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
244
245 private:
246 std::normal_distribution<double> mRandomNormalDistribution;
247};
248
249class QgsRandomPoissonRasterAlgorithm : public QgsRandomRasterAlgorithmBase
250{
251 public:
252 QgsRandomPoissonRasterAlgorithm() = default;
253 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmRandomPoissonRaster.svg"_s ); }
254 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmRandomPoissonRaster.svg"_s ); }
255 QString name() const override;
256 QString displayName() const override;
257 QStringList tags() const override;
258 QString shortHelpString() const override;
259 QString shortDescription() const override;
260 QgsRandomPoissonRasterAlgorithm *createInstance() const override SIP_FACTORY;
261
262 protected:
263 void addAlgorithmParams() final;
264 Qgis::DataType getRasterDataType( int typeId ) final;
265 bool prepareRandomParameters( const QVariantMap &parameters, QgsProcessingContext &context ) final;
266 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
267 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
268
269 private:
270 std::poisson_distribution<long> mRandomPoissonDistribution;
271};
272
273
275
276#endif // QGSRANDOMRASTERALGORITHM_H
DataType
Raster data types.
Definition qgis.h:379
@ UnknownDataType
Unknown or unspecified type.
Definition qgis.h:380
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:84