QGIS API Documentation 4.3.0-Master (45633be667c)
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 QStringList tags() const override;
73
74 protected:
75 QgsProcessingAlgorithm *createInstance() const override;
76
77 private:
78 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::PointZ; }
79 QSet<int> supportedDataType() const override { return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnVertices } ); }
81 QgsGeometry meshElement( int index ) const override;
82 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Vertex; }
83};
84
85class QgsExportMeshFacesAlgorithm : public QgsExportMeshOnElement
86{
87 public:
88 QString shortHelpString() const override;
89 QString shortDescription() const override;
90 QString name() const override;
91 QString displayName() const override;
92 QStringList tags() const override;
93
94 protected:
95 QgsProcessingAlgorithm *createInstance() const override;
96
97 private:
98 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::PolygonZ; }
99 QSet<int> supportedDataType() const override { return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnFaces } ); }
101 QgsGeometry meshElement( int index ) const override;
102 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Face; }
103};
104
105class QgsExportMeshEdgesAlgorithm : public QgsExportMeshOnElement
106{
107 public:
108 QString shortHelpString() const override;
109 QString shortDescription() const override;
110 QString name() const override;
111 QString displayName() const override;
112 QStringList tags() const override;
113
114 protected:
115 QgsProcessingAlgorithm *createInstance() const override;
116
117 private:
118 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::LineStringZ; }
119 QSet<int> supportedDataType() const override { return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnEdges } ); }
120 Qgis::ProcessingSourceType sinkType() const override { return Qgis::ProcessingSourceType::VectorLine; }
121 QgsGeometry meshElement( int index ) const override;
122 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Edge; }
123};
124
125
126class QgsExportMeshOnGridAlgorithm : public QgsProcessingAlgorithm
127{
128 public:
129 QString name() const override;
130 QString displayName() const override;
131 QStringList tags() const override;
132 QString group() const override;
133 QString groupId() const override;
134 QString shortHelpString() const override;
135 QString shortDescription() const override;
136
137 protected:
138 QgsProcessingAlgorithm *createInstance() const override;
139 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
140 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
141 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
142
143 private:
144 QSet<int> supportedDataType();
145
146 QgsTriangularMesh mTriangularMesh;
147
148 QList<DataGroup> mDataPerGroup;
149 QgsCoordinateTransform mTransform;
150 int mExportVectorOption = 2;
151 QgsMeshRendererSettings mLayerRendererSettings;
152};
153
154class QgsMeshRasterizeAlgorithm : public QgsProcessingAlgorithm
155{
156 public:
157 QString name() const override;
158 QString displayName() const override;
159 QStringList tags() const override;
160 QString group() const override;
161 QString groupId() const override;
162 QString shortHelpString() const override;
163 QString shortDescription() const override;
164
165 protected:
166 QgsProcessingAlgorithm *createInstance() const override;
167 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
168 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
169 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
170
171 private:
172 QSet<int> supportedDataType();
173
174 QgsTriangularMesh mTriangularMesh;
175
176 QList<DataGroup> mDataPerGroup;
177 QgsCoordinateTransform mTransform;
178 QgsMeshRendererSettings mLayerRendererSettings;
179};
180
181class QgsMeshContoursAlgorithm : public QgsProcessingAlgorithm
182{
183 public:
184 QString name() const override;
185 QString displayName() const override;
186 QStringList tags() const override;
187 QString group() const override;
188 QString groupId() const override;
189 QString shortHelpString() const override;
190 QString shortDescription() const override;
191
192 protected:
193 QgsProcessingAlgorithm *createInstance() const override;
194 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
195 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
196 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
197
198 private:
200
201 QgsTriangularMesh mTriangularMesh;
202 QgsMesh mNativeMesh;
203 QVector<double> mLevels;
204
205 QList<DataGroup> mDataPerGroup;
206 QgsCoordinateTransform mTransform;
207 QgsMeshRendererSettings mLayerRendererSettings;
208 QString mDateTimeString;
209};
210
211class QgsMeshExportCrossSection : public QgsProcessingAlgorithm
212{
213 public:
214 QString name() const override;
215 QString displayName() const override;
216 QStringList tags() const override;
217 QString group() const override;
218 QString groupId() const override;
219 QString shortHelpString() const override;
220 QString shortDescription() const override;
221
222 protected:
223 QgsProcessingAlgorithm *createInstance() const override;
224 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
225 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
226 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
227
228 private:
230
231 QgsTriangularMesh mTriangularMesh;
232
233 QList<DataGroup> mDataPerGroup;
234 QgsCoordinateReferenceSystem mMeshLayerCrs;
235 QgsMeshRendererSettings mLayerRendererSettings;
236};
237
238class QgsMeshExportTimeSeries : public QgsProcessingAlgorithm
239{
240 public:
241 QString name() const override;
242 QString displayName() const override;
243 QStringList tags() const override;
244 QString group() const override;
245 QString groupId() const override;
246 QString shortHelpString() const override;
247 QString shortDescription() const override;
248
249 protected:
250 QgsProcessingAlgorithm *createInstance() const override;
251 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
252 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
253 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
254
255 private:
257
258 QgsTriangularMesh mTriangularMesh;
259
260 QgsCoordinateReferenceSystem mMeshLayerCrs;
261 QgsMeshRendererSettings mLayerRendererSettings;
262
263 QList<int> mGroupIndexes;
264 QList<DataGroup> mDatasets;
265 QList<qint64> mRelativeTimeSteps;
266 QStringList mTimeStepString;
267 QMap<qint64, QMap<int, int>> mRelativeTimeToData;
268 QMap<int, QgsMeshDatasetGroupMetadata> mGroupsMetadata;
269};
270
272
273#endif // QGSALGORITHMEXPORTMESH_H
ProcessingSourceType
Processing data source types.
Definition qgis.h:3749
@ VectorPoint
Vector point layers.
Definition qgis.h:3752
@ VectorPolygon
Vector polygon layers.
Definition qgis.h:3754
@ VectorLine
Vector line layers.
Definition qgis.h:3753
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 QStringList tags() const
Returns a list of tags which relate to the algorithm, and are used to assist users in searching for s...
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.