QGIS API Documentation  3.8.0-Zanzibar (11aff65)
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 
virtual QString outputName() const =0
Returns the translated, user visible name for any layers created by this algorithm.
virtual bool prepareAlgorithm(const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)
Prepares the algorithm to run using the specified parameters.
A rectangle specified with double values.
Definition: qgsrectangle.h:41
Base class for all map layer types.
Definition: qgsmaplayer.h:78
Base class for providing feedback from a processing algorithm.
virtual QgsFeatureList processFeature(const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)=0
Processes an individual input feature from the source.
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:571
virtual QString group() const
Returns the name of the group this algorithm belongs to.
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:111
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:55
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:68
#define SIP_FACTORY
Definition: qgis_sip.h:69
A store for object properties.
Definition: qgsproperty.h:229
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:37
Class for doing transforms between two map coordinate systems.
virtual void initParameters(const QVariantMap &configuration=QVariantMap())
Initializes any extra parameters added by the algorithm subclass.
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
An abstract QgsProcessingAlgorithm base class for processing algorithms which operate "feature-by-fea...
Contains information about the context in which a processing algorithm is executed.