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