18#ifndef QGSRANDOMRASTERALGORITHM_H
19#define QGSRANDOMRASTERALGORITHM_H
33 QString
group()
const final;
35 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
final;
42 virtual void addAlgorithmParams() = 0;
50 virtual bool prepareRandomParameters(
const QVariantMap ¶meters,
QgsProcessingContext &context ) = 0;
60 virtual long generateRandomLongValue( std::mt19937 &mersenneTwister ) = 0;
61 virtual double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) = 0;
66 double mPixelSize = 0;
71class QgsRandomUniformRasterAlgorithm :
public QgsRandomRasterAlgorithmBase
74 QgsRandomUniformRasterAlgorithm() =
default;
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;
85 void addAlgorithmParams() final;
86 Qgis::DataType getRasterDataType(
int typeId ) final;
87 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
88 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
89 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
92 double mRandomUpperBound = 0;
93 double mRandomLowerBound = 0;
94 std::uniform_int_distribution<
long> mRandomUniformIntDistribution;
95 std::uniform_real_distribution<
double> mRandomUniformDoubleDistribution;
98class QgsRandomBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
101 QgsRandomBinomialRasterAlgorithm() =
default;
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;
112 void addAlgorithmParams() final;
113 Qgis::DataType getRasterDataType(
int typeId ) final;
114 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
115 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
116 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
119 std::binomial_distribution<
long> mRandombinomialDistribution;
122class QgsRandomExponentialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
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;
136 void addAlgorithmParams() final;
137 Qgis::DataType getRasterDataType(
int typeId ) final;
138 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
139 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
140 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
143 std::exponential_distribution<
double> mRandomExponentialDistribution;
147class QgsRandomGammaRasterAlgorithm : public QgsRandomRasterAlgorithmBase
150 QgsRandomGammaRasterAlgorithm() =
default;
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;
161 void addAlgorithmParams() final;
162 Qgis::DataType getRasterDataType(
int typeId ) final;
163 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
164 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
165 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
168 std::gamma_distribution<
double> mRandomGammaDistribution;
171class QgsRandomGeometricRasterAlgorithm : public QgsRandomRasterAlgorithmBase
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;
185 void addAlgorithmParams() override;
186 Qgis::DataType getRasterDataType(
int typeId ) override;
187 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) override;
188 long generateRandomLongValue( std::mt19937 &mersenneTwister ) override;
189 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) override;
192 std::geometric_distribution<
long> mRandomGeometricDistribution;
196class QgsRandomNegativeBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
199 QgsRandomNegativeBinomialRasterAlgorithm() =
default;
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;
210 void addAlgorithmParams() final;
211 Qgis::DataType getRasterDataType(
int typeId ) final;
212 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
213 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
214 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
217 std::negative_binomial_distribution<
long> mRandomNegativeBinomialDistribution;
220class QgsRandomNormalRasterAlgorithm : public QgsRandomRasterAlgorithmBase
223 QgsRandomNormalRasterAlgorithm() =
default;
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;
234 void addAlgorithmParams() final;
235 Qgis::DataType getRasterDataType(
int typeId ) final;
236 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
237 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
238 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
241 std::normal_distribution<
double> mRandomNormalDistribution;
244class QgsRandomPoissonRasterAlgorithm : public QgsRandomRasterAlgorithmBase
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;
258 void addAlgorithmParams() final;
259 Qgis::DataType getRasterDataType(
int typeId ) final;
260 bool prepareRandomParameters( const QVariantMap ¶meters,
QgsProcessingContext &context ) final;
261 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
262 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
265 std::poisson_distribution<
long> mRandomPoissonDistribution;
Provides global constants and enumerations for use throughout the application.
DataType
Raster data types.
@ 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 ¶meters, 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 ¶meters, 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.