QGIS API Documentation  3.0.2-Girona (307d082)
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 
116  virtual int interpolatePoint( double x, double y, double &result SIP_OUT, QgsFeedback *feedback = nullptr ) = 0;
117 
119  QList<LayerData> layerData() const { return mLayerData; } SIP_SKIP
120 
121  protected:
122 
132  Result cacheBaseData( QgsFeedback *feedback = nullptr );
133 
135  QVector<QgsInterpolatorVertexData> mCachedBaseData;
136 
138  bool mDataIsCached = false;
139 
141  QList<LayerData> mLayerData;
142 
143  private:
144  QgsInterpolator() = delete;
145 
153  bool addVerticesToCache( const QgsGeometry &geom, ValueSource source, double attributeValue );
154 };
155 
156 #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:111
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.