18#ifndef QGSMESHDATASET_H 
   19#define QGSMESHDATASET_H 
   68    int mDatasetIndex = -1;
 
 
   98    void set( 
double scalar );
 
  101    void setX( 
double x );
 
  104    void setY( 
double y ) ;
 
  107    double scalar() 
const;
 
  118    double mX = std::numeric_limits<double>::quiet_NaN();
 
  119    double mY = std::numeric_limits<double>::quiet_NaN();
 
 
  159    DataType type() 
const;
 
  165    bool isValid() 
const;
 
  177    bool active( 
int index ) 
const;
 
  192    void setActive( 
const QVector<int> &vals );
 
  205    QVector<int> active() 
const;
 
  213    QVector<double> values() 
const;
 
  224    void setValues( 
const QVector<double> &vals );
 
  227    void setValid( 
bool valid );
 
  230    QVector<double> mDoubleBuffer;
 
  231    QVector<int> mIntegerBuffer;
 
  234    bool mIsValid = 
false;
 
 
  264    void setValid( 
bool valid );
 
  267    bool isValid() 
const;
 
  270    bool isVector() 
const;
 
  276    int firstVolumeIndex() 
const;
 
  279    int lastVolumeIndex() 
const;
 
  282    int volumesCount() 
const;
 
  287    QVector<int> verticalLevelsCount() 
const;
 
  292    void setVerticalLevelsCount( 
const QVector<int> &verticalLevelsCount );
 
  297    QVector<double> verticalLevels() 
const;
 
  302    void setVerticalLevels( 
const QVector<double> &verticalLevels );
 
  307    QVector<int> faceToVolumeIndex() 
const;
 
  312    void setFaceToVolumeIndex( 
const QVector<int> &faceToVolumeIndex );
 
  319    QVector<double> values() 
const;
 
  334    void setValues( 
const QVector<double> &doubleBuffer );
 
  338    bool mIsValid = 
false;
 
  339    bool mIsVector = 
false;
 
  340    QVector<int> mVerticalLevelsCount;
 
  341    QVector<double> mVerticalLevels;
 
  342    QVector<int> mFaceToVolumeIndex;
 
  343    QVector<double> mDoubleBuffer; 
 
 
  392                                 int maximumVerticalLevels,
 
  393                                 const QDateTime &referenceTime,
 
  395                                 const QMap<QString, QString> &extraOptions );
 
  400    QString name() 
const;
 
  410    QString parentQuantityName() 
const;
 
  422    QMap<QString, QString> extraOptions() 
const;
 
  427    bool isVector() 
const;
 
  432    bool isScalar() 
const;
 
  437    bool isTemporal() 
const;
 
  449    double minimum() 
const;
 
  454    double maximum() 
const;
 
  461    int maximumVerticalLevelsCount() 
const;
 
  468    QDateTime referenceTime() 
const;
 
  472    QString mParentQuantityName;
 
  474    bool mIsScalar = 
false;
 
  475    DataType mDataType = DataType::DataOnFaces;
 
  476    double mMinimumValue = std::numeric_limits<double>::quiet_NaN();
 
  477    double mMaximumValue = std::numeric_limits<double>::quiet_NaN();
 
  478    QMap<QString, QString> mExtraOptions;
 
  479    int mMaximumVerticalLevelsCount = 0; 
 
  480    QDateTime mReferenceTime;
 
  481    bool mIsTemporal = 
false;
 
 
  512                            int maximumVerticalLevels
 
  523    bool isValid() 
const;
 
  528    double minimum() 
const;
 
  533    double maximum() 
const;
 
  540    int maximumVerticalLevelsCount() 
const;
 
  543    double mTime = std::numeric_limits<double>::quiet_NaN();
 
  544    bool mIsValid = 
false;
 
  545    double mMinimumValue = std::numeric_limits<double>::quiet_NaN();
 
  546    double mMaximumValue = std::numeric_limits<double>::quiet_NaN();
 
  547    int mMaximumVerticalLevelsCount = 0; 
 
 
  637    double minimum() 
const;
 
  640    double maximum() 
const;
 
  643    void setMinimumMaximum( 
double min, 
double max ) 
const;
 
  646    QString name() 
const;
 
  649    void setName( 
const QString &name );
 
  658    void addExtraMetadata( QString key, QString value );
 
  660    QMap<QString, QString> extraMetadata() 
const;
 
  663    bool isScalar() 
const;
 
  666    void setIsScalar( 
bool isScalar );
 
  669    bool checkValueCountPerDataset( 
int count ) 
const;
 
  672    void calculateStatistic() 
const;
 
  675    void setStatisticObsolete() 
const;
 
  678    virtual QStringList datasetGroupNamesDependentOn() 
const;
 
  684    virtual QString description() 
const;
 
  687    void setReferenceTime( 
const QDateTime &referenceTime );
 
  694    bool mIsScalar = 
true;
 
  697    mutable double mMinimum = std::numeric_limits<double>::quiet_NaN();
 
  698    mutable double mMaximum = std::numeric_limits<double>::quiet_NaN();
 
  699    mutable bool mIsStatisticObsolete = 
true;
 
  701    void updateStatistic() 
const;
 
  703    QDateTime mReferenceTime;
 
 
  724    QgsMeshDataBlock datasetValues( 
bool isScalar, 
int valueIndex, 
int count ) 
const override;
 
  727    bool isActive( 
int faceIndex ) 
const override;
 
  728    int valuesCount() 
const override;
 
  731    void calculateMinMax();
 
  737    double minimum = std::numeric_limits<double>::quiet_NaN();
 
  738    double maximum = std::numeric_limits<double>::quiet_NaN();
 
 
  760    void initialize() 
override;
 
  761    int datasetCount() 
const override;
 
  767    QDomElement writeXml( QDomDocument &doc, 
const QgsReadWriteContext &context )  
const override;
 
  770    void addDataset( std::shared_ptr<QgsMeshMemoryDataset> dataset );
 
  773    void clearDatasets();
 
  776    std::shared_ptr<const QgsMeshMemoryDataset> constDataset( 
int index ) 
const;
 
 
  798    bool isActive( 
int )
 const override {
return true;};
 
 
  820    void initialize() 
override;
 
  822    int datasetCount() 
const override;;
 
  828    std::unique_ptr<QgsMeshVerticesElevationDataset> mDataset;
 
 
  878                                 const QString &sourceName,
 
  938    int childCount() const;
 
  944    int totalChildCount() const;
 
  952    QList<
int> enabledDatasetGroupIndexes() const;
 
  971    QString name() const;
 
  979    void setName( const QString &name );
 
  988    QString providerName() const;
 
  993    bool isVector() const;
 
  998    int datasetGroupIndex() const;
 
 1003    bool isEnabled() const;
 
 1009    void setIsEnabled( 
bool isEnabled );
 
 1014    QString defaultName() const;
 
 1029    QList<
int> groupIndexDependencies() const;
 
 1036    QString description() const;
 
 1054    void setPersistentDatasetGroup( const QString &uri );
 
 1071    QString mOriginalName;
 
 1072    QString mSourceName;
 
 1074    QString mDescription;
 
 1076    bool mIsVector = false;
 
 1077    int mDatasetGroupIndex = -1;
 
 1078    bool mIsEnabled = true;
 
 1080    QList<
int> mDatasetGroupDependencies;
 
 1081    QList<
int> mDatasetGroupDependentOn;
 
 1085    void freeAsDependency(); 
 
 1086    void freeFromDependencies(); 
 
 
A block of 3d stacked mesh data related N faces defined on base mesh frame.
QgsMesh3DDataBlock()
Constructs an invalid block.
A block of integers/doubles from a mesh dataset.
DataType
Type of data stored in the block.
@ ScalarDouble
Scalar double values.
@ Vector2DDouble
Vector double pairs (x1, y1, x2, y2, ... )
@ ActiveFlagInteger
Integer boolean flag whether face is active.
Tree item for display of the mesh dataset groups.
QgsMeshDatasetGroupTreeItem()
Constructor for an empty dataset group tree item.
Abstract class that represents a dataset group.
virtual QgsMeshDatasetMetadata datasetMetadata(int datasetIndex) const =0
Returns the metadata of the dataset with index datasetIndex.
QgsMeshDatasetGroup()=default
virtual ~QgsMeshDatasetGroup()
QMap< QString, QString > mMetadata
Type
Type of the dataset group.
@ Unknown
Generic type used for non typed dataset group.
@ Virtual
Virtual Dataset group defined by a formula.
@ Memory
Temporary dataset group in memory.
@ Persistent
Dataset group store in a file.
virtual void initialize()=0
Initialize the dataset group.
virtual QgsMeshDatasetGroup::Type type() const =0
Returns the type of dataset group.
virtual QDomElement writeXml(QDomDocument &doc, const QgsReadWriteContext &context) const =0
Write dataset group information in a DOM element.
virtual int datasetCount() const =0
Returns the count of datasets in the group.
virtual QgsMeshDataset * dataset(int index) const =0
Returns the dataset with index.
An index that identifies the dataset group (e.g.
Represents a single mesh dataset value.
QgsMeshDatasetValue()=default
Default Ctor, initialize to NaN.
~QgsMeshDatasetValue()=default
Abstract class that represents a mesh dataset.
virtual QgsMeshDataBlock datasetValues(bool isScalar, int valueIndex, int count) const =0
Returns count values from valueIndex.
virtual int valuesCount() const =0
Returns the values count.
virtual ~QgsMeshDataset()=default
virtual QgsMeshDatasetMetadata metadata() const =0
Returns the metadata of the dataset.
virtual bool isActive(int faceIndex) const =0
Returns whether the face is active.
virtual QgsMeshDataBlock areFacesActive(int faceIndex, int count) const =0
Returns whether faces are active.
virtual QgsMeshDatasetValue datasetValue(int valueIndex) const =0
Returns the value with index valueIndex.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Represents a mesh dataset group stored in memory.
QgsMeshMemoryDatasetGroup()=default
virtual QgsMeshDatasetGroup::Type type() const override
Returns the type of dataset group.
QVector< std::shared_ptr< QgsMeshMemoryDataset > > memoryDatasets
Contains all the memory datasets.
Stores mesh memory datasets.
QgsMeshMemoryDataset()=default
QVector< QgsMeshDatasetValue > values
Represents a dataset group with elevation value of the vertices of an existing mesh that can be edite...
QDomElement writeXml(QDomDocument &, const QgsReadWriteContext &) const override
Write dataset group information in a DOM element.
Represents a dataset with elevation value of the vertices of an existing mesh that can be edited.
QgsMeshDatasetValue datasetValue(int valueIndex) const override
Returns the value with index valueIndex.
bool isActive(int) const override
Returns whether the face is active.
int valuesCount() const override
Returns the values count.
QgsMeshDataBlock areFacesActive(int faceIndex, int count) const override
Returns whether faces are active.
QgsMeshDatasetMetadata metadata() const override
Returns the metadata of the dataset.
QgsMeshDataBlock datasetValues(bool isScalar, int valueIndex, int count) const override
Returns count values from valueIndex.
A container for the context for various read/write operations on objects.
A rectangle specified with double values.
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
bool operator!=(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
Mesh - vertices, edges and faces.