QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
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
22#include "qgis_core.h"
23#include "qgsmaptopixel.h"
24#include "qgsmeshdataprovider.h"
26#include "qgsrectangle.h"
27
28#include <QSize>
29#include <QVector>
30
31#define SIP_NO_FILE
32
34
40class QgsMeshLayer;
41
49class CORE_EXPORT QgsMeshLayerUtils
50{
51 public:
60 static int datasetValuesCount( const QgsMesh *mesh, QgsMeshDatasetGroupMetadata::DataType dataType );
61
69
79 static QgsMeshDataBlock datasetValues( const QgsMeshLayer *meshLayer, QgsMeshDatasetIndex index, int valueIndex, int count );
80
94 static QVector<QgsVector> griddedVectorValues( const QgsMeshLayer *meshLayer, const QgsMeshDatasetIndex index, double xSpacing, double ySpacing, const QSize &size, const QgsPointXY &minCorner );
95
101 static QVector<double> calculateMagnitudes( const QgsMeshDataBlock &block );
102
113 static void boundingBoxToScreenRectangle(
114 const QgsMapToPixel &mtp, const QSize &outputSize, const QgsRectangle &bbox, int &leftLim, int &rightLim, int &bottomLim, int &topLim, double devicePixelRatio = 1.0
115 );
116
122 static QgsRectangle boundingBoxToScreenRectangle( const QgsMapToPixel &mtp, const QgsRectangle &bbox, double devicePixelRatio = 1.0 );
123
132 static bool calculateBarycentricCoordinates( const QgsPointXY &pA, const QgsPointXY &pB, const QgsPointXY &pC, const QgsPointXY &pP, double &lam1, double &lam2, double &lam3 );
133
140 static double interpolateFromVerticesData( double fraction, double val1, double val2 );
141
148 static QgsMeshDatasetValue interpolateFromVerticesData( double fraction, const QgsMeshDatasetValue &val1, const QgsMeshDatasetValue &val2 );
149
161 static double interpolateFromVerticesData( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3, double val1, double val2, double val3, const QgsPointXY &pt );
162
170 static double interpolateZForPoint( const QgsTriangularMesh &mesh, double x, double y );
171
185 static QgsVector interpolateVectorFromVerticesData( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3, QgsVector vect1, QgsVector vect2, QgsVector vect3, const QgsPointXY &pt );
186
196 static double interpolateFromFacesData( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3, double val, const QgsPointXY &pt );
197
209 static QgsVector interpolateVectorFromFacesData( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3, QgsVector vect, const QgsPointXY &pt );
210
216 static QVector<double> interpolateFromFacesData(
217 QVector<double> valuesOnFaces, const QgsMesh *nativeMesh, const QgsTriangularMesh *triangularMesh, QgsMeshDataBlock *active, QgsMeshRendererScalarSettings::DataResamplingMethod method
218 );
219
225 static QVector<double> interpolateFromFacesData( const QVector<double> &valuesOnFaces, const QgsMesh &nativeMesh, QgsMeshDataBlock *active, QgsMeshRendererScalarSettings::DataResamplingMethod method );
226
232 static QVector<double> interpolateFromFacesData(
233 const QVector<double> &valuesOnFaces, const QgsMesh &nativeMesh, const QgsMeshDataBlock &active, QgsMeshRendererScalarSettings::DataResamplingMethod method
234 );
235
241 static QVector<double> resampleFromVerticesToFaces(
242 const QVector<double> valuesOnVertices, const QgsMesh *nativeMesh, const QgsTriangularMesh *triangularMesh, const QgsMeshDataBlock *active, QgsMeshRendererScalarSettings::DataResamplingMethod method
243 );
244
255 static QVector<double> calculateMagnitudeOnVertices(
256 const QgsMeshLayer *meshLayer,
257 const QgsMeshDatasetIndex index,
258 QgsMeshDataBlock *activeFaceFlagValues,
260 );
261
274 static QVector<double> calculateMagnitudeOnVertices(
275 const QgsMesh &nativeMesh,
276 const QgsMeshDatasetGroupMetadata &groupMetadata,
277 const QgsMeshDataBlock &datasetValues,
278 const QgsMeshDataBlock &activeFaceFlagValues,
280 );
281
282
290 static QgsRectangle triangleBoundingBox( const QgsPointXY &p1, const QgsPointXY &p2, const QgsPointXY &p3 );
291
300 static QString formatTime( double hours, const QDateTime &referenceTime, const QgsMeshTimeSettings &settings );
301
310 static QVector<QVector3D> calculateNormals( const QgsTriangularMesh &triangularMesh, const QVector<double> &verticalMagnitude, bool isRelative );
311
317 static bool haveSameParentQuantity( const QgsMeshLayer *layer, const QgsMeshDatasetIndex &index1, const QgsMeshDatasetIndex &index2 );
318};
319
321
322#endif // QGSMESHLAYERUTILS_H
Perform transforms between map coordinates and device coordinates.
Abstract class for interpolating 3d stacked mesh data to 2d data.
A block of integers/doubles from a mesh dataset.
A collection of dataset group metadata such as whether the data is vector or scalar,...
DataType
Location of where data is specified for datasets in the dataset group.
An index that identifies the dataset group (e.g.
Represents a single mesh 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.
Represents a 2D point.
Definition qgspointxy.h:62
A rectangle specified with double values.
A triangular/derived mesh with vertices in map coordinates.
Represent a 2-dimensional vector.
Definition qgsvector.h:34
Mesh - vertices, edges and faces.