QGIS API Documentation 3.99.0-Master (09f76ad7019)
Loading...
Searching...
No Matches
qgsalgorithmcellstatistics.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsalgorithmcellstatistics.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 QGSALGORITHMCELLSTATISTICS_H
19#define QGSALGORITHMCELLSTATISTICS_H
20
21#define SIP_NO_FILE
22
23#include "qgis_sip.h"
24#include "qgsapplication.h"
27#include "qgsrasterprojector.h"
28
29#include <QString>
30
31using namespace Qt::StringLiterals;
32
34
35class QgsCellStatisticsAlgorithmBase : public QgsProcessingAlgorithm
36{
37 public:
38 QString group() const final;
39 QString groupId() const final;
40 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) final;
41
42
43 protected:
44 virtual void addSpecificAlgorithmParams() = 0;
45 virtual bool prepareSpecificAlgorithmParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) = 0;
46 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
47 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) final;
48 virtual void processRasterStack( QgsProcessingFeedback *feedback ) = 0;
49
50 std::vector<QgsRasterAnalysisUtils::RasterLogicInput> mInputs;
51 bool mIgnoreNoData = false;
53 double mNoDataValue = -9999;
54 int mLayerWidth = 0;
55 int mLayerHeight = 0;
56 QgsRectangle mExtent;
58 double mRasterUnitsPerPixelX = 0;
59 double mRasterUnitsPerPixelY = 0;
60 std::unique_ptr<QgsRasterDataProvider> mOutputRasterDataProvider;
61 double mMaxProgressDuringBlockWriting = 100;
62};
63
64class QgsCellStatisticsAlgorithm : public QgsCellStatisticsAlgorithmBase
65{
66 public:
67 QgsCellStatisticsAlgorithm() = default;
68 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmCellStatistics.svg"_s ); }
69 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmCellStatistics.svg"_s ); }
70 QString name() const override;
71 QString displayName() const override;
72 QStringList tags() const override;
73 QString shortHelpString() const override;
74 QString shortDescription() const override;
75 QgsCellStatisticsAlgorithm *createInstance() const override SIP_FACTORY;
76
77 protected:
78 void addSpecificAlgorithmParams() override;
79 bool prepareSpecificAlgorithmParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
80 void processRasterStack( QgsProcessingFeedback *feedback ) override;
81
82 private:
83 QgsRasterAnalysisUtils::CellValueStatisticMethods mMethod = QgsRasterAnalysisUtils::CellValueStatisticMethods::Sum;
84};
85
86
87class QgsCellStatisticsPercentileAlgorithm : public QgsCellStatisticsAlgorithmBase
88{
89 public:
90 QgsCellStatisticsPercentileAlgorithm() = default;
91 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmCellStatisticsPercentile.svg"_s ); }
92 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmCellStatisticsPercentile.svg"_s ); }
93 QString name() const override;
94 QString displayName() const override;
95 QStringList tags() const override;
96 QString shortHelpString() const override;
97 QString shortDescription() const override;
98 QgsCellStatisticsPercentileAlgorithm *createInstance() const override SIP_FACTORY;
99
100 protected:
101 void addSpecificAlgorithmParams() override;
102 bool prepareSpecificAlgorithmParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
103 void processRasterStack( QgsProcessingFeedback *feedback ) override;
104
105 private:
106 QgsRasterAnalysisUtils::CellValuePercentileMethods mMethod = QgsRasterAnalysisUtils::CellValuePercentileMethods::NearestRankPercentile;
107 double mPercentile = 0.0;
108};
109
110
111class QgsCellStatisticsPercentRankFromValueAlgorithm : public QgsCellStatisticsAlgorithmBase
112{
113 public:
114 QgsCellStatisticsPercentRankFromValueAlgorithm() = default;
115 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmCellStatisticsPercentRank.svg"_s ); }
116 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmCellStatisticsPercentRank.svg"_s ); }
117 QString name() const override;
118 QString displayName() const override;
119 QStringList tags() const override;
120 QString shortHelpString() const override;
121 QString shortDescription() const override;
122 QgsCellStatisticsPercentRankFromValueAlgorithm *createInstance() const override SIP_FACTORY;
123
124 protected:
125 void addSpecificAlgorithmParams() override;
126 bool prepareSpecificAlgorithmParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
127 void processRasterStack( QgsProcessingFeedback *feedback ) override;
128
129 private:
130 QgsRasterAnalysisUtils::CellValuePercentRankMethods mMethod = QgsRasterAnalysisUtils::CellValuePercentRankMethods::InterpolatedPercentRankInc;
131 double mValue = 0.0;
132};
133
134
135class QgsCellStatisticsPercentRankFromRasterAlgorithm : public QgsCellStatisticsAlgorithmBase
136{
137 public:
138 QgsCellStatisticsPercentRankFromRasterAlgorithm() = default;
139 QIcon icon() const override { return QgsApplication::getThemeIcon( u"/algorithms/mAlgorithmCellStatisticsPercentRank.svg"_s ); }
140 QString svgIconPath() const override { return QgsApplication::iconPath( u"/algorithms/mAlgorithmCellStatisticsPercentRank.svg"_s ); }
141 QString name() const override;
142 QString displayName() const override;
143 QStringList tags() const override;
144 QString shortHelpString() const override;
145 QString shortDescription() const override;
146 QgsCellStatisticsPercentRankFromRasterAlgorithm *createInstance() const override SIP_FACTORY;
147
148 protected:
149 void addSpecificAlgorithmParams() override;
150 bool prepareSpecificAlgorithmParameters( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
151 void processRasterStack( QgsProcessingFeedback *feedback ) override;
152
153 private:
154 QgsRasterAnalysisUtils::CellValuePercentRankMethods mMethod = QgsRasterAnalysisUtils::CellValuePercentRankMethods::InterpolatedPercentRankInc;
155 std::unique_ptr<QgsRasterInterface> mValueRasterInterface;
156 int mValueRasterBand = 1;
157};
158
159
161
162#endif // QGSALGORITHMCELLSTATISTICS_H
DataType
Raster data types.
Definition qgis.h:379
@ UnknownDataType
Unknown or unspecified type.
Definition qgis.h:380
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:84