QGIS API Documentation  3.24.2-Tisler (13c1a02865)
qgsrasterfilewritertask.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrasterfilewritertask.cpp
3  ---------------------------
4  begin : Apr 2017
5  copyright : (C) 2017 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
19 #include "qgsrasterinterface.h"
20 #include "qgsrasterdataprovider.h"
21 #include "qgsrasterpipe.h"
22 
23 // Deprecated!
25  const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &crs )
26  : QgsRasterFileWriterTask( writer, pipe, columns, rows, outputExtent, crs,
27  ( pipe && pipe->provider() ) ? pipe->provider()->transformContext() : QgsCoordinateTransformContext() )
28 {
29 }
30 
32  const QgsRectangle &outputExtent,
34  const QgsCoordinateTransformContext &transformContext )
35  : QgsTask( tr( "Saving %1" ).arg( writer.outputUrl() ), QgsTask::CanCancel )
36  , mWriter( writer )
37  , mRows( rows )
38  , mColumns( columns )
39  , mExtent( outputExtent )
40  , mCrs( crs )
41  , mPipe( pipe )
42  , mFeedback( new QgsRasterBlockFeedback() )
43  , mTransformContext( transformContext )
44 {
45  QgsRenderContext renderContext;
47  mFeedback->setRenderContext( renderContext );
48 }
49 
51 
53 {
54  mFeedback->cancel();
56 }
57 
59 {
60  if ( !mPipe )
61  return false;
62 
64 
65  mError = mWriter.writeRaster( mPipe.get(), mColumns, mRows, mExtent, mCrs, mTransformContext, mFeedback.get() );
66 
67  return mError == QgsRasterFileWriter::NoError;
68 }
69 
71 {
72  if ( result )
73  emit writeComplete( mWriter.outputUrl() );
74  else
75  {
76  emit errorOccurred( mError );
77  QString errorMsg;
78  if ( !mFeedback->errors().isEmpty() )
79  errorMsg = mFeedback->errors().front();
80  emit errorOccurred( mError, errorMsg );
81  }
82 }
83 
84 
@ Export
Renderer used for printing or exporting to a file.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
void progressChanged(double progress)
Emitted when the feedback object reports a progress change.
Feedback object tailored for raster block reading.
QgsTask task which performs a QgsRasterFileWriter layer saving operation as a background task.
~QgsRasterFileWriterTask() override
void writeComplete(const QString &outputUrl)
Emitted when writing the layer is successfully completed.
void cancel() override
Notifies the task that it should terminate.
Q_DECL_DEPRECATED QgsRasterFileWriterTask(const QgsRasterFileWriter &writer, QgsRasterPipe *pipe, int columns, int rows, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &crs)
Constructor for QgsRasterFileWriterTask.
void errorOccurred(int error)
Emitted when an error occurs which prevented the file being written (or if the task is canceled).
void finished(bool result) override
If the task is managed by a QgsTaskManager, this will be called after the task has finished (whether ...
bool run() override
Performs the task's operation.
The raster file writer which allows you to save a raster to a new file.
Q_DECL_DEPRECATED WriterError writeRaster(const QgsRasterPipe *pipe, int nCols, int nRows, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &crs, QgsRasterBlockFeedback *feedback=nullptr)
Write raster file.
QString outputUrl() const
Returns the output URL for the raster.
Contains a pipeline of raster interfaces for sequential raster processing.
Definition: qgsrasterpipe.h:50
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Contains information about the context of a rendering operation.
void setRendererUsage(Qgis::RendererUsage usage)
Sets the renderer usage.
Abstract base class for long running background tasks.
virtual void cancel()
Notifies the task that it should terminate.
void setProgress(double progress)
Sets the task's current progress.
const QgsCoordinateReferenceSystem & crs