QGIS API Documentation  3.9.0-Master (224899f119)
qgsinterpolator.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsinterpolator.h
3  ------------------------
4  begin : March 10, 2008
5  copyright : (C) 2008 by Marco Hugentobler
6  email : marco dot hugentobler at karto dot baug dot ethz dot ch
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 QGSINTERPOLATOR_H
19 #define QGSINTERPOLATOR_H
20 
21 #include <QVector>
22 #include <QList>
23 #include "qgis_sip.h"
24 #include "qgis_analysis.h"
25 
26 class QgsFeatureSource;
27 class QgsGeometry;
28 class QgsFeedback;
29 
34 struct ANALYSIS_EXPORT QgsInterpolatorVertexData
35 {
36 
41  QgsInterpolatorVertexData( double x, double y, double z )
42  : x( x )
43  , y( y )
44  , z( z )
45  {}
46 
48  QgsInterpolatorVertexData() = default;
49 
51  double x = 0.0;
53  double y = 0.0;
55  double z = 0.0;
56 };
57 
64 class ANALYSIS_EXPORT QgsInterpolator
65 {
66  public:
67 
70  {
74  };
75 
78  {
82  };
83 
85  enum Result
86  {
87  Success = 0,
91  };
92 
94  struct LayerData
95  {
97  QgsFeatureSource *source = nullptr;
101  int interpolationAttribute = -1;
103  QgsInterpolator::SourceType sourceType = SourcePoints;
104  };
105 
106  QgsInterpolator( const QList<QgsInterpolator::LayerData> &layerData );
107 
108  virtual ~QgsInterpolator() = default;
109 
118  virtual int interpolatePoint( double x, double y, double &result SIP_OUT, QgsFeedback *feedback = nullptr ) = 0;
119 
121  QList<LayerData> layerData() const { return mLayerData; } SIP_SKIP
122 
123  protected:
124 
134  Result cacheBaseData( QgsFeedback *feedback = nullptr );
135 
137  QVector<QgsInterpolatorVertexData> mCachedBaseData;
138 
140  bool mDataIsCached = false;
141 
143  QList<LayerData> mLayerData;
144 
145  private:
146  QgsInterpolator() = delete;
147 
155  bool addVerticesToCache( const QgsGeometry &geom, ValueSource source, double attributeValue );
156 };
157 
158 #endif
QList< LayerData > mLayerData
Information about the input vector layers and the attributes (or z-values) that are used for interpol...
Interface class for interpolations.
Operation failed due to invalid source.
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:121
SourceType
Describes the type of input data.
Operation was manually canceled.
Interpolation data for an individual source vertex.
Base class for feedback objects to be used for cancellation of something running in a worker thread...
Definition: qgsfeedback.h:44
ValueSource
Source for interpolated values from features.
Take value from feature&#39;s attribute.
QVector< QgsInterpolatorVertexData > mCachedBaseData
Cached vertex data for input sources.
#define SIP_SKIP
Definition: qgis_sip.h:126
QList< LayerData > layerData() const
Use feature&#39;s geometry Z values for interpolation.
Result
Result of an interpolation operation.
A source together with the information about interpolation attribute / z-coordinate interpolation and...
An interface for objects which provide features via a getFeatures method.
#define SIP_OUT
Definition: qgis_sip.h:58
Use feature&#39;s geometry M values for interpolation.
Operation failed due to invalid feature geometry.
QgsInterpolatorVertexData(double x, double y, double z)
Constructor for QgsInterpolatorVertexData with the specified x, y, and z coordinate.