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