18#ifndef QGSMESH3DAVERAGING_H
19#define QGSMESH3DAVERAGING_H
50 if ( averagingMethod )
52 switch ( averagingMethod->method() )
55 sipType = sipType_QgsMeshMultiLevelsAveragingMethod;
58 sipType = sipType_QgsMeshSigmaAveragingMethod;
61 sipType = sipType_QgsMeshRelativeHeightAveragingMethod;
64 sipType = sipType_QgsMeshElevationAveragingMethod;
79 MultiLevelsAveragingMethod = 0,
85 ElevationAveragingMethod
100 virtual QDomElement
writeXml( QDomDocument &doc )
const = 0;
106 virtual void readXml(
const QDomElement &elem ) = 0;
122 virtual bool hasValidInputs()
const = 0;
127 void averageVolumeValuesForFace(
129 int volumesBelowFaceCount,
130 int startVolumeIndex,
131 double methodLevelTop,
132 double methodLevelBottom,
134 const QVector<double> &verticalLevelsForFace,
135 const QVector<double> &volumeValues,
136 QVector<double> &valuesFaces
142 virtual void volumeRangeForFace(
143 double &startVerticalLevel,
144 double &endVerticalLevel,
145 int &singleVerticalLevel,
146 const QVector<double> &verticalLevels )
const = 0;
185 QDomElement writeXml( QDomDocument &doc )
const override;
186 void readXml(
const QDomElement &elem )
override;
198 int startVerticalLevel() const;
208 int endVerticalLevel() const;
213 bool countedFromTop() const;
218 bool isSingleLevel() const;
221 bool hasValidInputs() const override;
222 void volumeRangeForFace(
double &startVerticalLevel,
223 double &endVerticalLevel,
224 int &singleVerticalIndex,
225 const QVector<
double> &verticalLevels ) const override;
226 void setLevels(
int startVerticalLevel,
int endVerticalLevel );
227 int mStartVerticalLevel = 1;
228 int mEndVerticalLevel = 1;
229 bool mCountedFromTop = true;
256 QDomElement writeXml( QDomDocument &doc )
const override;
257 void readXml(
const QDomElement &elem )
override;
267 double startFraction() const;
275 double endFraction() const;
278 bool hasValidInputs() const override;
279 void volumeRangeForFace(
double &startVerticalLevel,
280 double &endVerticalLevel,
281 int &singleVerticalIndex,
282 const QVector<
double> &verticalLevels ) const override;
284 double mStartFraction = 0;
285 double mEndFraction = 1;
321 QDomElement writeXml( QDomDocument &doc )
const override;
322 void readXml(
const QDomElement &elem )
override;
331 double startHeight() const;
338 double endHeight() const;
343 bool countedFromTop() const;
346 bool hasValidInputs() const override;
347 void volumeRangeForFace(
double &startVerticalLevel,
348 double &endVerticalLevel,
349 int &singleVerticalIndex,
350 const QVector<
double> &verticalLevels ) const override;
351 double mStartHeight = 0;
352 double mEndHeight = 0;
353 bool mCountedFromTop = true;
382 QDomElement writeXml( QDomDocument &doc )
const override;
383 void readXml(
const QDomElement &elem )
override;
390 double startElevation() const;
395 double endElevation() const;
398 bool hasValidInputs() const override;
399 void volumeRangeForFace(
double &startVerticalLevel,
400 double &endVerticalLevel,
401 int &singleVerticalIndex,
402 const QVector<
double> &verticalLevels ) const override;
403 double mStartElevation = 0;
404 double mEndElevation = 0;
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Abstract class to interpolate 3d stacked mesh data to 2d data.
virtual void readXml(const QDomElement &elem)=0
Reads configuration from the given DOM element.
virtual bool equals(const QgsMesh3DAveragingMethod *other) const =0
Returns whether method equals to other.
Method
Type of averaging method.
@ RelativeHeightAveragingMethod
Method to average values defined by range of relative length units to the surface or bed level.
@ MultiLevelsAveragingMethod
Method to average values from selected vertical layers.
@ ElevationAveragingMethod
Method to average values defined by range of absolute length units to the model's datum.
@ SigmaAveragingMethod
Method to average values between 0 (bed level) and 1 (surface)
virtual ~QgsMesh3DAveragingMethod()=default
Dtor.
virtual QDomElement writeXml(QDomDocument &doc) const =0
Writes configuration to a new DOM element.
virtual QgsMesh3DAveragingMethod * clone() const =0
Clone the instance.
QgsMesh3DDataBlock is a block of 3d stacked mesh data related N faces defined on base mesh frame.
QgsMeshDataBlock is a block of integers/doubles that can be used to retrieve: active flags (e....
QgsMeshDatasetIndex is index that identifies the dataset group (e.g.
Elevation averaging method averages the values based on range defined absolute value to the model's d...
~QgsMeshElevationAveragingMethod() override
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Multi level averaging method specifies limits of vertical layers from the top layer down or reversed.
~QgsMeshMultiLevelsAveragingMethod() override
Relative height averaging method averages the values based on range defined relative to bed elevation...
~QgsMeshRelativeHeightAveragingMethod() override
Sigma averages over the values between 0 (bed level) and 1 (surface).
~QgsMeshSigmaAveragingMethod() override
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)