18#ifndef QGSRANDOMRASTERALGORITHM_H
19#define QGSRANDOMRASTERALGORITHM_H
31using namespace Qt::StringLiterals;
38 QString
group()
const final;
40 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
final;
47 virtual void addAlgorithmParams() = 0;
55 virtual bool prepareRandomParameters(
const QVariantMap ¶meters,
QgsProcessingContext &context ) = 0;
65 virtual long generateRandomLongValue( std::mt19937 &mersenneTwister ) = 0;
66 virtual double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) = 0;
71 double mPixelSize = 0;
76class QgsRandomUniformRasterAlgorithm :
public QgsRandomRasterAlgorithmBase
79 QgsRandomUniformRasterAlgorithm() =
default;
81 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomRaster.svg"_s ); }
82 QString name()
const override;
83 QString displayName()
const override;
84 QStringList tags()
const override;
85 QString shortHelpString()
const override;
86 QString shortDescription()
const override;
87 QgsRandomUniformRasterAlgorithm *createInstance() const override
SIP_FACTORY;
90 void addAlgorithmParams() final;
91 Qgis::DataType getRasterDataType(
int typeId ) final;
92 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
93 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
94 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
97 double mRandomUpperBound = 0;
98 double mRandomLowerBound = 0;
99 std::uniform_int_distribution<
long> mRandomUniformIntDistribution;
100 std::uniform_real_distribution<
double> mRandomUniformDoubleDistribution;
103class QgsRandomBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
106 QgsRandomBinomialRasterAlgorithm() =
default;
108 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomNormalRaster.svg"_s ); }
109 QString name()
const override;
110 QString displayName()
const override;
111 QStringList tags()
const override;
112 QString shortHelpString()
const override;
113 QString shortDescription()
const override;
114 QgsRandomBinomialRasterAlgorithm *createInstance() const override
SIP_FACTORY;
117 void addAlgorithmParams() final;
118 Qgis::DataType getRasterDataType(
int typeId ) final;
119 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
120 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
121 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
124 std::binomial_distribution<
long> mRandombinomialDistribution;
127class QgsRandomExponentialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
130 QgsRandomExponentialRasterAlgorithm() =
default;
132 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
133 QString name()
const override;
134 QString displayName()
const override;
135 QStringList tags()
const override;
136 QString shortHelpString()
const override;
137 QString shortDescription()
const override;
138 QgsRandomExponentialRasterAlgorithm *createInstance() const override
SIP_FACTORY;
141 void addAlgorithmParams() final;
142 Qgis::DataType getRasterDataType(
int typeId ) final;
143 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
144 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
145 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
148 std::exponential_distribution<
double> mRandomExponentialDistribution;
152class QgsRandomGammaRasterAlgorithm : public QgsRandomRasterAlgorithmBase
155 QgsRandomGammaRasterAlgorithm() =
default;
157 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomGammaRaster.svg"_s ); }
158 QString name()
const override;
159 QString displayName()
const override;
160 QStringList tags()
const override;
161 QString shortHelpString()
const override;
162 QString shortDescription()
const override;
163 QgsRandomGammaRasterAlgorithm *createInstance() const override
SIP_FACTORY;
166 void addAlgorithmParams() final;
167 Qgis::DataType getRasterDataType(
int typeId ) final;
168 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
169 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
170 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
173 std::gamma_distribution<
double> mRandomGammaDistribution;
176class QgsRandomGeometricRasterAlgorithm : public QgsRandomRasterAlgorithmBase
179 QgsRandomGeometricRasterAlgorithm() =
default;
181 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomExponentialRaster.svg"_s ); }
182 QString name()
const override;
183 QString displayName()
const override;
184 QStringList tags()
const override;
185 QString shortHelpString()
const override;
186 QString shortDescription()
const override;
187 QgsRandomGeometricRasterAlgorithm *createInstance() const override
SIP_FACTORY;
190 void addAlgorithmParams() override;
191 Qgis::DataType getRasterDataType(
int typeId ) override;
192 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) override;
193 long generateRandomLongValue( std::mt19937 &mersenneTwister ) override;
194 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) override;
197 std::geometric_distribution<
long> mRandomGeometricDistribution;
201class QgsRandomNegativeBinomialRasterAlgorithm : public QgsRandomRasterAlgorithmBase
204 QgsRandomNegativeBinomialRasterAlgorithm() =
default;
206 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
207 QString name()
const override;
208 QString displayName()
const override;
209 QStringList tags()
const override;
210 QString shortHelpString()
const override;
211 QString shortDescription()
const override;
212 QgsRandomNegativeBinomialRasterAlgorithm *createInstance() const override
SIP_FACTORY;
215 void addAlgorithmParams() final;
216 Qgis::DataType getRasterDataType(
int typeId ) final;
217 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
218 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
219 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
222 std::negative_binomial_distribution<
long> mRandomNegativeBinomialDistribution;
225class QgsRandomNormalRasterAlgorithm : public QgsRandomRasterAlgorithmBase
228 QgsRandomNormalRasterAlgorithm() =
default;
230 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmNormalRaster.svg"_s ); }
231 QString name()
const override;
232 QString displayName()
const override;
233 QStringList tags()
const override;
234 QString shortHelpString()
const override;
235 QString shortDescription()
const override;
236 QgsRandomNormalRasterAlgorithm *createInstance() const override
SIP_FACTORY;
239 void addAlgorithmParams() final;
240 Qgis::DataType getRasterDataType(
int typeId ) final;
241 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
242 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
243 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
246 std::normal_distribution<
double> mRandomNormalDistribution;
249class QgsRandomPoissonRasterAlgorithm : public QgsRandomRasterAlgorithmBase
252 QgsRandomPoissonRasterAlgorithm() =
default;
254 QString svgIconPath()
const override {
return QgsApplication::iconPath( u
"/algorithms/mAlgorithmRandomPoissonRaster.svg"_s ); }
255 QString name()
const override;
256 QString displayName()
const override;
257 QStringList tags()
const override;
258 QString shortHelpString()
const override;
259 QString shortDescription()
const override;
260 QgsRandomPoissonRasterAlgorithm *createInstance() const override
SIP_FACTORY;
263 void addAlgorithmParams() final;
264 Qgis::DataType getRasterDataType(
int typeId ) final;
265 bool prepareRandomParameters( const QVariantMap ¶meters, QgsProcessingContext &context ) final;
266 long generateRandomLongValue( std::mt19937 &mersenneTwister ) final;
267 double generateRandomDoubleValue( std::mt19937 &mersenneTwister ) final;
270 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.