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.