17#ifndef QGSVECTORLAYERPROFILEGENERATOR_H 
   18#define QGSVECTORLAYERPROFILEGENERATOR_H 
   67    QHash< QgsFeatureId, QVector< Feature > > 
features;
 
   71    bool respectLayerSymbology = 
true;
 
   73    bool mShowMarkerSymbolInSurfacePlots = 
false;
 
   75    QString 
type() 
const override;
 
   90    void visitFeaturesAtPoint( 
const QgsProfilePoint &point, 
double maximumPointDistanceDelta, 
double maximumPointElevationDelta, 
double maximumSurfaceElevationDelta,
 
   91                               const std::function< 
void( 
QgsFeatureId, 
double delta, 
double distance, 
double elevation ) > &visitor, 
bool visitWithin );
 
 
  116    QString sourceId() 
const override;
 
  123    bool generateProfileForPoints();
 
  124    bool generateProfileForLines();
 
  125    bool generateProfileForPolygons();
 
  127    double terrainHeight( 
double x, 
double y );
 
  128    double featureZToHeight( 
double x, 
double y, 
double z, 
double offset );
 
  131    bool clampAltitudes( 
QgsPolygon *polygon, 
double offset );
 
  134    std::unique_ptr<QgsFeedback> mFeedback = 
nullptr;
 
  137    std::unique_ptr< QgsGeos > mProfileCurveEngine;
 
  139    std::unique_ptr< QgsAbstractTerrainProvider > mTerrainProvider;
 
  141    std::unique_ptr< QgsCurve > mTransformedCurve;
 
  142    double mTolerance = 0;
 
  150    std::unique_ptr< QgsVectorLayerFeatureSource > mSource;
 
  157    bool mExtrusionEnabled = 
false;
 
  158    double mExtrusionHeight = 0;
 
  168    std::unique_ptr< QgsVectorLayerProfileResults > mResults;
 
  170    bool mRespectLayerSymbology = 
true;
 
  171    std::unique_ptr< QgsMarkerSymbol > mProfileMarkerSymbol;
 
  172    bool mShowMarkerSymbolInSurfacePlots = 
false;
 
  175    QPointer< QgsVectorLayer > mLayer;
 
 
AltitudeClamping
Altitude clamping.
@ Terrain
Elevation is clamped to terrain (final elevation = terrain elevation)
AltitudeBinding
Altitude binding.
@ Centroid
Clamp just centroid of feature.
VectorProfileType
Types of elevation profiles to generate for vector sources.
@ IndividualFeatures
Treat each feature as an individual object (eg buildings)
ProfileExportType
Types of export for elevation profiles.
WkbType
The WKB type describes the number of dimensions a geometry has.
Abstract base class for objects which generate elevation profiles.
Abstract base class for storage of elevation profiles.
virtual QString type() const =0
Returns the unique string identifier for the results type.
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....
void renderResults(QgsProfileRenderContext &context) override
Renders the results to the specified context.
void copyPropertiesFromGenerator(const QgsAbstractProfileGenerator *generator) override
Copies properties from specified generator to the results object.
std::unique_ptr< QgsCurve > mProfileCurve
QVector< QgsAbstractProfileResults::Feature > asFeatures(Qgis::ProfileExportType type, QgsFeedback *feedback=nullptr) const override
Returns a list of features representing the calculated elevation results.
QVector< QgsGeometry > asGeometries() const override
Returns a list of geometries representing the calculated elevation results.
QVector< QgsProfileIdentifyResults > identify(const QgsProfilePoint &point, const QgsProfileIdentifyContext &context) override
Identify results visible at the specified profile point.
QgsProfileSnapResult snapPoint(const QgsProfilePoint &point, const QgsProfileSnapContext &context) override
Snaps a point to the generated elevation profile.
Abstract base class for terrain providers.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for curved geometry type.
QgsRange which stores a range of double values.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
Does vector analysis using the geos library and handles import, export, exception handling*.
Line string geometry type, with support for z-dimension and m-values.
Point geometry type, with support for z-dimension and m-values.
Encapsulates the context in which an elevation profile is to be generated.
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.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
A rectangle specified with double values.
Partial snapshot of vector layer's state (only the members necessary for access to features)
Implementation of QgsAbstractProfileGenerator for vector layers.
~QgsVectorLayerProfileGenerator() override
Implementation of QgsAbstractProfileResults for vector layers.
std::unique_ptr< QgsMarkerSymbol > mMarkerSymbol
QPointer< QgsVectorLayer > mLayer
QHash< QgsFeatureId, QVector< Feature > > features
Represents a vector layer which manages a vector based data sets.
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
QgsGeometry crossSectionGeometry
Cross section distance vs height geometry for feature.
QgsFeatureId featureId
Original feature ID.
QgsGeometry geometry
Feature's geometry with any terrain height adjustment and extrusion applied.