2015-07-29 11:52:14 +02:00
|
|
|
/** Interface class for interpolations. Interpolators take
|
2012-09-24 02:28:15 +02:00
|
|
|
the vertices of a vector layer as base data. The z-Value
|
|
|
|
can be an attribute or the z-coordinates in case of 25D types*/
|
|
|
|
class QgsInterpolator
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include "qgsinterpolator.h"
|
|
|
|
%End
|
|
|
|
|
|
|
|
public:
|
2015-07-29 11:52:14 +02:00
|
|
|
/** Describes the type of input data*/
|
2012-09-24 02:28:15 +02:00
|
|
|
enum InputType
|
|
|
|
{
|
|
|
|
POINTS,
|
|
|
|
STRUCTURE_LINES,
|
|
|
|
BREAK_LINES
|
|
|
|
};
|
|
|
|
|
2015-07-29 11:52:14 +02:00
|
|
|
/** A layer together with the information about interpolation attribute / z-coordinate interpolation and the type (point, structure line, breakline)*/
|
2012-09-24 02:28:15 +02:00
|
|
|
struct LayerData
|
|
|
|
{
|
|
|
|
QgsVectorLayer* vectorLayer;
|
|
|
|
bool zCoordInterpolation;
|
|
|
|
int interpolationAttribute;
|
2012-09-29 16:18:45 +02:00
|
|
|
QgsInterpolator::InputType mInputType;
|
2012-09-24 02:28:15 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
QgsInterpolator( const QList<QgsInterpolator::LayerData>& layerData );
|
|
|
|
|
|
|
|
virtual ~QgsInterpolator();
|
|
|
|
|
2015-07-29 11:52:14 +02:00
|
|
|
/** Calculates interpolation value for map coordinates x, y
|
2012-09-24 02:28:15 +02:00
|
|
|
@param x x-coordinate (in map units)
|
|
|
|
@param y y-coordinate (in map units)
|
|
|
|
@param result out: interpolation result
|
|
|
|
@return 0 in case of success*/
|
|
|
|
virtual int interpolatePoint( double x, double y, double& result ) = 0;
|
|
|
|
|
2014-05-27 23:22:50 +02:00
|
|
|
// @note not available in python bindings
|
|
|
|
// const QList<LayerData>& layerData() const;
|
|
|
|
|
2012-09-24 02:28:15 +02:00
|
|
|
protected:
|
2015-07-29 11:52:14 +02:00
|
|
|
/** Caches the vertex and value data from the provider. All the vertex data
|
2012-09-24 02:28:15 +02:00
|
|
|
will be held in virtual memory
|
|
|
|
@return 0 in case of success*/
|
|
|
|
int cacheBaseData();
|
|
|
|
};
|