38 if ( !input.isValid() )
41 if ( qobject_cast< QgsRasterLayer * >( qvariant_cast<QObject *>( input ) ) )
46 if ( input.userType() == QMetaType::Type::QString )
48 if ( input.toString().isEmpty() )
57 else if ( input.userType() == QMetaType::Type::QVariantList )
59 if ( input.toList().isEmpty() )
62 const QVariantList layerList = input.toList();
63 for (
const QVariant &variantLayer : layerList )
65 if ( qobject_cast< QgsRasterLayer * >( qvariant_cast<QObject *>( variantLayer ) ) )
68 if ( variantLayer.userType() == QMetaType::Type::QString )
77 else if ( variantLayer.userType() == QMetaType::Type::QVariantMap )
79 const QVariantMap layerMap = variantLayer.toMap();
81 if ( !layerMap.contains( QStringLiteral(
"inputFile" ) ) && !layerMap.contains( QStringLiteral(
"outputFile" ) ) )
100 else if ( input.userType() == QMetaType::Type::QStringList )
102 const auto constToStringList = input.toStringList();
103 if ( constToStringList.isEmpty() )
109 for (
const QString &v : constToStringList )
123 const QList<QgsAlignRasterData::RasterItem> items =
parameterAsItems( value, context );
126 QStringList layerDefParts;
132 const QString layerDef = QStringLiteral(
"{%1}" ).arg( layerDefParts.join(
',' ) );
135 return parts.join(
',' ).prepend(
'[' ).append(
']' );
140 switch ( outputType )
144 QString code = QStringLiteral(
"QgsProcessingParameterAlignRasterLayers('%1', %2)" )
164 QList<QgsAlignRasterData::RasterItem> items;
166 if ( qobject_cast< QgsRasterLayer * >( qvariant_cast<QObject *>( layersVariant ) ) )
169 vm[
"inputFile"] = layersVariant;
173 if ( layersVariant.userType() == QMetaType::Type::QString )
176 vm[
"inputFile"] = layersVariant;
179 else if ( layersVariant.userType() == QMetaType::Type::QVariantList )
181 const QVariantList layersVariantList = layersVariant.toList();
182 for (
const QVariant &layerItem : layersVariantList )
184 if ( layerItem.userType() == QMetaType::Type::QVariantMap )
186 const QVariantMap layerVariantMap = layerItem.toMap();
189 else if ( layerItem.userType() == QMetaType::Type::QString )
192 vm[
"inputFile"] = layerItem;
197 else if ( layersVariant.userType() == QMetaType::Type::QStringList )
199 const auto layersStringList = layersVariant.toStringList();
200 for (
const QString &layerItem : layersStringList )
203 vm[
"inputFile"] = layerItem;
207 else if ( layersVariant.userType() == QMetaType::Type::QVariantMap )
209 const QVariantMap layerVariantMap = layersVariant.toMap();
218 const QVariant layerVariant = layerVariantMap[ QStringLiteral(
"inputFile" ) ];
221 if ( ( inputLayer = qobject_cast< QgsRasterLayer * >( qvariant_cast<QObject *>( layerVariant ) ) ) )
237 item.
rescaleValues = layerVariantMap.value( QStringLiteral(
"rescale" ),
false ).toBool();
246 vm[ QStringLiteral(
"resampleMethod" ) ] =
static_cast<int>( item.
resampleMethod );
GdalResampleAlgorithm
Resampling algorithm to be used (equivalent to GDAL's enum GDALResampleAlg).
@ Optional
Parameter is optional.
Base class for all map layer types.
QString source() const
Returns the source for the layer.
Contains information about the context in which a processing algorithm is executed.
QVariant valueAsJsonObject(const QVariant &value, QgsProcessingContext &context) const override
Returns a version of the parameter input value, which is suitable for use in a JSON object.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString valueAsPythonString(const QVariant &value, QgsProcessingContext &context) const override
Returns a string version of the parameter input value, which is suitable for use as an input paramete...
static QString typeName()
Returns the type name for the parameter class.
static QgsAlignRasterData::RasterItem variantMapAsItem(const QVariantMap &layerVariantMap, QgsProcessingContext &context)
Converts a QVariant value (a QVariantMap) to a single input layer.
QString asPythonString(QgsProcessing::PythonOutputType outputType=QgsProcessing::PythonOutputType::PythonQgsProcessingAlgorithmSubclass) const override
Returns the parameter definition as a Python command which can be used within a Python Processing scr...
QString type() const override
Unique parameter type name.
QgsProcessingParameterAlignRasterLayers(const QString &name, const QString &description=QString())
Constructor for QgsProcessingParameterAlignRasterLayers.
static QVariantMap itemAsVariantMap(const QgsAlignRasterData::RasterItem &item)
Converts a single input layer to QVariant representation (a QVariantMap).
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
static QList< QgsAlignRasterData::RasterItem > parameterAsItems(const QVariant &layersVariant, QgsProcessingContext &context)
Converts a QVariant value (a QVariantList) to a list of input layers.
QString valueAsString(const QVariant &value, QgsProcessingContext &context, bool &ok) const override
Returns a string version of the parameter input value (if possible).
QString valueAsStringPrivate(const QVariant &value, QgsProcessingContext &context, bool &ok, ValueAsStringFlags flags) const
Internal method for evaluating values as string.
Qgis::ProcessingParameterFlags mFlags
Parameter flags.
@ AllowMapLayerValues
Enable map layer value handling.
QString description() const
Returns the description for the parameter.
QgsProcessingParameterDefinition(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, const QString &help=QString())
Constructor for QgsProcessingParameterDefinition.
QString name() const
Returns the name of the parameter.
QVariant valueAsJsonObjectPrivate(const QVariant &value, QgsProcessingContext &context, ValueAsStringFlags flags) const
Internal method for evaluating values as JSON objects.
static QString stringToPythonLiteral(const QString &string)
Converts a string to a Python string literal.
static QString normalizeLayerSource(const QString &source)
Normalizes a layer source string for safe comparison across different operating system environments.
static QString variantToPythonLiteral(const QVariant &value)
Converts a variant to a Python literal.
static QgsMapLayer * mapLayerFromString(const QString &string, QgsProcessingContext &context, bool allowLoadingNewLayers=true, QgsProcessingUtils::LayerHint typeHint=QgsProcessingUtils::LayerHint::UnknownType, QgsProcessing::LayerOptionsFlags flags=QgsProcessing::LayerOptionsFlags())
Interprets a string as a map layer within the supplied context.
PythonOutputType
Available Python output types.
@ PythonQgsProcessingAlgorithmSubclass
Full Python QgsProcessingAlgorithm subclass.
Represents a raster layer.
Definition of one raster layer for alignment.
Qgis::GdalResampleAlgorithm resampleMethod
resampling method to be used
bool rescaleValues
rescaling of values according to the change of pixel size
QString inputFilename
filename of the source raster
QString outputFilename
filename of the newly created aligned raster (will be overwritten if exists already)