QGIS API Documentation  3.17.0-Master (ca637cfeb2)
qgsalgorithmfuzzifyraster.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsalgorithmrasterlayeruniquevalues.h
3  ---------------------
4  begin : October 2019
5  copyright : (C) 2019 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 QGSFUZZIFYRASTERALGORITHM_H
19 #define QGSFUZZIFYRASTERALGORITHM_H
20 
21 #define SIP_NO_FILE
22 
23 #include "qgis_sip.h"
24 #include "qgsprocessingalgorithm.h"
25 #include "qgsapplication.h"
26 
28 
32 class QgsFuzzifyRasterAlgorithmBase : public QgsProcessingAlgorithm
33 {
34  public:
35  QString group() const final;
36  QString groupId() const final;
37  void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) final;
38 
39  protected:
40 
45  virtual void addAlgorithmParams() = 0;
46 
47  bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
48 
52  virtual bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) = 0;
53 
57  QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
58 
62  virtual void fuzzify( QgsProcessingFeedback *feedback ) = 0;
63 
64  QgsRasterLayer *mInputRaster;
65  int mBand;
66  std::unique_ptr< QgsRasterInterface > mInterface;
67  QgsRectangle mExtent;
69  int mLayerWidth;
70  int mLayerHeight;
71  int mNbCellsXProvider = 0;
72  int mNbCellsYProvider = 0;
73 
74  Qgis::DataType mDataType = Qgis::Float32;
75  const double mNoDataValue = -9999;
76  QgsRasterDataProvider *mDestinationRasterProvider;
77 };
78 
79 
80 
81 
82 class QgsFuzzifyRasterLinearMembershipAlgorithm : public QgsFuzzifyRasterAlgorithmBase
83 {
84 
85  public:
86  QgsFuzzifyRasterLinearMembershipAlgorithm() = default;
87  QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmFuzzifyLinear.svg" ) ); }
88  QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmFuzzifyLinear.svg" ) ); }
89  QString name() const override;
90  QString displayName() const override;
91  QStringList tags() const override;
92  QString shortHelpString() const override;
93  QgsFuzzifyRasterLinearMembershipAlgorithm *createInstance() const override SIP_FACTORY;
94 
95  protected:
96  void addAlgorithmParams() override;
97  bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
98  void fuzzify( QgsProcessingFeedback *feedback ) override;
99 
100  private:
101  double mFuzzifyLowBound;
102  double mFuzzifyHighBound;
103 
104 };
105 
106 
107 class QgsFuzzifyRasterPowerMembershipAlgorithm : public QgsFuzzifyRasterAlgorithmBase
108 {
109 
110  public:
111  QgsFuzzifyRasterPowerMembershipAlgorithm() = default;
112  QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmFuzzifyPower.svg" ) ); }
113  QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmFuzzifyPower.svg" ) ); }
114  QString name() const override;
115  QString displayName() const override;
116  QStringList tags() const override;
117  QString shortHelpString() const override;
118  QgsFuzzifyRasterPowerMembershipAlgorithm *createInstance() const override SIP_FACTORY;
119 
120  protected:
121  void addAlgorithmParams() override;
122  bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
123  void fuzzify( QgsProcessingFeedback *feedback ) override;
124 
125  private:
126  double mFuzzifyLowBound;
127  double mFuzzifyHighBound;
128  double mFuzzifyExponent;
129 
130 };
131 
132 
133 class QgsFuzzifyRasterLargeMembershipAlgorithm : public QgsFuzzifyRasterAlgorithmBase
134 {
135 
136  public:
137  QgsFuzzifyRasterLargeMembershipAlgorithm() = default;
138  QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmFuzzifyLarge.svg" ) ); }
139  QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmFuzzifyLarge.svg" ) ); }
140  QString name() const override;
141  QString displayName() const override;
142  QStringList tags() const override;
143  QString shortHelpString() const override;
144  QgsFuzzifyRasterLargeMembershipAlgorithm *createInstance() const override SIP_FACTORY;
145 
146  protected:
147  void addAlgorithmParams() override;
148  bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
149  void fuzzify( QgsProcessingFeedback *feedback ) override;
150 
151  private:
152  double mFuzzifyMidpoint;
153  double mFuzzifySpread;
154 
155 };
156 
157 
158 class QgsFuzzifyRasterSmallMembershipAlgorithm : public QgsFuzzifyRasterAlgorithmBase
159 {
160 
161  public:
162  QgsFuzzifyRasterSmallMembershipAlgorithm() = default;
163  QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmFuzzifySmall.svg" ) ); }
164  QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmFuzzifySmall.svg" ) ); }
165  QString name() const override;
166  QString displayName() const override;
167  QStringList tags() const override;
168  QString shortHelpString() const override;
169  QgsFuzzifyRasterSmallMembershipAlgorithm *createInstance() const override SIP_FACTORY;
170 
171  protected:
172  void addAlgorithmParams() override;
173  bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
174  void fuzzify( QgsProcessingFeedback *feedback ) override;
175 
176  private:
177  double mFuzzifyMidpoint;
178  double mFuzzifySpread;
179 
180 };
181 
182 
183 class QgsFuzzifyRasterGaussianMembershipAlgorithm : public QgsFuzzifyRasterAlgorithmBase
184 {
185 
186  public:
187  QgsFuzzifyRasterGaussianMembershipAlgorithm() = default;
188  QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmFuzzifyGaussian.svg" ) ); }
189  QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmFuzzifyGaussian.svg" ) ); }
190  QString name() const override;
191  QString displayName() const override;
192  QStringList tags() const override;
193  QString shortHelpString() const override;
194  QgsFuzzifyRasterGaussianMembershipAlgorithm *createInstance() const override SIP_FACTORY;
195 
196  protected:
197  void addAlgorithmParams() override;
198  bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
199  void fuzzify( QgsProcessingFeedback *feedback ) override;
200 
201  private:
202  double mFuzzifyMidpoint;
203  double mFuzzifySpread;
204 
205 };
206 
207 
208 class QgsFuzzifyRasterNearMembershipAlgorithm : public QgsFuzzifyRasterAlgorithmBase
209 {
210 
211  public:
212  QgsFuzzifyRasterNearMembershipAlgorithm() = default;
213  QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmFuzzifyNear.svg" ) ); }
214  QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmFuzzifyNear.svg" ) ); }
215  QString name() const override;
216  QString displayName() const override;
217  QStringList tags() const override;
218  QString shortHelpString() const override;
219  QgsFuzzifyRasterNearMembershipAlgorithm *createInstance() const override SIP_FACTORY;
220 
221  protected:
222  void addAlgorithmParams() override;
223  bool prepareAlgorithmFuzzificationParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
224  void fuzzify( QgsProcessingFeedback *feedback ) override;
225 
226  private:
227  double mFuzzifyMidpoint;
228  double mFuzzifySpread;
229 
230 };
231 
232 
234 
235 #endif // QGSALGORITHMFUZZIFYRASTER_H
236 
237 
virtual bool prepareAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)
Prepares the algorithm to run using the specified parameters.
A rectangle specified with double values.
Definition: qgsrectangle.h:41
Base class for providing feedback from a processing algorithm.
Represents a raster layer.
virtual QString group() const
Returns the name of the group this algorithm belongs to.
static QString iconPath(const QString &iconFile)
Returns path to the desired icon file.
DataType
Raster data types.
Definition: qgis.h:101
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
Thirty two bit floating point (float)
Definition: qgis.h:109
Abstract base class for processing algorithms.
virtual void initAlgorithm(const QVariantMap &configuration=QVariantMap())=0
Initializes the algorithm using the specified configuration.
#define SIP_FACTORY
Definition: qgis_sip.h:76
virtual QVariantMap processAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)=0
Runs the algorithm using the specified parameters.
This class represents a coordinate reference system (CRS).
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
Contains information about the context in which a processing algorithm is executed.
Base class for raster data providers.