QGIS API Documentation 3.99.0-Master (c22de0620c0)
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
79 {
80 return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnVertices } );
81 }
83 QgsGeometry meshElement( int index ) const override;
84 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Vertex; }
85};
86
87class QgsExportMeshFacesAlgorithm : public QgsExportMeshOnElement
88{
89 public:
90 QString shortHelpString() const override;
91 QString shortDescription() const override;
92 QString name() const override;
93 QString displayName() const override;
94
95 protected:
96 QgsProcessingAlgorithm *createInstance() const override;
97
98 private:
99 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::PolygonZ; }
100 QSet<int> supportedDataType() const override
101 {
102 return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnFaces } );
103 }
105 QgsGeometry meshElement( int index ) const override;
106 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Face; }
107};
108
109class QgsExportMeshEdgesAlgorithm : public QgsExportMeshOnElement
110{
111 public:
112 QString shortHelpString() const override;
113 QString shortDescription() const override;
114 QString name() const override;
115 QString displayName() const override;
116
117 protected:
118 QgsProcessingAlgorithm *createInstance() const override;
119
120 private:
121 Qgis::WkbType sinkGeometryType() const override { return Qgis::WkbType::LineStringZ; }
122 QSet<int> supportedDataType() const override
123 {
124 return QSet<int>( { QgsMeshDatasetGroupMetadata::DataOnEdges } );
125 }
126 Qgis::ProcessingSourceType sinkType() const override { return Qgis::ProcessingSourceType::VectorLine; }
127 QgsGeometry meshElement( int index ) const override;
128 QgsMesh::ElementType meshElementType() const override { return QgsMesh::Edge; }
129};
130
131
132class QgsExportMeshOnGridAlgorithm : public QgsProcessingAlgorithm
133{
134 public:
135 QString name() const override;
136 QString displayName() const override;
137 QString group() const override;
138 QString groupId() const override;
139 QString shortHelpString() const override;
140 QString shortDescription() const override;
141
142 protected:
143 QgsProcessingAlgorithm *createInstance() const override;
144 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
145 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
146 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
147
148 private:
149 QSet<int> supportedDataType();
150
151 QgsTriangularMesh mTriangularMesh;
152
153 QList<DataGroup> mDataPerGroup;
154 QgsCoordinateTransform mTransform;
155 int mExportVectorOption = 2;
156 QgsMeshRendererSettings mLayerRendererSettings;
157};
158
159class QgsMeshRasterizeAlgorithm : public QgsProcessingAlgorithm
160{
161 public:
162 QString name() const override;
163 QString displayName() const override;
164 QString group() const override;
165 QString groupId() const override;
166 QString shortHelpString() const override;
167 QString shortDescription() const override;
168
169 protected:
170 QgsProcessingAlgorithm *createInstance() const override;
171 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
172 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
173 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
174
175 private:
176 QSet<int> supportedDataType();
177
178 QgsTriangularMesh mTriangularMesh;
179
180 QList<DataGroup> mDataPerGroup;
181 QgsCoordinateTransform mTransform;
182 QgsMeshRendererSettings mLayerRendererSettings;
183};
184
185class QgsMeshContoursAlgorithm : public QgsProcessingAlgorithm
186{
187 public:
188 QString name() const override;
189 QString displayName() const override;
190 QString group() const override;
191 QString groupId() const override;
192 QString shortHelpString() const override;
193 QString shortDescription() const override;
194
195 protected:
196 QgsProcessingAlgorithm *createInstance() const override;
197 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
198 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
199 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
200
201 private:
202 QSet<int> supportedDataType()
203 {
204 return QSet<int>(
208 );
209 }
210
211 QgsTriangularMesh mTriangularMesh;
212 QgsMesh mNativeMesh;
213 QVector<double> mLevels;
214
215 QList<DataGroup> mDataPerGroup;
216 QgsCoordinateTransform mTransform;
217 QgsMeshRendererSettings mLayerRendererSettings;
218 QString mDateTimeString;
219};
220
221class QgsMeshExportCrossSection : public QgsProcessingAlgorithm
222{
223 public:
224 QString name() const override;
225 QString displayName() const override;
226 QString group() const override;
227 QString groupId() const override;
228 QString shortHelpString() const override;
229 QString shortDescription() const override;
230
231 protected:
232 QgsProcessingAlgorithm *createInstance() const override;
233 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
234 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
235 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
236
237 private:
238 QSet<int> supportedDataType()
239 {
240 return QSet<int>(
244 );
245 }
246
247 QgsTriangularMesh mTriangularMesh;
248
249 QList<DataGroup> mDataPerGroup;
250 QgsCoordinateReferenceSystem mMeshLayerCrs;
251 QgsMeshRendererSettings mLayerRendererSettings;
252};
253
254class QgsMeshExportTimeSeries : public QgsProcessingAlgorithm
255{
256 public:
257 QString name() const override;
258 QString displayName() const override;
259 QString group() const override;
260 QString groupId() const override;
261 QString shortHelpString() const override;
262 QString shortDescription() const override;
263
264 protected:
265 QgsProcessingAlgorithm *createInstance() const override;
266 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
267 bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
268 QVariantMap processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
269
270 private:
271 QSet<int> supportedDataType()
272 {
273 return QSet<int>(
277 );
278 }
279
280 QgsTriangularMesh mTriangularMesh;
281
282 QgsCoordinateReferenceSystem mMeshLayerCrs;
283 QgsMeshRendererSettings mLayerRendererSettings;
284
285 QList<int> mGroupIndexes;
286 QList<DataGroup> mDatasets;
287 QList<qint64> mRelativeTimeSteps;
288 QStringList mTimeStepString;
289 QMap<qint64, QMap<int, int>> mRelativeTimeToData;
290 QMap<int, QgsMeshDatasetGroupMetadata> mGroupsMetadata;
291};
292
293
295
296#endif // QGSALGORITHMEXPORTMESH_H
ProcessingSourceType
Processing data source types.
Definition qgis.h:3617
@ VectorPoint
Vector point layers.
Definition qgis.h:3620
@ VectorPolygon
Vector polygon layers.
Definition qgis.h:3622
@ VectorLine
Vector line layers.
Definition qgis.h:3621
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:291
@ PointZ
PointZ.
Definition qgis.h:310
@ LineStringZ
LineStringZ.
Definition qgis.h:311
@ PolygonZ
PolygonZ.
Definition qgis.h:312
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.