Skip to content

Commit 3d687e5

Browse files
elpasonyalldawson
authored andcommittedApr 17, 2019
Add transform context to raster file writer task
1 parent 6e0bd82 commit 3d687e5

File tree

5 files changed

+62
-11
lines changed

5 files changed

+62
-11
lines changed
 

‎python/core/auto_generated/raster/qgsrasterfilewritertask.sip.in

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,34 @@ QGIS interface.
2828
%End
2929
public:
3030

31+
QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe /Transfer/,
32+
int columns, int rows,
33+
const QgsRectangle &outputExtent,
34+
const QgsCoordinateReferenceSystem &crs ) /Deprecated/;
35+
%Docstring
36+
Constructor for QgsRasterFileWriterTask. Takes a source ``writer``,
37+
``columns``, ``rows``, ``outputExtent`` and destination ``crs``.
38+
Ownership of the ``pipe`` is transferred to the writer task, and will
39+
be deleted when the task completes.
40+
41+
.. deprecated:: since QGIS 3.8, use version with transformContext instead
42+
%End
43+
44+
3145
QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe /Transfer/,
3246
int columns, int rows,
3347
const QgsRectangle &outputExtent,
34-
const QgsCoordinateReferenceSystem &crs );
48+
const QgsCoordinateReferenceSystem &crs,
49+
const QgsCoordinateTransformContext &transformContext
50+
);
3551
%Docstring
3652
Constructor for QgsRasterFileWriterTask. Takes a source ``writer``,
37-
``columns``, ``rows``, ``outputExtent`` and destination ``crs``.
53+
``columns``, ``rows``, ``outputExtent``, destination ``crs`` and
54+
coordinate ``transformContext`` .
3855
Ownership of the ``pipe`` is transferred to the writer task, and will
3956
be deleted when the task completes.
57+
58+
.. deprecated:: since QGIS 3.8, use version with transformContext instead
4059
%End
4160

4261
virtual void cancel();

‎src/app/qgisapp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7595,7 +7595,7 @@ QString QgisApp::saveAsRasterFile( QgsRasterLayer *rasterLayer, const bool defau
75957595
QString outputFormat = d.outputFormat();
75967596

75977597
QgsRasterFileWriterTask *writerTask = new QgsRasterFileWriterTask( fileWriter, pipe.release(), d.nColumns(), d.nRows(),
7598-
d.outputRectangle(), QgsProject::instance()->transformContext(), d.outputCrs() );
7598+
d.outputRectangle(), d.outputCrs(), QgsProject::instance()->transformContext() );
75997599

76007600
// when writer is successful:
76017601

‎src/core/raster/qgsrasterfilewritertask.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,20 @@
1717

1818
#include "qgsrasterfilewritertask.h"
1919
#include "qgsrasterinterface.h"
20+
#include "qgsrasterdataprovider.h"
2021

21-
QgsRasterFileWriterTask::QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe,
22-
int columns, int rows,
22+
// Deprecated!
23+
QgsRasterFileWriterTask::QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe, int columns, int rows,
24+
const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &crs )
25+
: QgsRasterFileWriterTask( writer, pipe, columns, rows, outputExtent, crs,
26+
( pipe && pipe->provider() ) ? pipe->provider()->transformContext() : QgsCoordinateTransformContext() )
27+
{
28+
}
29+
30+
QgsRasterFileWriterTask::QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe, int columns, int rows,
2331
const QgsRectangle &outputExtent,
24-
const QgsCoordinateReferenceSystem &crs )
32+
const QgsCoordinateReferenceSystem &crs,
33+
const QgsCoordinateTransformContext &transformContext )
2534
: QgsTask( tr( "Saving %1" ).arg( writer.outputUrl() ), QgsTask::CanCancel )
2635
, mWriter( writer )
2736
, mRows( rows )
@@ -30,7 +39,9 @@ QgsRasterFileWriterTask::QgsRasterFileWriterTask( const QgsRasterFileWriter &wri
3039
, mCrs( crs )
3140
, mPipe( pipe )
3241
, mFeedback( new QgsRasterBlockFeedback() )
33-
{}
42+
, mTransformContext( transformContext )
43+
{
44+
}
3445

3546
void QgsRasterFileWriterTask::cancel()
3647
{
@@ -45,7 +56,7 @@ bool QgsRasterFileWriterTask::run()
4556

4657
connect( mFeedback.get(), &QgsRasterBlockFeedback::progressChanged, this, &QgsRasterFileWriterTask::setProgress );
4758

48-
mError = mWriter.writeRaster( mPipe.get(), mColumns, mRows, mExtent, mCrs, mFeedback.get() );
59+
mError = mWriter.writeRaster( mPipe.get(), mColumns, mRows, mExtent, mCrs, mTransformContext, mFeedback.get() );
4960

5061
return mError == QgsRasterFileWriter::NoError;
5162
}

‎src/core/raster/qgsrasterfilewritertask.h

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "qgis_core.h"
2222
#include "qgstaskmanager.h"
2323
#include "qgsrasterfilewriter.h"
24+
#include "qgscoordinatetransformcontext.h"
2425
#include "qgsrasterinterface.h"
2526
#include "qgsrasterpipe.h"
2627

@@ -45,11 +46,28 @@ class CORE_EXPORT QgsRasterFileWriterTask : public QgsTask
4546
* \a columns, \a rows, \a outputExtent and destination \a crs.
4647
* Ownership of the \a pipe is transferred to the writer task, and will
4748
* be deleted when the task completes.
49+
* \deprecated since QGIS 3.8, use version with transformContext instead
50+
*/
51+
Q_DECL_DEPRECATED QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe SIP_TRANSFER,
52+
int columns, int rows,
53+
const QgsRectangle &outputExtent,
54+
const QgsCoordinateReferenceSystem &crs ) SIP_DEPRECATED;
55+
56+
57+
/**
58+
* Constructor for QgsRasterFileWriterTask. Takes a source \a writer,
59+
* \a columns, \a rows, \a outputExtent, destination \a crs and
60+
* coordinate \a transformContext .
61+
* Ownership of the \a pipe is transferred to the writer task, and will
62+
* be deleted when the task completes.
63+
* \deprecated since QGIS 3.8, use version with transformContext instead
4864
*/
4965
QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe SIP_TRANSFER,
5066
int columns, int rows,
5167
const QgsRectangle &outputExtent,
52-
const QgsCoordinateReferenceSystem &crs );
68+
const QgsCoordinateReferenceSystem &crs,
69+
const QgsCoordinateTransformContext &transformContext
70+
);
5371

5472
void cancel() override;
5573

@@ -87,6 +105,8 @@ class CORE_EXPORT QgsRasterFileWriterTask : public QgsTask
87105

88106
QgsRasterFileWriter::WriterError mError = QgsRasterFileWriter::NoError;
89107

108+
QgsCoordinateTransformContext mTransformContext;
109+
90110
};
91111

92112
#endif //QGSRASTERFILEWRITERTASK_H

‎tests/src/python/test_qgsrasterfilewritertask.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from qgis.core import (
1919
QgsApplication,
20+
QgsCoordinateTransformContext,
2021
QgsRasterLayer,
2122
QgsRasterPipe,
2223
QgsRasterFileWriter,
@@ -57,7 +58,7 @@ def testSuccess(self):
5758
tmp = create_temp_filename('success.tif')
5859
writer = QgsRasterFileWriter(tmp)
5960

60-
task = QgsRasterFileWriterTask(writer, pipe, 100, 100, raster_layer.extent(), raster_layer.crs())
61+
task = QgsRasterFileWriterTask(writer, pipe, 100, 100, raster_layer.extent(), raster_layer.crs(), QgsCoordinateTransformContext())
6162

6263
task.writeComplete.connect(self.onSuccess)
6364
task.errorOccurred.connect(self.onFail)
@@ -82,7 +83,7 @@ def testLayerRemovalBeforeRun(self):
8283
tmp = create_temp_filename('remove_layer.tif')
8384
writer = QgsRasterFileWriter(tmp)
8485

85-
task = QgsRasterFileWriterTask(writer, pipe, 100, 100, raster_layer.extent(), raster_layer.crs())
86+
task = QgsRasterFileWriterTask(writer, pipe, 100, 100, raster_layer.extent(), raster_layer.crs(), QgsCoordinateTransformContext())
8687

8788
task.writeComplete.connect(self.onSuccess)
8889
task.errorOccurred.connect(self.onFail)

0 commit comments

Comments
 (0)
Please sign in to comment.