18 #ifndef QGSMESHLAYER_H
19 #define QGSMESHLAYER_H
23 #include "qgis_core.h"
34 struct QgsMeshLayerRendererCache;
114 : transformContext( transformContext )
126 bool loadDefaultStyle =
true;
141 bool skipCrsValidation =
false;
157 explicit QgsMeshLayer(
const QString &path = QString(),
const QString &baseName = QString(),
const QString &providerLib = QStringLiteral(
"mesh_memory" ),
168 SIP_PYOBJECT __repr__();
170 QString
str = QStringLiteral(
"<QgsMeshLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral(
"Invalid" ) );
171 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
181 bool readSymbology( const QDomNode &node, QString &errorMessage,
183 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage,
185 bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage, const
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) const override;
186 bool readStyle( const QDomNode &node, QString &errorMessage,
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
187 QString encodedSource( const QString &source, const
QgsReadWriteContext &context ) const override;
188 QString decodedSource( const QString &source, const QString &provider, const
QgsReadWriteContext &context ) const override;
190 bool writeXml( QDomNode &layer_node, QDomDocument &doc, const
QgsReadWriteContext &context ) const override;
193 void reload() override;
194 QStringList subLayers() const override;
195 QString htmlMetadata() const override;
196 bool isEditable() const override;
197 bool supportsEditing() const override;
198 QString loadDefaultStyle(
bool &resultFlag
SIP_OUT )
FINAL;
201 QString providerType() const;
212 bool addDatasets( const QString &path, const QDateTime &defaultReferenceTime = QDateTime() );
234 bool saveDataset( const QString &path,
int datasetGroupIndex, QString driver );
270 int triangularMeshLevelOfDetailCount() const
SIP_SKIP;
298 QgsMeshLayerRendererCache *rendererCache()
SIP_SKIP;
339 QString formatTime(
double hours );
346 int datasetGroupCount() const;
353 int extraDatasetGroupCount() const;
363 QList<
int> datasetGroupsIndexes() const;
373 QList<
int> enabledDatasetGroupsIndexes() const;
570 QgsMeshDatasetIndex datasetIndexAtTime( const QgsDateTimeRange &timeRange,
int datasetGroupIndex ) const;
670 void setReferenceTime( const QDateTime &referenceTime );
712 QList<
int> selectVerticesByExpression(
QgsExpression expression );
722 QList<
int> selectFacesByExpression(
QgsExpression expression );
753 void resetDatasetGroupTreeItem();
836 bool isModified() const override;
842 bool contains( const
QgsMesh::ElementType &type ) const;
851 int meshVertexCount() const;
860 int meshFaceCount() const;
867 int meshEdgeCount() const;
885 void activeScalarDatasetGroupChanged(
int index );
892 void activeVectorDatasetGroupChanged(
int index );
899 void timeSettingsChanged( );
906 bool isReadOnly()
const override {
return true;}
914 bool setDataProvider( QString
const &provider,
const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
920 void fillNativeMesh();
921 void assignDefaultStyleToDatasetGroup(
int groupIndex );
922 void createSimplifiedMeshes();
923 int levelsOfDetailsIndex(
double partOfMeshInView )
const;
925 bool hasSimplifiedMeshes()
const;
931 void onDatasetGroupsAdded(
const QList<int> &datasetGroupIndexes );
939 QStringList mExtraDatasetUri;
941 std::unique_ptr<QgsMeshDatasetGroupStore> mDatasetGroupStore;
944 std::unique_ptr<QgsMesh> mNativeMesh;
947 std::vector<std::unique_ptr<QgsTriangularMesh>> mTriangularMeshes;
950 std::unique_ptr<QgsMeshLayerRendererCache> mRendererCache;
967 int mStaticScalarDatasetIndex = 0;
968 int mStaticVectorDatasetIndex = 0;
972 int closestEdge(
const QgsPointXY &point,
double searchRadius,
QgsPointXY &projectedPoint )
const;
983 void updateActiveDatasetGroups();
985 void setDataSourcePrivate(
const QString &dataSource,
const QString &baseName,
const QString &provider,
Abstract base class for objects which generate elevation profiles.
Interface for classes which can generate elevation profiles.
Contains information about the context in which a coordinate transform is executed.
Class for parsing and evaluation of expressions (formerly called "search strings").
A representation of the interval between two datetime values.
Base class for storage of map layer elevation properties.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for storage of map layer temporal properties.
Base class for all map layer types.
virtual Q_INVOKABLE QgsDataProvider * dataProvider()
Returns the layer's data provider, it may be nullptr.
Abstract class to interpolate 3d stacked mesh data to 2d data.
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....
Class for handling properties relating to a mesh data provider's temporal capabilities.
Base class for providing data for QgsMeshLayer.
Class used to register and access all the dataset groups related to a mesh layer.
Tree item for display of the mesh dataset groups.
Abstract class that represents a dataset group.
QgsMeshDatasetIndex is index that identifies the dataset group (e.g.
QgsMeshDatasetValue represents single dataset value.
Class that makes edit operation on a mesh.
Mesh layer specific subclass of QgsMapLayerElevationProperties.
Implementation of map layer temporal properties for mesh layers.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
QgsMeshLayer(const QgsMeshLayer &rhs)=delete
QgsMeshLayer cannot be copied.
QgsMeshLayer & operator=(QgsMeshLayer const &rhs)=delete
QgsMeshLayer cannot be copied.
Represents a mesh renderer settings for scalar datasets.
Represents all mesh renderer settings.
Represents an overview renderer settings.
Represents a mesh time settings for mesh datasets.
A class to represent a 2D point.
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
Abstract base class for all rendered symbols.
Triangular/Derived Mesh is mesh with vertices in map coordinates.
TemporalUnit
Temporal units.
Setting options for creating vector data providers.
Setting options for loading mesh layers.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
LayerOptions(const QgsCoordinateTransformContext &transformContext=QgsCoordinateTransformContext())
Constructor for LayerOptions with optional transformContext.
Mesh - vertices, edges and faces.