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
 
 
   99    virtual QDomElement 
writeXml( QDomDocument &doc ) 
const = 0;
 
  105    virtual void readXml( 
const QDomElement &elem ) = 0;
 
  121    virtual bool hasValidInputs() 
const = 0;
 
  126    void averageVolumeValuesForFace(
 
  128      int volumesBelowFaceCount,
 
  129      int startVolumeIndex,
 
  130      double methodLevelTop,
 
  131      double methodLevelBottom,
 
  133      const QVector<double> &verticalLevelsForFace,
 
  134      const QVector<double> &volumeValues,
 
  135      QVector<double> &valuesFaces
 
  141    virtual void volumeRangeForFace(
 
  142      double &startVerticalLevel,
 
  143      double &endVerticalLevel,
 
  144      int &singleVerticalLevel,
 
  145      const QVector<double> &verticalLevels ) 
const = 0;
 
 
  184    QDomElement writeXml( QDomDocument &doc ) 
const override;
 
  185    void readXml( 
const QDomElement &elem ) 
override;
 
  197    int startVerticalLevel() const;
 
  207    int endVerticalLevel() const;
 
  212    bool countedFromTop() const;
 
  217    bool isSingleLevel() const;
 
  220    bool hasValidInputs() const override;
 
  221    void volumeRangeForFace( 
double &startVerticalLevel,
 
  222                             double &endVerticalLevel,
 
  223                             int &singleVerticalIndex,
 
  224                             const QVector<
double> &verticalLevels ) const override;
 
  225    void setLevels( 
int startVerticalLevel, 
int endVerticalLevel );
 
  226    int mStartVerticalLevel = 1;
 
  227    int mEndVerticalLevel = 1;
 
  228    bool mCountedFromTop = true;
 
 
  255    QDomElement writeXml( QDomDocument &doc ) 
const override;
 
  256    void readXml( 
const QDomElement &elem ) 
override;
 
  266    double startFraction() const;
 
  274    double endFraction() const;
 
  277    bool hasValidInputs() const override;
 
  278    void volumeRangeForFace( 
double &startVerticalLevel,
 
  279                             double &endVerticalLevel,
 
  280                             int &singleVerticalIndex,
 
  281                             const QVector<
double> &verticalLevels ) const override;
 
  283    double mStartFraction = 0;
 
  284    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
 
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)