Skip to content
Browse files

Move heatmap generation code to analysis lib

And clean it up a lot
  • Loading branch information
nyalldawson committed Dec 6, 2016
1 parent c558d51 commit f2127464d304fbe1ee7e0b0deb45ae6e9905e032
@@ -44,6 +44,7 @@
%Include raster/qgsderivativefilter.sip
%Include raster/qgsaspectfilter.sip
%Include raster/qgshillshadefilter.sip
%Include raster/qgskde.sip
%Include raster/qgsninecellfilter.sip
%Include raster/qgsrastercalcnode.sip
%Include raster/qgsrastercalculator.sip
@@ -0,0 +1,104 @@
* \class QgsKernelDensityEstimation
* \ingroup analysis
* Performs Kernel Density Estimation ("heatmap") calculations on a vector layer.
* @note added in QGIS 3.0
class QgsKernelDensityEstimation
#include <qgskde.h>


//! Kernel shape type
enum KernelShape
KernelQuartic, //!< Quartic kernel
KernelTriangular, //!< Triangular kernel
KernelUniform, //!< Uniform (flat) kernel
KernelTriweight, //!< Triweight kernel
KernelEpanechnikov, //!< Epanechnikov kernel

//! Output values type
enum OutputValues
OutputRaw, //!< Output the raw KDE values
OutputScaled, //!< Output mathematically correct scaled values

//! Result of operation
enum Result
Success, //!< Operation completed successfully
DriverError, //!< Could not open the driver for the specified format
InvalidParameters, //!< Input parameters were not valid
FileCreationError, //!< Error creating output file
RasterIoError, //!< Error writing to raster

//! KDE parameters
struct Parameters
//! Vector point layer
QgsVectorLayer* vectorLayer;

//! Fixed radius, in map units
double radius;

//! Field for radius, or empty if using a fixed radius
QString radiusField;

//! Field name for weighting field, or empty if not using weights
QString weightField;

//! Size of pixel in output file
double pixelSize;

//! Kernel shape
QgsKernelDensityEstimation::KernelShape shape;

//! Decay ratio (Triangular kernels only)
double decayRatio;

//! Type of output value
QgsKernelDensityEstimation::OutputValues outputValues;

* Constructor for QgsKernelDensityEstimation. Requires a Parameters object specifying the options to use
* to generate the surface. The output path and file format are also required.
QgsKernelDensityEstimation( const Parameters& parameters, const QString& outputFile, const QString& outputFormat );

* Runs the KDE calculation across the whole layer at once. Either call this method, or manually
* call run(), addFeature() and finalise() separately.
Result run();

* Prepares the output file for writing and setups up the surface calculation. This must be called
* before adding features via addFeature().
* @see addFeature()
* @see finalise()
Result prepare();

* Adds a single feature to the KDE surface. prepare() must be called before adding features.
* @see prepare()
* @see finalise()
Result addFeature( const QgsFeature& feature );

* Finalises the output file. Must be called after adding all features via addFeature().
* @see prepare()
* @see addFeature()
Result finalise();

@@ -27,6 +27,7 @@ SET(QGIS_ANALYSIS_SRCS
@@ -106,6 +107,7 @@ SET(QGIS_ANALYSIS_HDRS

0 comments on commit f212746

Please sign in to comment.
You can’t perform that action at this time.