1 /*************************************************************************** 2 qgsalgorithmlinedensity.h 3 --------------------- 4 begin : December 2019 5 copyright : (C) 2019 by Clemens Raffler 6 email : clemens dot raffler at gmail dot com 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 QGSALGORITHMLINEDENSITY_H 19 #define QGSALGORITHMLINEDENSITY_H 20 21 #define SIP_NO_FILE 22 23 #include "qgis_sip.h" 24 #include "qgsprocessingalgorithm.h" 25 #include "qgsapplication.h" 26 27 ///@cond PRIVATE 28 29 /** 30 * Line Density Algorithm as implemented in ESRI ArcGIS Spatial Analyst 31 * 32 * Literature: 33 * Silverman, B.w. Density Estimation for Statistics and Data Analsis. 34 * New York: Chapman and Hall, 1986 35 * 36 */ 37 class QgsLineDensityAlgorithm : public QgsProcessingAlgorithm 38 { 39 public: 40 41 QgsLineDensityAlgorithm() = default; 42 void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override; icon()43 QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/algorithms/mAlgorithmLineDensity.svg" ) ); } svgIconPath()44 QString svgIconPath() const override { return QgsApplication::iconPath( QStringLiteral( "/algorithms/mAlgorithmLineDensity.svg" ) ); } 45 QString name() const override; 46 QString displayName() const override; 47 QStringList tags() const override; 48 QString group() const override; 49 QString groupId() const override; 50 QString shortHelpString() const override; 51 QgsLineDensityAlgorithm *createInstance() const override SIP_FACTORY; 52 53 protected: 54 bool prepareAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override; 55 QVariantMap processAlgorithm( const QVariantMap ¶meters, 56 QgsProcessingContext &context, 57 QgsProcessingFeedback *feedback ) override; 58 59 private: 60 std::unique_ptr< QgsFeatureSource > mSource; 61 QString mWeightField; 62 double mSearchRadius; 63 double mPixelSize; 64 QgsGeometry mSearchGeometry; 65 QgsRectangle mExtent; 66 QgsCoordinateReferenceSystem mCrs; 67 QgsDistanceArea mDa; 68 QgsSpatialIndex mIndex; 69 QHash<QgsFeatureId, double> mFeatureWeights; 70 71 }; 72 73 ///@endcond PRIVATE 74 75 #endif // QGSALGORITHMLINEDENSITY_H 76