18#ifndef QGSRANDOMRASTERALGORITHM_H
19#define QGSRANDOMRASTERALGORITHM_H
32using namespace Qt::StringLiterals;
39 QString
group()
const final;
41 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
final;
48 virtual void addAlgorithmParams() = 0;
56 virtual bool prepareRandomParameters(
const QVariantMap ¶meters,
QgsProcessingContext &context ) = 0;
66 virtual long generateRandomLongValue( std::mt19937 &mersenneTwister ) = 0;
67 virtual double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) = 0;
72 double mPixelSize = 0;
77class QgsRandomUniformRasterAlgorithm :
public QgsRandomRasterAlgorithmBase
80 QgsRandomUniformRasterAlgorithm() =
default;
82 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomRaster.svg"_s ); }
83 QString name()
const override;
84 QString displayName()
const override;
85 QStringList tags()
const override;
86 QString shortHelpString()
const override;
87 QString shortDescription()
const override;
88 QgsRandomUniformRasterAlgorithm *createInstance() const override
SIP_FACTORY;
91 void addAlgorithmParams() final;
92 Qgis::DataType getRasterDataType(
int typeId ) final;
93 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
94 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
95 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
98 double mRandomUpperBound = 0;
99 double mRandomLowerBound = 0;
100 std::uniform_int_distribution<
long> mRandomUniformIntDistribution;
101 std::uniform_real_distribution<
double> mRandomUniformDoubleDistribution;
104class QgsRandomBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
107 QgsRandomBinomialRasterAlgorithm() =
default;
109 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomNormalRaster.svg"_s ); }
110 QString name()
const override;
111 QString displayName()
const override;
112 QStringList tags()
const override;
113 QString shortHelpString()
const override;
114 QString shortDescription()
const override;
115 QgsRandomBinomialRasterAlgorithm *createInstance() const override
SIP_FACTORY;
118 void addAlgorithmParams() final;
119 Qgis::DataType getRasterDataType(
int typeId ) final;
120 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
121 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
122 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
125 std::binomial_distribution<
long> mRandombinomialDistribution;
128class QgsRandomExponentialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
131 QgsRandomExponentialRasterAlgorithm() =
default;
133 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
134 QString name()
const override;
135 QString displayName()
const override;
136 QStringList tags()
const override;
137 QString shortHelpString()
const override;
138 QString shortDescription()
const override;
139 QgsRandomExponentialRasterAlgorithm *createInstance() const override
SIP_FACTORY;
142 void addAlgorithmParams() final;
143 Qgis::DataType getRasterDataType(
int typeId ) final;
144 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
145 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
146 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
149 std::exponential_distribution<
double> mRandomExponentialDistribution;
153class QgsRandomGammaRasterAlgorithm : public QgsRandomRasterAlgorithmBase
156 QgsRandomGammaRasterAlgorithm() =
default;
158 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomGammaRaster.svg"_s ); }
159 QString name()
const override;
160 QString displayName()
const override;
161 QStringList tags()
const override;
162 QString shortHelpString()
const override;
163 QString shortDescription()
const override;
164 QgsRandomGammaRasterAlgorithm *createInstance() const override
SIP_FACTORY;
167 void addAlgorithmParams() final;
168 Qgis::DataType getRasterDataType(
int typeId ) final;
169 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
170 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
171 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
174 std::gamma_distribution<
double> mRandomGammaDistribution;
177class QgsRandomGeometricRasterAlgorithm : public QgsRandomRasterAlgorithmBase
180 QgsRandomGeometricRasterAlgorithm() =
default;
182 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
183 QString name()
const override;
184 QString displayName()
const override;
185 QStringList tags()
const override;
186 QString shortHelpString()
const override;
187 QString shortDescription()
const override;
188 QgsRandomGeometricRasterAlgorithm *createInstance() const override
SIP_FACTORY;
191 void addAlgorithmParams() override;
192 Qgis::DataType getRasterDataType(
int typeId ) override;
193 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) override;
194 long generateRandomLongValue( std::mt19937 &mersenneTwister ) override;
195 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) override;
198 std::geometric_distribution<
long> mRandomGeometricDistribution;
202class QgsRandomNegativeBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
205 QgsRandomNegativeBinomialRasterAlgorithm() =
default;
207 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
208 QString name()
const override;
209 QString displayName()
const override;
210 QStringList tags()
const override;
211 QString shortHelpString()
const override;
212 QString shortDescription()
const override;
213 QgsRandomNegativeBinomialRasterAlgorithm *createInstance() const override
SIP_FACTORY;
216 void addAlgorithmParams() final;
217 Qgis::DataType getRasterDataType(
int typeId ) final;
218 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
219 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
220 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
223 std::negative_binomial_distribution<
long> mRandomNegativeBinomialDistribution;
226class QgsRandomNormalRasterAlgorithm : public QgsRandomRasterAlgorithmBase
229 QgsRandomNormalRasterAlgorithm() =
default;
231 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
232 QString name()
const override;
233 QString displayName()
const override;
234 QStringList tags()
const override;
235 QString shortHelpString()
const override;
236 QString shortDescription()
const override;
237 QgsRandomNormalRasterAlgorithm *createInstance() const override
SIP_FACTORY;
240 void addAlgorithmParams() final;
241 Qgis::DataType getRasterDataType(
int typeId ) final;
242 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
243 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
244 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
247 std::normal_distribution<
double> mRandomNormalDistribution;
250class QgsRandomPoissonRasterAlgorithm : public QgsRandomRasterAlgorithmBase
253 QgsRandomPoissonRasterAlgorithm() =
default;
255 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomPoissonRaster.svg"_s ); }
256 QString name()
const override;
257 QString displayName()
const override;
258 QStringList tags()
const override;
259 QString shortHelpString()
const override;
260 QString shortDescription()
const override;
261 QgsRandomPoissonRasterAlgorithm *createInstance() const override
SIP_FACTORY;
264 void addAlgorithmParams() final;
265 Qgis::DataType getRasterDataType(
int typeId ) final;
266 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
267 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
268 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
271 std::poisson_distribution<
long> mRandomPoissonDistribution;
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.