QGIS API Documentation 3.34.0-Prizren (ffbdd678812)
Loading...
Searching...
No Matches
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
39class QgsMeshLayer;
40
48class 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,
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 double devicePixelRatio = 1.0 );
132
138 static QgsRectangle boundingBoxToScreenRectangle(
139 const QgsMapToPixel &mtp,
140 const QgsRectangle &bbox,
141 double devicePixelRatio = 1.0
142 );
143
150 static double interpolateFromVerticesData(
151 double fraction,
152 double val1, double val2
153 );
154
161 static QgsMeshDatasetValue interpolateFromVerticesData( double fraction,
162 const QgsMeshDatasetValue &val1, const QgsMeshDatasetValue &val2
163 );
164
176 static double interpolateFromVerticesData(
177 const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
178 double val1, double val2, double val3, const QgsPointXY &pt
179 );
180
188 static double interpolateZForPoint( const QgsTriangularMesh &mesh, double x, double y );
189
203 static QgsVector interpolateVectorFromVerticesData(
204 const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
205 QgsVector vect1, QgsVector vect2, QgsVector vect3, const QgsPointXY &pt
206 );
207
217 static double interpolateFromFacesData(
218 const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
219 double val, const QgsPointXY &pt );
220
232 static QgsVector interpolateVectorFromFacesData(
233 const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3,
234 QgsVector vect, const QgsPointXY &pt );
235
241 static QVector<double> interpolateFromFacesData(
242 QVector<double> valuesOnFaces,
243 const QgsMesh *nativeMesh,
244 const QgsTriangularMesh *triangularMesh,
245 QgsMeshDataBlock *active,
247 );
248
254 static QVector<double> interpolateFromFacesData(
255 const QVector<double> &valuesOnFaces,
256 const QgsMesh &nativeMesh,
257 QgsMeshDataBlock *active,
259 );
260
266 static QVector<double> interpolateFromFacesData(
267 const QVector<double> &valuesOnFaces,
268 const QgsMesh &nativeMesh,
269 const QgsMeshDataBlock &active,
271 );
272
278 static QVector<double> resampleFromVerticesToFaces(
279 const QVector<double> valuesOnVertices,
280 const QgsMesh *nativeMesh,
281 const QgsTriangularMesh *triangularMesh,
282 const QgsMeshDataBlock *active,
284 );
285
296 static QVector<double> calculateMagnitudeOnVertices(
297 const QgsMeshLayer *meshLayer,
298 const QgsMeshDatasetIndex index,
299 QgsMeshDataBlock *activeFaceFlagValues,
301
314 static QVector<double> calculateMagnitudeOnVertices(
315 const QgsMesh &nativeMesh,
316 const QgsMeshDatasetGroupMetadata &groupMetadata,
317 const QgsMeshDataBlock &datasetValues,
318 const QgsMeshDataBlock &activeFaceFlagValues,
320
321
322
330 static QgsRectangle triangleBoundingBox( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3 );
331
340 static QString formatTime( double hours, const QDateTime &referenceTime, const QgsMeshTimeSettings &settings );
341
350 static QVector<QVector3D> calculateNormals(
351 const QgsTriangularMesh &triangularMesh,
352 const QVector<double> &verticalMagnitude,
353 bool isRelative );
354};
355
357
358#endif // QGSMESHLAYERUTILS_H
Perform transforms between map coordinates and device coordinates.
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.
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:59
A rectangle specified with double values.
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.