QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsmeshlayerprofilegenerator.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmeshlayerprofilegenerator.h
3  ---------------
4  begin : March 2022
5  copyright : (C) 2022 by Nyall Dawson
6  email : nyall dot dawson 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 #ifndef QGSMESHLAYERPROFILEGENERATOR_H
18 #define QGSMESHLAYERPROFILEGENERATOR_H
19 
20 #include "qgis_core.h"
21 #include "qgis_sip.h"
25 #include "qgscoordinatetransform.h"
26 #include "qgstriangularmesh.h"
27 
28 #include <memory>
29 
30 class QgsProfileRequest;
31 class QgsCurve;
32 class QgsMeshLayer;
35 
36 #define SIP_NO_FILE
37 
38 
47 {
48 
49  public:
50 
51  QString type() const override;
52  QVector<QgsProfileIdentifyResults> identify( const QgsProfilePoint &point, const QgsProfileIdentifyContext &context ) override;
53 
54  private:
55 
56  QPointer< QgsMeshLayer > mLayer;
57 
59 };
60 
61 
70 {
71 
72  public:
73 
78 
79  ~QgsMeshLayerProfileGenerator() override;
80 
81  QString sourceId() const override;
84  QgsFeedback *feedback() const override;
85 
86  private:
87 
88  double heightAt( double x, double y );
89 
90  QString mId;
91  std::unique_ptr<QgsFeedback> mFeedback = nullptr;
92 
93  std::unique_ptr< QgsCurve > mProfileCurve;
94 
97  QgsCoordinateTransformContext mTransformContext;
98 
99  double mOffset = 0;
100  double mScale = 1;
101  QPointer< QgsMeshLayer > mLayer;
102 
103  double mStepDistance = std::numeric_limits<double>::quiet_NaN();
104 
105  QgsTriangularMesh mTriangularMesh;
106 
107  QgsCoordinateTransform mLayerToTargetTransform;
108 
109  std::unique_ptr< QgsMeshLayerProfileResults > mResults;
110 
112 
113 
114 };
115 
116 #endif // QGSMESHLAYERPROFILEGENERATOR_H
QgsProfileIdentifyContext
Encapsulates the context of identifying profile results.
Definition: qgsabstractprofilegenerator.h:125
QgsCurve
Abstract base class for curved geometry type.
Definition: qgscurve.h:35
QgsCoordinateTransformContext
Contains information about the context in which a coordinate transform is executed.
Definition: qgscoordinatetransformcontext.h:57
QgsMeshLayerProfileResults
Implementation of QgsAbstractProfileResults for mesh layers.
Definition: qgsmeshlayerprofilegenerator.h:46
qgscoordinatetransformcontext.h
qgsabstractprofilesurfacegenerator.h
QgsProfileSnapContext
Encapsulates the context of snapping a profile point.
Definition: qgsprofilesnapping.h:30
QgsProfilePoint
Encapsulates a point on a distance-elevation profile.
Definition: qgsprofilepoint.h:30
QgsProfileGenerationContext
Encapsulates the context in which an elevation profile is to be generated.
Definition: qgsabstractprofilegenerator.h:262
qgstriangularmesh.h
QgsAbstractProfileSurfaceResults
Abstract base class for storage of elevation profiles which represent a continuous surface (e....
Definition: qgsabstractprofilesurfacegenerator.h:37
QgsFeedback
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:44
QgsAbstractProfileGenerator::feedback
virtual QgsFeedback * feedback() const =0
Access to feedback object of the generator (may be nullptr)
QgsMeshLayer
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:98
qgis_sip.h
QgsProfileRequest
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
Definition: qgsprofilerequest.h:37
qgscoordinatetransform.h
QgsAbstractProfileSurfaceResults::identify
QVector< QgsProfileIdentifyResults > identify(const QgsProfilePoint &point, const QgsProfileIdentifyContext &context) override
Identify results visible at the specified profile point.
Definition: qgsabstractprofilesurfacegenerator.cpp:85
QgsMeshLayerProfileGenerator
Implementation of QgsAbstractProfileGenerator for mesh layers.
Definition: qgsmeshlayerprofilegenerator.h:69
QgsCoordinateReferenceSystem
This class represents a coordinate reference system (CRS).
Definition: qgscoordinatereferencesystem.h:211
QgsAbstractProfileSurfaceGenerator
Abstract base class for objects which generate elevation profiles which represent a continuous surfac...
Definition: qgsabstractprofilesurfacegenerator.h:69
QgsAbstractProfileResults::type
virtual QString type() const =0
Returns the unique string identifier for the results type.
QgsAbstractProfileResults
Abstract base class for storage of elevation profiles.
Definition: qgsabstractprofilegenerator.h:193
QgsTriangularMesh
Triangular/Derived Mesh is mesh with vertices in map coordinates.
Definition: qgstriangularmesh.h:51
QgsAbstractTerrainProvider
Abstract base class for terrain providers.
Definition: qgsterrainprovider.h:40
QgsAbstractProfileGenerator::takeResults
virtual QgsAbstractProfileResults * takeResults()=0
Takes results from the generator.
QgsCoordinateTransform
Class for doing transforms between two map coordinate systems.
Definition: qgscoordinatetransform.h:57
QgsAbstractProfileGenerator::sourceId
virtual QString sourceId() const =0
Returns a unique identifier representing the source of the profile.
qgscoordinatereferencesystem.h
QgsAbstractProfileGenerator::generateProfile
virtual bool generateProfile(const QgsProfileGenerationContext &context=QgsProfileGenerationContext())=0
Generate the profile (based on data stored in the class).