26QString QgsZonalStatisticsAlgorithm::name()
const
28 return QStringLiteral(
"zonalstatistics" );
31QString QgsZonalStatisticsAlgorithm::displayName()
const
33 return QObject::tr(
"Zonal statistics (in place)" );
36QStringList QgsZonalStatisticsAlgorithm::tags()
const
38 return QObject::tr(
"stats,statistics,zones,layer,sum,maximum,minimum,mean,count,standard,deviation,"
39 "median,range,majority,minority,variety,variance,summary,raster" )
43QString QgsZonalStatisticsAlgorithm::group()
const
45 return QObject::tr(
"Raster analysis" );
48QString QgsZonalStatisticsAlgorithm::groupId()
const
50 return QStringLiteral(
"rasteranalysis" );
53QString QgsZonalStatisticsAlgorithm::shortDescription()
const
55 return QObject::tr(
"Calculates statistics for a raster layer's values for each feature of an overlapping polygon vector layer." );
58QString QgsZonalStatisticsAlgorithm::shortHelpString()
const
60 return QObject::tr(
"This algorithm calculates statistics of a raster layer for each feature "
61 "of an overlapping polygon vector layer. The results will be written in place." );
69QgsZonalStatisticsAlgorithm *QgsZonalStatisticsAlgorithm::createInstance()
const
71 return new QgsZonalStatisticsAlgorithm();
74void QgsZonalStatisticsAlgorithm::initAlgorithm(
const QVariantMap & )
76 QStringList statChoices;
77 statChoices.reserve( STATS.size() );
84 addParameter(
new QgsProcessingParameterBand( QStringLiteral(
"RASTER_BAND" ), QObject::tr(
"Raster band" ), 1, QStringLiteral(
"INPUT_RASTER" ) ) );
86 addParameter(
new QgsProcessingParameterString( QStringLiteral(
"COLUMN_PREFIX" ), QObject::tr(
"Output column prefix" ), QStringLiteral(
"_" ) ) );
88 addParameter(
new QgsProcessingParameterEnum( QStringLiteral(
"STATISTICS" ), QObject::tr(
"Statistics to calculate" ), statChoices,
true, QVariantList() << 0 << 1 << 2 ) );
95 QgsRasterLayer *rasterLayer = parameterAsRasterLayer( parameters, QStringLiteral(
"INPUT_RASTER" ), context );
99 mBand = parameterAsInt( parameters, QStringLiteral(
"RASTER_BAND" ), context );
100 if ( mBand < 1 || mBand > rasterLayer->
bandCount() )
101 throw QgsProcessingException( QObject::tr(
"Invalid band number for BAND (%1): Valid values for input raster are 1 to %2" ).arg( mBand ).arg( rasterLayer->
bandCount() ) );
104 mCrs = rasterLayer->
crs();
108 mPrefix = parameterAsString( parameters, QStringLiteral(
"COLUMN_PREFIX" ), context );
110 const QList<int> stats = parameterAsEnums( parameters, QStringLiteral(
"STATISTICS" ), context );
112 for (
const int s : stats )
114 mStats |= STATS.at( s );
122 QgsVectorLayer *layer = parameterAsVectorLayer( parameters, QStringLiteral(
"INPUT_VECTOR" ), context );
128 zs.calculateStatistics( feedback );
131 outputs.insert( QStringLiteral(
"INPUT_VECTOR" ), 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.