QGIS API Documentation  3.6.0-Noosa (5873452)
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 "qgis_sip.h"
23 #include "qgis_analysis.h"
24 
25 class QgsFeatureSource;
26 class QgsGeometry;
27 class QgsFeedback;
28 
33 struct ANALYSIS_EXPORT QgsInterpolatorVertexData
34 {
35 
40  QgsInterpolatorVertexData( double x, double y, double z )
41  : x( x )
42  , y( y )
43  , z( z )
44  {}
45 
47  QgsInterpolatorVertexData() = default;
48 
50  double x = 0.0;
52  double y = 0.0;
54  double z = 0.0;
55 };
56 
63 class ANALYSIS_EXPORT QgsInterpolator
64 {
65  public:
66 
69  {
73  };
74 
77  {
81  };
82 
84  enum Result
85  {
86  Success = 0,
90  };
91 
93  struct LayerData
94  {
96  QgsFeatureSource *source = nullptr;
100  int interpolationAttribute = -1;
102  QgsInterpolator::SourceType sourceType = SourcePoints;
103  };
104 
105  QgsInterpolator( const QList<QgsInterpolator::LayerData> &layerData );
106 
107  virtual ~QgsInterpolator() = default;
108 
117  virtual int interpolatePoint( double x, double y, double &result SIP_OUT, QgsFeedback *feedback = nullptr ) = 0;
118 
120  QList<LayerData> layerData() const { return mLayerData; } SIP_SKIP
121 
122  protected:
123 
133  Result cacheBaseData( QgsFeedback *feedback = nullptr );
134 
136  QVector<QgsInterpolatorVertexData> mCachedBaseData;
137 
139  bool mDataIsCached = false;
140 
142  QList<LayerData> mLayerData;
143 
144  private:
145  QgsInterpolator() = delete;
146 
154  bool addVerticesToCache( const QgsGeometry &geom, ValueSource source, double attributeValue );
155 };
156 
157 #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:106
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 cancelation 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:119
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:51
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.