25QgsProcessingAlgorithm::Flags QgsAlignRastersAlgorithm::flags()
const
30QString QgsAlignRastersAlgorithm::name()
const
32 return QStringLiteral(
"alignrasters" );
35QString QgsAlignRastersAlgorithm::displayName()
const
37 return QObject::tr(
"Align rasters" );
40QStringList QgsAlignRastersAlgorithm::tags()
const
42 return QObject::tr(
"raster,align,resample,rescale" ).split(
',' );
45QString QgsAlignRastersAlgorithm::group()
const
47 return QObject::tr(
"Raster tools" );
50QString QgsAlignRastersAlgorithm::groupId()
const
52 return QStringLiteral(
"rastertools" );
55QString QgsAlignRastersAlgorithm::shortHelpString()
const
57 return QObject::tr(
"Aligns rasters by resampling them to the same cell size and reprojecting to the same CRS." );
60QgsAlignRastersAlgorithm *QgsAlignRastersAlgorithm::createInstance()
const
62 return new QgsAlignRastersAlgorithm();
65void QgsAlignRastersAlgorithm::initAlgorithm(
const QVariantMap & )
70 addParameter(
new QgsProcessingParameterCrs( QStringLiteral(
"CRS" ), QObject::tr(
"Override reference CRS" ), QVariant(),
true ) );
82 explicit QgsAlignRasterProgress(
QgsFeedback *feedback ) : mFeedback( feedback ) {}
83 bool progress(
double complete )
override
85 mFeedback->setProgress( complete * 100 );
96 QgsRasterLayer *referenceLayer = parameterAsRasterLayer( parameters, QStringLiteral(
"REFERENCE_LAYER" ), context );
97 if ( !referenceLayer )
100 const QVariant layersVariant = parameters.value( parameterDefinition( QStringLiteral(
"LAYERS" ) )->name() );
102 QStringList outputLayers;
103 outputLayers.reserve( items.size() );
106 outputLayers << item.outputFilename;
112 QString customCRSWkt;
113 QSizeF customCellSize;
114 QPointF customGridOffset( -1, -1 );
116 if ( parameters.value( QStringLiteral(
"CRS" ) ).isValid() )
122 bool hasXValue = parameters.value( QStringLiteral(
"CELL_SIZE_X" ) ).isValid();
123 bool hasYValue = parameters.value( QStringLiteral(
"CELL_SIZE_Y" ) ).isValid();
124 if ( ( hasXValue && !hasYValue ) || ( !hasXValue && hasYValue ) )
126 throw QgsProcessingException( QObject::tr(
"Either set both X and Y cell size values or keep both as 'Not set'." ) );
128 else if ( hasXValue && hasYValue )
130 double xSize = parameterAsDouble( parameters, QStringLiteral(
"CELL_SIZE_X" ), context );
131 double ySize = parameterAsDouble( parameters, QStringLiteral(
"CELL_SIZE_Y" ), context );
132 customCellSize = QSizeF( xSize, ySize );
135 hasXValue = parameters.value( QStringLiteral(
"GRID_OFFSET_X" ) ).isValid();
136 hasYValue = parameters.value( QStringLiteral(
"GRID_OFFSET_Y" ) ).isValid();
137 if ( ( hasXValue && !hasYValue ) || ( !hasXValue && hasYValue ) )
139 throw QgsProcessingException( QObject::tr(
"Either set both X and Y grid offset values or keep both as 'Not set'." ) );
141 else if ( hasXValue && hasYValue )
143 double xSize = parameterAsDouble( parameters, QStringLiteral(
"GRID_OFFSET_X" ), context );
144 double ySize = parameterAsDouble( parameters, QStringLiteral(
"GRID_OFFSET_Y" ), context );
145 customGridOffset = QPointF( xSize, ySize );
148 if ( parameters.value( QStringLiteral(
"EXTENT" ) ).isValid() )
150 QgsRectangle extent = parameterAsExtent( parameters, QStringLiteral(
"EXTENT" ), context );
159 throw QgsProcessingException( QObject::tr(
"It is not possible to reproject reference raster to target CRS." ) );
162 result = rasterAlign.
run();
169 outputs.insert( QStringLiteral(
"OUTPUT_LAYERS" ), outputLayers );
QgsAlignRaster takes one or more raster layers and warps (resamples) them so they have the same:
bool setParametersFromRaster(const RasterInfo &rasterInfo, const QString &customCRSWkt=QString(), QSizeF customCellSize=QSizeF(), QPointF customGridOffset=QPointF(-1, -1))
Set destination CRS, cell size and grid offset from a raster file.
bool run()
Run the alignment process.
void setClipExtent(double xmin, double ymin, double xmax, double ymax)
Configure clipping extent (region of interest).
void setProgressHandler(ProgressHandler *progressHandler)
Assign a progress handler instance. Does not take ownership. nullptr can be passed.
QString errorMessage() const
Returns the error from a previous run() call.
void setRasters(const List &list)
Sets list of rasters that will be aligned.
This class represents a coordinate reference system (CRS).
@ WKT_PREFERRED_GDAL
Preferred format for conversion of CRS to WKT for use with the GDAL library.
QString toWkt(WktVariant variant=WKT1_GDAL, bool multiline=false, int indentationWidth=4) const
Returns a WKT representation of this CRS.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
QString source() const
Returns the source for the layer.
virtual Flags 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 multi-layer output for processing algorithms which create map layers, when the number and nature of...
A parameter for Processing algorithms that need a list of input raster layers to align - this paramet...
static QList< QgsAlignRasterData::RasterItem > parameterAsItems(const QVariant &layersVariant, QgsProcessingContext &context)
Converts a QVariant value (a QVariantList) to a list of input layers.
A coordinate reference system parameter for processing algorithms.
A rectangular map extent parameter for processing algorithms.
A numeric parameter for processing algorithms.
@ Double
Double/float values.
A raster layer parameter for processing algorithms.
Represents a raster layer.
A rectangle specified with double values.
const QgsCoordinateReferenceSystem & crs
Definition of one raster layer for alignment.
Helper struct to be sub-classed for progress reporting.
virtual bool progress(double complete)=0
Method to be overridden for progress reporting.