QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
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 
QgsProperty
A store for object properties.
Definition: qgsproperty.h:232
QgsPoint
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:38
QgsProcessingFeedback
Base class for providing feedback from a processing algorithm.
Definition: qgsprocessingfeedback.h:38
QgsProcessingFeatureBasedAlgorithm::initParameters
virtual void initParameters(const QVariantMap &configuration=QVariantMap())
Initializes any extra parameters added by the algorithm subclass.
Definition: qgsprocessingalgorithm.cpp:962
QgsProcessingAlgorithm::groupId
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
Definition: qgsprocessingalgorithm.h:233
QgsProcessingAlgorithm::prepareAlgorithm
virtual bool prepareAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)
Prepares the algorithm to run using the specified parameters.
Definition: qgsprocessingalgorithm.cpp:373
QgsRectangle
A rectangle specified with double values.
Definition: qgsrectangle.h:42
QgsProcessingFeatureBasedAlgorithm
An abstract QgsProcessingAlgorithm base class for processing algorithms which operate "feature-by-fea...
Definition: qgsprocessingalgorithm.h:1073
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsProcessingFeatureBasedAlgorithm::processFeature
virtual QgsFeatureList processFeature(const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)=0
Processes an individual input feature from the source.
QgsProcessingContext
Contains information about the context in which a processing algorithm is executed.
Definition: qgsprocessingcontext.h:44
qgsprocessingalgorithm.h
qgis_sip.h
QgsFeatureList
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:583
QgsProcessingFeatureBasedAlgorithm::outputName
virtual QString outputName() const =0
Returns the translated, user visible name for any layers created by this algorithm.
QgsGeometry
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:124
QgsMapLayer
Base class for all map layer types.
Definition: qgsmaplayer.h:83
QgsProcessingAlgorithm::group
virtual QString group() const
Returns the name of the group this algorithm belongs to.
Definition: qgsprocessingalgorithm.h:224
QgsFeature
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:56
QgsWkbTypes
Handles storage of information regarding WKB types and their properties.
Definition: qgswkbtypes.h:42
QgsCoordinateTransform
Class for doing transforms between two map coordinate systems.
Definition: qgscoordinatetransform.h:53