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( 
"This algorithm aligns rasters by resampling them to the same cell size and reprojecting to the same CRS." );
 
   60QString QgsAlignRastersAlgorithm::shortDescription()
 const 
   62  return QObject::tr( 
"Aligns rasters by resampling them to the same cell size and reprojecting to the same CRS." );
 
   65QgsAlignRastersAlgorithm *QgsAlignRastersAlgorithm::createInstance()
 const 
   67  return new QgsAlignRastersAlgorithm();
 
   70bool QgsAlignRastersAlgorithm::checkParameterValues( 
const QVariantMap ¶meters, 
QgsProcessingContext &context, QString *message )
 const 
   72  const QVariant layersVariant = parameters.value( parameterDefinition( QStringLiteral( 
"LAYERS" ) )->name() );
 
   74  bool unconfiguredLayers = 
false;
 
   77    if ( item.outputFilename.isEmpty() )
 
   79      unconfiguredLayers = 
true;
 
   83  if ( unconfiguredLayers )
 
   85    *message = QObject::tr( 
"An output file is not configured for one or more input layers. Configure output files via 'Configure Raster…' under Input layers parameter." );
 
   91void QgsAlignRastersAlgorithm::initAlgorithm( 
const QVariantMap & )
 
   96  addParameter( 
new QgsProcessingParameterCrs( QStringLiteral( 
"CRS" ), QObject::tr( 
"Override reference CRS" ), QVariant(), 
true ) );
 
  108  QgsRasterLayer *referenceLayer = parameterAsRasterLayer( parameters, QStringLiteral( 
"REFERENCE_LAYER" ), context );
 
  109  if ( !referenceLayer )
 
  112  const QVariant layersVariant = parameters.value( parameterDefinition( QStringLiteral( 
"LAYERS" ) )->name() );
 
  114  QStringList outputLayers;
 
  115  outputLayers.reserve( items.size() );
 
  118    outputLayers << item.outputFilename;
 
  124  QString customCRSWkt;
 
  125  QSizeF customCellSize;
 
  126  QPointF customGridOffset( -1, -1 );
 
  128  if ( parameters.value( QStringLiteral( 
"CRS" ) ).isValid() )
 
  134  bool hasXValue = parameters.value( QStringLiteral( 
"CELL_SIZE_X" ) ).isValid();
 
  135  bool hasYValue = parameters.value( QStringLiteral( 
"CELL_SIZE_Y" ) ).isValid();
 
  136  if ( ( hasXValue && !hasYValue ) || ( !hasXValue && hasYValue ) )
 
  138    throw QgsProcessingException( QObject::tr( 
"Either set both X and Y cell size values or keep both as 'Not set'." ) );
 
  140  else if ( hasXValue && hasYValue )
 
  142    double xSize = parameterAsDouble( parameters, QStringLiteral( 
"CELL_SIZE_X" ), context );
 
  143    double ySize = parameterAsDouble( parameters, QStringLiteral( 
"CELL_SIZE_Y" ), context );
 
  144    customCellSize = QSizeF( xSize, ySize );
 
  147  hasXValue = parameters.value( QStringLiteral( 
"GRID_OFFSET_X" ) ).isValid();
 
  148  hasYValue = parameters.value( QStringLiteral( 
"GRID_OFFSET_Y" ) ).isValid();
 
  149  if ( ( hasXValue && !hasYValue ) || ( !hasXValue && hasYValue ) )
 
  151    throw QgsProcessingException( QObject::tr( 
"Either set both X and Y grid offset values or keep both as 'Not set'." ) );
 
  153  else if ( hasXValue && hasYValue )
 
  155    double xSize = parameterAsDouble( parameters, QStringLiteral( 
"GRID_OFFSET_X" ), context );
 
  156    double ySize = parameterAsDouble( parameters, QStringLiteral( 
"GRID_OFFSET_Y" ), context );
 
  157    customGridOffset = QPointF( xSize, ySize );
 
  160  if ( parameters.value( QStringLiteral( 
"EXTENT" ) ).isValid() )
 
  162    QgsRectangle extent = parameterAsExtent( parameters, QStringLiteral( 
"EXTENT" ), context );
 
  168      explicit QgsAlignRasterProgress( 
QgsFeedback *feedback )
 
  169        : mFeedback( feedback ) {}
 
  170      bool progress( 
double complete )
 override 
  172        mFeedback->setProgress( complete * 100 );
 
  185    throw QgsProcessingException( QObject::tr( 
"It is not possible to reproject reference raster to target CRS." ) );
 
  188  result = rasterAlign.
run();
 
  195  outputs.insert( QStringLiteral( 
"OUTPUT_LAYERS" ), outputLayers );
 
QFlags< ProcessingAlgorithmFlag > ProcessingAlgorithmFlags
Flags indicating how and when an algorithm operates and should be exposed to users.
 
@ PreferredGdal
Preferred format for conversion of CRS to WKT for use with the GDAL library.
 
@ HideFromModeler
Algorithm should be hidden from the modeler.
 
@ Double
Double/float values.
 
Takes one or more raster layers and warps (resamples) them to a common grid.
 
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.
 
Represents a coordinate reference system (CRS).
 
QString toWkt(Qgis::CrsWktVariant variant=Qgis::CrsWktVariant::Wkt1Gdal, 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 Qgis::ProcessingAlgorithmFlags flags() const
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
 
virtual bool checkParameterValues(const QVariantMap ¶meters, QgsProcessingContext &context, QString *message=nullptr) const
Checks the supplied parameter values to verify that they satisfy the requirements of this algorithm i...
 
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 specifying how rasters should be aligned.
 
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.
 
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.