24using namespace Qt::StringLiterals;
28QString QgsRasterLayerPropertiesAlgorithm::name()
const
30 return u
"rasterlayerproperties"_s;
33QString QgsRasterLayerPropertiesAlgorithm::displayName()
const
35 return QObject::tr(
"Raster layer properties" );
38QStringList QgsRasterLayerPropertiesAlgorithm::tags()
const
40 return QObject::tr(
"extent,pixel,size,width,height" ).split(
',' );
43QString QgsRasterLayerPropertiesAlgorithm::group()
const
45 return QObject::tr(
"Raster analysis" );
48QString QgsRasterLayerPropertiesAlgorithm::groupId()
const
50 return u
"rasteranalysis"_s;
53void QgsRasterLayerPropertiesAlgorithm::initAlgorithm(
const QVariantMap & )
73QString QgsRasterLayerPropertiesAlgorithm::shortDescription()
const
75 return QObject::tr(
"Returns basic properties of a given raster layer, including the extent, size in pixels and dimensions of pixels (in map units)." );
78QString QgsRasterLayerPropertiesAlgorithm::shortHelpString()
const
81 "This algorithm returns basic properties of the given raster layer, including the extent, size in pixels and dimensions of pixels (in map units).\n\n"
82 "If an optional band number is specified then the NoData value for the selected band will also be returned."
86QgsRasterLayerPropertiesAlgorithm *QgsRasterLayerPropertiesAlgorithm::createInstance()
const
88 return new QgsRasterLayerPropertiesAlgorithm();
93 QGS_MARK_ALGORITHM_SOURCE
95 QgsRasterLayer *layer = parameterAsRasterLayer( parameters, u
"INPUT"_s, context );
100 mBandCount = layer->bandCount();
102 if ( parameters.value( u
"BAND"_s ).isValid() )
104 const int band = parameterAsInt( parameters, u
"BAND"_s, context );
105 if ( band < 1 || band > mBandCount )
106 throw QgsProcessingException( QObject::tr(
"Invalid band number for BAND (%1): Valid values for input raster are 1 to %2" ).arg( band ).arg( layer->bandCount() ) );
107 mHasNoDataValue = layer->dataProvider()->sourceHasNoDataValue( band );
108 if ( mHasNoDataValue )
109 mNoDataValue = layer->dataProvider()->sourceNoDataValue( band );
112 mLayerWidth = layer->width();
113 mLayerHeight = layer->height();
114 mExtent = layer->extent();
116 mRasterUnitsPerPixelX = layer->rasterUnitsPerPixelX();
117 mRasterUnitsPerPixelY = layer->rasterUnitsPerPixelY();
125 outputs.insert( u
"EXTENT"_s, mExtent.toString() );
126 outputs.insert( u
"X_MIN"_s, mExtent.xMinimum() );
127 outputs.insert( u
"X_MAX"_s, mExtent.xMaximum() );
128 outputs.insert( u
"Y_MIN"_s, mExtent.yMinimum() );
129 outputs.insert( u
"Y_MAX"_s, mExtent.yMaximum() );
131 outputs.insert( u
"PIXEL_WIDTH"_s, mRasterUnitsPerPixelX );
132 outputs.insert( u
"PIXEL_HEIGHT"_s, mRasterUnitsPerPixelY );
134 outputs.insert( u
"CRS_AUTHID"_s, mCrs.authid() );
135 outputs.insert( u
"WIDTH_IN_PIXELS"_s, mLayerWidth );
136 outputs.insert( u
"HEIGHT_IN_PIXELS"_s, mLayerHeight );
138 outputs.insert( u
"HAS_NODATA_VALUE"_s, mHasNoDataValue );
139 if ( mHasNoDataValue )
140 outputs.insert( u
"NODATA_VALUE"_s, mNoDataValue );
141 outputs.insert( u
"BAND_COUNT"_s, mBandCount );
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 boolean output for processing algorithms.
A numeric output for processing algorithms.
A string output for processing algorithms.
A raster band parameter for Processing algorithms.
A raster layer parameter for processing algorithms.
Represents a raster layer.