QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsabstractprofilesurfacegenerator.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsabstractprofilesurfacegenerator.h
3 ---------------
4 begin : April 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 QGSABSTRACTPROFILESURFACEGENERATOR_H
18#define QGSABSTRACTPROFILESURFACEGENERATOR_H
19
20#include "qgis_core.h"
21#include "qgis_sip.h"
23
24#include <memory>
25
26#include <qgslinesymbol.h>
27#include <qgsfillsymbol.h>
28
30
31#define SIP_NO_FILE
32
41{
42 public:
43
45
46 QString mId;
48 QMap< double, double > mDistanceToHeightMap;
49 double minZ = std::numeric_limits< double >::max();
50 double maxZ = std::numeric_limits< double >::lowest();
51
53 std::unique_ptr< QgsLineSymbol > mLineSymbol;
54 std::unique_ptr< QgsFillSymbol > mFillSymbol;
55 double mElevationLimit = std::numeric_limits< double >::quiet_NaN();
56
57 std::unique_ptr< QgsCurve > mProfileCurve;
58
59 QMap< double, double > distanceToHeightMap() const override;
60 QgsPointSequence sampledPoints() const override;
61 QgsDoubleRange zRange() const override;
62 QVector< QgsGeometry > asGeometries() const override;
63 QVector< QgsAbstractProfileResults::Feature > asFeatures( Qgis::ProfileExportType type, QgsFeedback *feedback = nullptr ) const override;
64 QgsProfileSnapResult snapPoint( const QgsProfilePoint &point, const QgsProfileSnapContext &context ) override;
65 QVector<QgsProfileIdentifyResults> identify( const QgsProfilePoint &point, const QgsProfileIdentifyContext &context ) override;
66 void renderResults( QgsProfileRenderContext &context ) override;
67 void copyPropertiesFromGenerator( const QgsAbstractProfileGenerator *generator ) override;
68};
69
78{
79 public:
80
85
87
91 Qgis::ProfileSurfaceSymbology symbology() const;
92
96 QgsLineSymbol *lineSymbol() const;
97
101 QgsFillSymbol *fillSymbol() const;
102
113 double elevationLimit() const;
114
125 void setElevationLimit( double limit );
126
127 protected:
128
130 std::unique_ptr< QgsLineSymbol > mLineSymbol;
131 std::unique_ptr< QgsFillSymbol > mFillSymbol;
132 double mElevationLimit = std::numeric_limits< double >::quiet_NaN();
133
134 std::unique_ptr< QgsCurve > mProfileCurve;
135
137
138};
139
140
141#endif // QGSABSTRACTPROFILESURFACEGENERATOR_H
ProfileExportType
Types of export for elevation profiles.
Definition: qgis.h:3475
ProfileSurfaceSymbology
Surface symbology type for elevation profile plots.
Definition: qgis.h:3435
@ Line
The elevation surface will be rendered using a line symbol.
Abstract base class for objects which generate elevation profiles.
Abstract base class for storage of elevation profiles.
virtual QgsDoubleRange zRange() const =0
Returns the range of the retrieved elevation values.
virtual void renderResults(QgsProfileRenderContext &context)=0
Renders the results to the specified context.
virtual QMap< double, double > distanceToHeightMap() const =0
Returns the map of distance (chainage) to height.
virtual QVector< QgsAbstractProfileResults::Feature > asFeatures(Qgis::ProfileExportType type, QgsFeedback *feedback=nullptr) const
Returns a list of features representing the calculated elevation results.
virtual QgsPointSequence sampledPoints() const =0
Returns a list of sampled points, with their calculated elevation as the point z value.
virtual QgsProfileSnapResult snapPoint(const QgsProfilePoint &point, const QgsProfileSnapContext &context)
Snaps a point to the generated elevation profile.
virtual QVector< QgsProfileIdentifyResults > identify(const QgsProfilePoint &point, const QgsProfileIdentifyContext &context)
Identify results visible at the specified profile point.
virtual QVector< QgsGeometry > asGeometries() const =0
Returns a list of geometries representing the calculated elevation results.
virtual void copyPropertiesFromGenerator(const QgsAbstractProfileGenerator *generator)
Copies properties from specified generator to the results object.
Abstract base class for objects which generate elevation profiles which represent a continuous surfac...
Abstract base class for storage of elevation profiles which represent a continuous surface (e....
std::unique_ptr< QgsFillSymbol > mFillSymbol
std::unique_ptr< QgsLineSymbol > mLineSymbol
QgsRange which stores a range of double values.
Definition: qgsrange.h:231
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:44
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Definition: qgsfillsymbol.h:30
A line symbol type, for rendering LineString and MultiLineString geometries.
Definition: qgslinesymbol.h:30
Encapsulates the context of identifying profile results.
Encapsulates a point on a distance-elevation profile.
Abstract base class for storage of elevation profiles.
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
Encapsulates the context of snapping a profile point.
Encapsulates results of snapping a profile point.
QVector< QgsPoint > QgsPointSequence