QGIS API Documentation  3.21.0-Master (56b4176581)
qgsalgorithmdrape.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsalgorithmdrape.h
3  ---------------------
4  begin : November 2017
5  copyright : (C) 2017 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 
18 #ifndef QGSALGORITHMDRAPE_H
19 #define QGSALGORITHMDRAPE_H
20 
21 #define SIP_NO_FILE
22 
23 #include "qgis_sip.h"
24 #include "qgsprocessingalgorithm.h"
25 
27 
31 class QgsDrapeAlgorithmBase : public QgsProcessingFeatureBasedAlgorithm
32 {
33 
34  public:
35 
36  QString group() const override;
37  QString groupId() const override;
38  void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
39 
40  protected:
41  QString outputName() const override;
42  bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
43  QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
44 
45  private:
46 
47  virtual void prepareGeometry( QgsGeometry &geometry, double defaultVal ) const = 0;
48  virtual QgsPoint drapeVertex( const QgsPoint &vertex, double rasterVal ) const = 0;
49 
50  double mNoData = 0.0;
51  bool mDynamicNoData = false;
52  QgsProperty mNoDataProperty;
53 
54  double mScale = 1.0;
55  bool mDynamicScale = false;
56  QgsProperty mScaleProperty;
57 
58  std::unique_ptr< QgsRasterDataProvider > mRasterProvider;
59  int mBand = 1;
60  QgsRectangle mRasterExtent;
61  bool mCreatedTransform = false;
62  QgsCoordinateTransform mTransform;
63 
64 };
65 
66 class QgsDrapeToZAlgorithm : public QgsDrapeAlgorithmBase
67 {
68  public:
69 
70  QString name() const override;
71  QString displayName() const override;
72  QStringList tags() const override;
73  QString shortHelpString() const override;
74  QString shortDescription() const override;
75  QgsDrapeToZAlgorithm *createInstance() const override SIP_FACTORY;
76  bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
77 
78  protected:
79 
80  QgsWkbTypes::Type outputWkbType( QgsWkbTypes::Type inputWkbType ) const override;
81 
82  private:
83  void prepareGeometry( QgsGeometry &geometry, double defaultVal ) const override;
84  QgsPoint drapeVertex( const QgsPoint &vertex, double rasterVal ) const override;
85 
86 
87 };
88 
89 
90 class QgsDrapeToMAlgorithm : public QgsDrapeAlgorithmBase
91 {
92  public:
93 
94  QString name() const override;
95  QString displayName() const override;
96  QStringList tags() const override;
97  QString shortHelpString() const override;
98  QString shortDescription() const override;
99  QgsDrapeToMAlgorithm *createInstance() const override SIP_FACTORY;
100  bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
101 
102  protected:
103 
104  QgsWkbTypes::Type outputWkbType( QgsWkbTypes::Type inputWkbType ) const override;
105 
106  private:
107  void prepareGeometry( QgsGeometry &geometry, double defaultVal ) const override;
108  QgsPoint drapeVertex( const QgsPoint &vertex, double rasterVal ) const override;
109 
110 };
111 
113 
114 #endif // QGSALGORITHMDRAPE_H
115 
116 
Class for doing transforms between two map coordinate systems.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:124
Base class for all map layer types.
Definition: qgsmaplayer.h:72
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
virtual QString group() const
Returns the name of the group this algorithm belongs to.
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
virtual bool prepareAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)
Prepares the algorithm to run using the specified parameters.
Contains information about the context in which a processing algorithm is executed.
An abstract QgsProcessingAlgorithm base class for processing algorithms which operate "feature-by-fea...
virtual void initParameters(const QVariantMap &configuration=QVariantMap())
Initializes any extra parameters added by the algorithm subclass.
virtual QString outputName() const =0
Returns the translated, user visible name for any layers created by this algorithm.
virtual QgsFeatureList processFeature(const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)=0
Processes an individual input feature from the source.
Base class for providing feedback from a processing algorithm.
A store for object properties.
Definition: qgsproperty.h:232
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Handles storage of information regarding WKB types and their properties.
Definition: qgswkbtypes.h:42
#define SIP_FACTORY
Definition: qgis_sip.h:76
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:834