18#ifndef QGSALGORITHMUPSLOPEAREA_H
19#define QGSALGORITHMUPSLOPEAREA_H
38 QgsUpslopeAreaAlgorithmBase() =
default;
40 QString
group()
const override;
41 QString
groupId()
const override;
42 QStringList
tags()
const override;
44 QList<QgsProcessingAlgorithm::ExternalLink>
externalLinks()
const override;
47 enum class Method :
int
56 void addCommonParameters();
62 static double neighborLength(
int dir,
double cellSizeX,
double cellSizeY );
63 static int neighborTo(
int dir,
int col,
int &outCol,
int row,
int &outRow,
int cols,
int rows );
65 void computeCellValue(
const QgsRasterBlock *demBlock,
int col,
int row,
int cols,
int rows,
double cellSizeX,
double cellSizeY, Method method,
double converge,
bool contour );
66 void computeD8(
const QgsRasterBlock *demBlock,
int col,
int row,
int cols,
int rows,
double cellSizeX,
double cellSizeY );
67 void computeDInf(
const QgsRasterBlock *demBlock,
int col,
int row,
int cols,
int rows,
double cellSizeX,
double cellSizeY );
68 void computeMFD(
const QgsRasterBlock *demBlock,
int col,
int row,
int cols,
int rows,
double cellSizeX,
double cellSizeY,
double converge,
bool contour );
69 void computeMMDGFD(
const QgsRasterBlock *demBlock,
int col,
int row,
int cols,
int rows,
double cellSizeX,
double cellSizeY,
bool contour );
70 void computeMDInf(
const QgsRasterBlock *demBlock,
int col,
int row,
int cols,
int rows,
double cellSizeX,
double cellSizeY,
double converge );
72 std::unique_ptr<QgsRasterInterface> mDemProvider;
74 std::unique_ptr<QgsRasterInterface> mRouteProvider;
78 double mCellSizeX = 0.0;
79 double mCellSizeY = 0.0;
80 double mDemNoData = -9999.0;
81 double mRouteNoData = -9999.0;
84 std::vector<double> mRouteData;
85 std::vector<double> mFlowData;
87 Method mMethod = Method::MFD;
88 double mConvergence = 1.1;
89 bool mMfdContour =
false;
91 QString mOutputFormat;
92 QString mCreationOptions;
93 double mOutputNoData = -9999;
100class QgsUpslopeAreaPointAlgorithm :
public QgsUpslopeAreaAlgorithmBase
103 QgsUpslopeAreaPointAlgorithm();
105 QString name()
const override;
106 QString displayName()
const override;
107 QString shortDescription()
const override;
108 QString shortHelpString()
const override;
109 QgsProcessingAlgorithm *createInstance()
const override;
111 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
114 bool prepareAlgorithm(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
override;
115 QVariantMap processAlgorithm(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
override;
122class QgsUpslopeAreaLayerAlgorithm :
public QgsUpslopeAreaAlgorithmBase
125 QgsUpslopeAreaLayerAlgorithm();
127 QString name()
const override;
128 QString displayName()
const override;
129 QString shortDescription()
const override;
130 QString shortHelpString()
const override;
131 QgsProcessingAlgorithm *createInstance()
const override;
133 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
136 bool prepareAlgorithm(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
override;
137 QVariantMap processAlgorithm(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
override;
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 QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
virtual QStringList tags() const
Returns a list of tags which relate to the algorithm, and are used to assist users in searching for s...
virtual QList< QgsProcessingAlgorithm::ExternalLink > externalLinks() const
Returns a list of external links describing the algorithm's behavior or source.
virtual QList< QgsAcademicReference > academicReferences() const
Returns the list of academic references describing the logic and processes used by the algorithm.
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.