QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgsalgorithmexportmesh.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsalgorithmexportmesh.h
3 ---------------------------
4 begin : October 2020
5 copyright : (C) 2020 by Vincent Cloarec
6 email : vcloarec at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSALGORITHMEXPORTMESH_H
19#define QGSALGORITHMEXPORTMESH_H
20
21
22#include "qgsmeshdataprovider.h"
23#include "qgsmeshdataset.h"
26#include "qgstriangularmesh.h"
27
28#define SIP_NO_FILE
29
31
32struct DataGroup
33{
35 QgsMeshDataBlock datasetValues;
36 QgsMeshDataBlock activeFaces;
37 QgsMesh3DDataBlock dataset3dStakedValue; //will be filled only if data are 3d stacked
38};
39
40class QgsExportMeshOnElement : public QgsProcessingAlgorithm
41{
42 public:
43 QString group() const override;
44 QString groupId() const override;
45
46 protected:
47 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
48 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
49 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
50 QgsMesh mNativeMesh;
51
52 private:
53 virtual QSet<int> supportedDataType() const = 0;
54 virtual Qgis::ProcessingSourceType sinkType() const = 0;
55 virtual Qgis::WkbType sinkGeometryType() const = 0;
56 virtual QgsGeometry meshElement( int index ) const = 0;
57 virtual QgsMesh::ElementType meshElementType() const = 0;
58
59 QList<DataGroup> mDataPerGroup;
60 QgsCoordinateTransform mTransform;
61 int mExportVectorOption = 2;
62 int mElementCount = 0;
63};
64
65class QgsExportMeshVerticesAlgorithm : public QgsExportMeshOnElement
66{
67 public:
68 QString shortHelpString() const override;
69 QString shortDescription() const override;
70 QString name() const override;
71 QString displayName() const override;
72
73 protected:
74 QgsProcessingAlgorithm *createInstance() const override;
75
76 private:
77 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::PointZ; }
78 QSet<int> supportedDataType() const override { return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnVertices } ); }
80 QgsGeometry meshElement( int index ) const override;
81 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Vertex; }
82};
83
84class QgsExportMeshFacesAlgorithm : public QgsExportMeshOnElement
85{
86 public:
87 QString shortHelpString() const override;
88 QString shortDescription() const override;
89 QString name() const override;
90 QString displayName() const override;
91
92 protected:
93 QgsProcessingAlgorithm *createInstance() const override;
94
95 private:
96 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::PolygonZ; }
97 QSet<int> supportedDataType() const override { return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnFaces } ); }
99 QgsGeometry meshElement( int index ) const override;
100 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Face; }
101};
102
103class QgsExportMeshEdgesAlgorithm : public QgsExportMeshOnElement
104{
105 public:
106 QString shortHelpString() const override;
107 QString shortDescription() const override;
108 QString name() const override;
109 QString displayName() const override;
110
111 protected:
112 QgsProcessingAlgorithm *createInstance() const override;
113
114 private:
115 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::LineStringZ; }
116 QSet<int> supportedDataType() const override { return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnEdges } ); }
117 Qgis::ProcessingSourceType sinkType() const override { return Qgis::ProcessingSourceType::VectorLine; }
118 QgsGeometry meshElement( int index ) const override;
119 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Edge; }
120};
121
122
123class QgsExportMeshOnGridAlgorithm : public QgsProcessingAlgorithm
124{
125 public:
126 QString name() const override;
127 QString displayName() const override;
128 QString group() const override;
129 QString groupId() const override;
130 QString shortHelpString() const override;
131 QString shortDescription() const override;
132
133 protected:
134 QgsProcessingAlgorithm *createInstance() const override;
135 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
136 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
137 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
138
139 private:
140 QSet<int> supportedDataType();
141
142 QgsTriangularMesh mTriangularMesh;
143
144 QList<DataGroup> mDataPerGroup;
145 QgsCoordinateTransform mTransform;
146 int mExportVectorOption = 2;
147 QgsMeshRendererSettings mLayerRendererSettings;
148};
149
150class QgsMeshRasterizeAlgorithm : public QgsProcessingAlgorithm
151{
152 public:
153 QString name() const override;
154 QString displayName() const override;
155 QString group() const override;
156 QString groupId() const override;
157 QString shortHelpString() const override;
158 QString shortDescription() const override;
159
160 protected:
161 QgsProcessingAlgorithm *createInstance() const override;
162 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
163 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
164 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
165
166 private:
167 QSet<int> supportedDataType();
168
169 QgsTriangularMesh mTriangularMesh;
170
171 QList<DataGroup> mDataPerGroup;
172 QgsCoordinateTransform mTransform;
173 QgsMeshRendererSettings mLayerRendererSettings;
174};
175
176class QgsMeshContoursAlgorithm : public QgsProcessingAlgorithm
177{
178 public:
179 QString name() const override;
180 QString displayName() const override;
181 QString group() const override;
182 QString groupId() const override;
183 QString shortHelpString() const override;
184 QString shortDescription() const override;
185
186 protected:
187 QgsProcessingAlgorithm *createInstance() const override;
188 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
189 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
190 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
191
192 private:
194
195 QgsTriangularMesh mTriangularMesh;
196 QgsMesh mNativeMesh;
197 QVector<double> mLevels;
198
199 QList<DataGroup> mDataPerGroup;
200 QgsCoordinateTransform mTransform;
201 QgsMeshRendererSettings mLayerRendererSettings;
202 QString mDateTimeString;
203};
204
205class QgsMeshExportCrossSection : public QgsProcessingAlgorithm
206{
207 public:
208 QString name() const override;
209 QString displayName() const override;
210 QString group() const override;
211 QString groupId() const override;
212 QString shortHelpString() const override;
213 QString shortDescription() const override;
214
215 protected:
216 QgsProcessingAlgorithm *createInstance() const override;
217 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
218 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
219 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
220
221 private:
223
224 QgsTriangularMesh mTriangularMesh;
225
226 QList<DataGroup> mDataPerGroup;
227 QgsCoordinateReferenceSystem mMeshLayerCrs;
228 QgsMeshRendererSettings mLayerRendererSettings;
229};
230
231class QgsMeshExportTimeSeries : public QgsProcessingAlgorithm
232{
233 public:
234 QString name() const override;
235 QString displayName() const override;
236 QString group() const override;
237 QString groupId() const override;
238 QString shortHelpString() const override;
239 QString shortDescription() const override;
240
241 protected:
242 QgsProcessingAlgorithm *createInstance() const override;
243 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
244 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
245 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
246
247 private:
249
250 QgsTriangularMesh mTriangularMesh;
251
252 QgsCoordinateReferenceSystem mMeshLayerCrs;
253 QgsMeshRendererSettings mLayerRendererSettings;
254
255 QList<int> mGroupIndexes;
256 QList<DataGroup> mDatasets;
257 QList<qint64> mRelativeTimeSteps;
258 QStringList mTimeStepString;
259 QMap<qint64, QMap<int, int>> mRelativeTimeToData;
260 QMap<int, QgsMeshDatasetGroupMetadata> mGroupsMetadata;
261};
262
263
265
266#endif // QGSALGORITHMEXPORTMESH_H
ProcessingSourceType
Processing data source types.
Definition qgis.h:3645
@ VectorPoint
Vector point layers.
Definition qgis.h:3648
@ VectorPolygon
Vector polygon layers.
Definition qgis.h:3650
@ VectorLine
Vector line layers.
Definition qgis.h:3649
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:294
@ PointZ
PointZ.
Definition qgis.h:313
@ LineStringZ
LineStringZ.
Definition qgis.h:314
@ PolygonZ
PolygonZ.
Definition qgis.h:315
A block of 3d stacked mesh data related N faces defined on base mesh frame.
A block of integers/doubles from a mesh dataset.
A collection of dataset group metadata such as whether the data is vector or scalar,...
@ DataOnEdges
Data is defined on edges.
@ DataOnFaces
Data is defined on faces.
@ DataOnVertices
Data is defined on vertices.
@ DataOnVolumes
Data is defined on volumes.
Abstract base class for processing algorithms.
virtual QgsProcessingAlgorithm * createInstance() const =0
Creates a new instance of the algorithm class.
virtual QString group() const
Returns the name of the group this algorithm belongs to.
virtual bool prepareAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback)
Prepares the algorithm to run using the specified parameters.
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
virtual QString shortHelpString() const
Returns a localised short helper string for the algorithm.
virtual QString shortDescription() const
Returns an optional translated short description of the algorithm.
virtual QString displayName() const =0
Returns the translated algorithm name, which should be used for any user-visible display of the algor...
virtual QVariantMap processAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback)=0
Runs the algorithm using the specified parameters.
virtual void initAlgorithm(const QVariantMap &configuration=QVariantMap())=0
Initializes the algorithm using the specified configuration.
virtual QString name() const =0
Returns the algorithm name, used for identifying the algorithm.
ElementType
Defines type of mesh elements.