QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
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> resampleFromVerticesToFaces(
244  const QVector<double> valuesOnVertices,
245  const QgsMesh *nativeMesh,
246  const QgsTriangularMesh *triangularMesh,
247  const QgsMeshDataBlock *active,
249  );
250 
261  static QVector<double> calculateMagnitudeOnVertices(
262  const QgsMeshLayer *meshLayer,
263  const QgsMeshDatasetIndex index,
264  QgsMeshDataBlock *activeFaceFlagValues,
266 
274  static QgsRectangle triangleBoundingBox( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3 );
275 
284  static QString formatTime( double hours, const QDateTime &referenceTime, const QgsMeshTimeSettings &settings );
285 
294  static QVector<QVector3D> calculateNormals(
295  const QgsTriangularMesh &triangularMesh,
296  const QVector<double> &verticalMagnitude,
297  bool isRelative );
298 };
299 
301 
302 #endif // QGSMESHLAYERUTILS_H
QgsMeshTimeSettings
Represents a mesh time settings for mesh datasets.
Definition: qgsmeshtimesettings.h:36
qgsrectangle.h
qgsmaptopixel.h
QgsMeshDatasetValue
QgsMeshDatasetValue represents single dataset value.
Definition: qgsmeshdataset.h:78
QgsMesh
Mesh - vertices, edges and faces.
Definition: qgsmeshdataprovider.h:58
QgsRectangle
A rectangle specified with double values.
Definition: qgsrectangle.h:42
QgsMeshRendererScalarSettings::NeighbourAverage
@ NeighbourAverage
Does a simple average of values defined for all surrounding faces/vertices.
Definition: qgsmeshrenderersettings.h:116
QgsMeshDatasetIndex
QgsMeshDatasetIndex is index that identifies the dataset group (e.g.
Definition: qgsmeshdataset.h:47
QgsMeshLayer
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:95
QgsMeshRendererScalarSettings::DataResamplingMethod
DataResamplingMethod
Resampling of value from dataset.
Definition: qgsmeshrenderersettings.h:106
QgsMesh3dAveragingMethod
Abstract class to interpolate 3d stacked mesh data to 2d data.
Definition: qgsmesh3daveraging.h:40
QgsPointXY
A class to represent a 2D point.
Definition: qgspointxy.h:44
qgsmeshrenderersettings.h
QgsMapToPixel
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:38
QgsMeshDatasetGroupMetadata::DataType
DataType
Location of where data is specified for datasets in the dataset group.
Definition: qgsmeshdataset.h:355
QgsVector
A class to represent a vector.
Definition: qgsvector.h:30
QgsMeshDataBlock
QgsMeshDataBlock is a block of integers/doubles that can be used to retrieve: active flags (e....
Definition: qgsmeshdataset.h:136
QgsTriangularMesh
Triangular/Derived Mesh is mesh with vertices in map coordinates.
Definition: qgstriangularmesh.h:50
qgsmeshdataprovider.h