26using namespace Qt::StringLiterals;
30QString QgsZonalStatisticsAlgorithm::name()
const
32 return u
"zonalstatistics"_s;
35QString QgsZonalStatisticsAlgorithm::displayName()
const
37 return QObject::tr(
"Zonal statistics (in place)" );
40QStringList QgsZonalStatisticsAlgorithm::tags()
const
43 "stats,statistics,zones,layer,sum,maximum,minimum,mean,count,standard,deviation,"
44 "median,range,majority,minority,variety,variance,summary,raster"
49QString QgsZonalStatisticsAlgorithm::group()
const
51 return QObject::tr(
"Raster analysis" );
54QString QgsZonalStatisticsAlgorithm::groupId()
const
56 return u
"rasteranalysis"_s;
59QString QgsZonalStatisticsAlgorithm::shortDescription()
const
61 return QObject::tr(
"Calculates statistics for a raster layer's values for each feature of an overlapping polygon vector layer." );
64QString QgsZonalStatisticsAlgorithm::shortHelpString()
const
67 "This algorithm calculates statistics of a raster layer for each feature "
68 "of an overlapping polygon vector layer. The results will be written in place."
77QgsZonalStatisticsAlgorithm *QgsZonalStatisticsAlgorithm::createInstance()
const
79 return new QgsZonalStatisticsAlgorithm();
82void QgsZonalStatisticsAlgorithm::initAlgorithm(
const QVariantMap & )
84 QStringList statChoices;
85 statChoices.reserve( STATS.size() );
96 addParameter(
new QgsProcessingParameterEnum( u
"STATISTICS"_s, QObject::tr(
"Statistics to calculate" ), statChoices,
true, QVariantList() << 0 << 1 << 2 ) );
103 QgsRasterLayer *rasterLayer = parameterAsRasterLayer( parameters, u
"INPUT_RASTER"_s, context );
107 mBand = parameterAsInt( parameters, u
"RASTER_BAND"_s, context );
108 if ( mBand < 1 || mBand > rasterLayer->
bandCount() )
109 throw QgsProcessingException( QObject::tr(
"Invalid band number for BAND (%1): Valid values for input raster are 1 to %2" ).arg( mBand ).arg( rasterLayer->
bandCount() ) );
112 mCrs = rasterLayer->
crs();
116 mPrefix = parameterAsString( parameters, u
"COLUMN_PREFIX"_s, context );
118 const QList<int> stats = parameterAsEnums( parameters, u
"STATISTICS"_s, context );
120 for (
const int s : stats )
122 mStats |= STATS.at( s );
130 QgsVectorLayer *layer = parameterAsVectorLayer( parameters, u
"INPUT_VECTOR"_s, context );
136 zs.calculateStatistics( feedback );
139 outputs.insert( u
"INPUT_VECTOR"_s, layer->
id() );
@ VectorPolygon
Vector polygon layers.
ZonalStatistic
Statistics to be calculated during a zonal statistics operation.
QFlags< ProcessingAlgorithmFlag > ProcessingAlgorithmFlags
Flags indicating how and when an algorithm operates and should be exposed to users.
QFlags< ZonalStatistic > ZonalStatistics
Statistics to be calculated during a zonal statistics operation.
@ Deprecated
Algorithm is deprecated.
@ NoThreading
Algorithm is not thread safe and cannot be run in a background thread, e.g. for algorithms which mani...
QgsCoordinateReferenceSystem crs
virtual Qgis::ProcessingAlgorithmFlags flags() const
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
Base class for providing feedback from a processing algorithm.
A vector layer output for processing algorithms.
A raster band parameter for Processing algorithms.
An enum based parameter for processing algorithms, allowing for selection from predefined values.
A raster layer parameter for processing algorithms.
A string parameter for processing algorithms.
A vector layer (with or without geometry) parameter for processing algorithms.
QgsRasterDataProvider * clone() const override=0
Clone itself, create deep copy.
Represents a raster layer.
int bandCount() const
Returns the number of bands in this layer.
double rasterUnitsPerPixelX() const
Returns the number of raster units per each raster pixel in X axis.
QgsRasterDataProvider * dataProvider() override
Returns the source data provider.
double rasterUnitsPerPixelY() const
Returns the number of raster units per each raster pixel in Y axis.
Represents a vector layer which manages a vector based dataset.
Calculates raster statistics (count, sum, mean) for a polygon or multipolygon layer and appends the r...
static QString displayName(Qgis::ZonalStatistic statistic)
Returns the friendly display name for a statistic.