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