QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
qgsmeshlayerutils.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmeshlayerutils.h
3  --------------------------
4  begin : August 2018
5  copyright : (C) 2018 by Martin Dobias
6  email : wonder dot sk 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 QGSMESHLAYERUTILS_H
19 #define QGSMESHLAYERUTILS_H
20 
21 #define SIP_NO_FILE
22 
23 #include "qgis_core.h"
24 #include "qgsrectangle.h"
25 #include "qgsmaptopixel.h"
26 #include "qgsmeshdataprovider.h"
28 
29 #include <QVector>
30 #include <QSize>
31 
33 
35 class QgsTriangularMesh;
36 class QgsMeshDataBlock;
39 class QgsMeshLayer;
40 
48 class CORE_EXPORT QgsMeshLayerUtils
49 {
50  public:
51 
60  static int datasetValuesCount( const QgsMesh *mesh, QgsMeshDatasetGroupMetadata::DataType dataType );
61 
69 
79  static QgsMeshDataBlock datasetValues(
80  const QgsMeshLayer *meshLayer,
81  QgsMeshDatasetIndex index,
82  int valueIndex,
83  int count );
84 
98  static QVector<QgsVector> griddedVectorValues(
99  const QgsMeshLayer *meshLayer,
100  const QgsMeshDatasetIndex index,
101  double xSpacing,
102  double ySpacing,
103  const QSize &size,
104  const QgsPointXY &minCorner );
105 
111  static QVector<double> calculateMagnitudes( const QgsMeshDataBlock &block );
112 
123  static void boundingBoxToScreenRectangle(
124  const QgsMapToPixel &mtp,
125  const QSize &outputSize,
126  const QgsRectangle &bbox,
127  int &leftLim,
128  int &rightLim,
129  int &bottomLim,
130  int &topLim );
131 
137  static QgsRectangle boundingBoxToScreenRectangle(
138  const QgsMapToPixel &mtp,
139  const QgsRectangle &bbox
140  );
141 
148  static double interpolateFromVerticesData(
149  double fraction,
150  double val1, double val2
151  );
152 
159  static QgsMeshDatasetValue interpolateFromVerticesData( double fraction,
160  const QgsMeshDatasetValue &val1, const QgsMeshDatasetValue &val2
161  );
162 
174  static double interpolateFromVerticesData(
175  const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
176  double val1, double val2, double val3, const QgsPointXY &pt
177  );
178 
192  static QgsVector interpolateVectorFromVerticesData(
193  const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
194  QgsVector vect1, QgsVector vect2, QgsVector vect3, const QgsPointXY &pt
195  );
196 
206  static double interpolateFromFacesData(
207  const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
208  double val, const QgsPointXY &pt );
209 
221  static QgsVector interpolateVectorFromFacesData(
222  const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
223  QgsVector vect, const QgsPointXY &pt );
224 
230  static QVector<double> interpolateFromFacesData(
231  QVector<double> valuesOnFaces,
232  const QgsMesh *nativeMesh,
233  const QgsTriangularMesh *triangularMesh,
234  QgsMeshDataBlock *active,
236  );
237 
243  static QVector<double> interpolateFromFacesData(
244  const QVector<double> &valuesOnFaces,
245  const QgsMesh &nativeMesh,
246  QgsMeshDataBlock *active,
248  );
249 
255  static QVector<double> resampleFromVerticesToFaces(
256  const QVector<double> valuesOnVertices,
257  const QgsMesh *nativeMesh,
258  const QgsTriangularMesh *triangularMesh,
259  const QgsMeshDataBlock *active,
261  );
262 
273  static QVector<double> calculateMagnitudeOnVertices(
274  const QgsMeshLayer *meshLayer,
275  const QgsMeshDatasetIndex index,
276  QgsMeshDataBlock *activeFaceFlagValues,
278 
291  static QVector<double> calculateMagnitudeOnVertices(
292  const QgsMesh &nativeMesh,
293  const QgsMeshDatasetGroupMetadata &groupMetadata,
294  const QgsMeshDataBlock &datasetValues,
295  QgsMeshDataBlock &activeFaceFlagValues,
297 
305  static QgsRectangle triangleBoundingBox( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3 );
306 
315  static QString formatTime( double hours, const QDateTime &referenceTime, const QgsMeshTimeSettings &settings );
316 
325  static QVector<QVector3D> calculateNormals(
326  const QgsTriangularMesh &triangularMesh,
327  const QVector<double> &verticalMagnitude,
328  bool isRelative );
329 };
330 
332 
333 #endif // QGSMESHLAYERUTILS_H
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:39
Abstract class to interpolate 3d stacked mesh data to 2d data.
QgsMeshDataBlock is a block of integers/doubles that can be used to retrieve: active flags (e....
QgsMeshDatasetGroupMetadata is a collection of dataset group metadata such as whether the data is vec...
DataType
Location of where data is specified for datasets in the dataset group.
QgsMeshDatasetIndex is index that identifies the dataset group (e.g.
QgsMeshDatasetValue represents single dataset value.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:95
DataResamplingMethod
Resampling of value from dataset.
@ NeighbourAverage
Does a simple average of values defined for all surrounding faces/vertices.
Represents a mesh time settings for mesh datasets.
A class to represent a 2D point.
Definition: qgspointxy.h:44
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Triangular/Derived Mesh is mesh with vertices in map coordinates.
A class to represent a vector.
Definition: qgsvector.h:30
Mesh - vertices, edges and faces.