1010#include " gdal.h"
1111
1212QgsRasterFileWriter::QgsRasterFileWriter ( const QString& outputUrl ): mOutputUrl( outputUrl ), mOutputProviderKey( " gdal" ), mOutputFormat( " GTiff" ), mTiledMode( false ),
13- /* mMaxTileWidth( 500 ), mMaxTileHeight( 500 ), */ mProgressDialog( 0 )
13+ mMaxTileWidth( 500 ), mMaxTileHeight( 500 ), mProgressDialog( 0 )
1414{
1515
1616}
@@ -164,7 +164,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeRasterSingleTile( Qgs
164164
165165QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster ( QgsRasterIterator* iter, int nCols, const QgsRectangle& outputExtent )
166166{
167- #if 0
168167 if ( !iter )
169168 {
170169 return SourceProviderError;
@@ -186,9 +185,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
186185 // Get output map units per pixel
187186 double outputMapUnitsPerPixel = outputExtent.width () / nCols;
188187
189- QgsRasterIterator iter( 1, sourceProvider );
190- iter. setMaximumTileWidth( mMaxTileWidth );
191- iter. setMaximumTileHeight( mMaxTileHeight );
188+
189+ iter-> setMaximumTileWidth ( mMaxTileWidth );
190+ iter-> setMaximumTileHeight ( mMaxTileHeight );
192191
193192 void * data = VSIMalloc ( iface->typeSize ( QgsRasterInterface::ARGB32 ) * mMaxTileWidth * mMaxTileHeight );
194193 void * redData = VSIMalloc ( mMaxTileWidth * mMaxTileHeight );
@@ -237,15 +236,10 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
237236 }
238237 }
239238
240- QgsRasterViewPort viewPort;
241- viewPort.drawableAreaXDim = nCols;
242- viewPort.drawableAreaYDim = nRows;
243-
244- QgsMapUnitsPerPixel mup;
245-
246239 // iter->select( outputExtent, outputMapUnitsPerPixel );
247- iter->startRasterRead( 1, &viewPort, &mup );
240+ iter->startRasterRead ( 1 , nCols, nRows, outputExtent );
248241
242+ #if 0
249243 //initialize progress dialog
250244 int nTiles = iter.nTilesX() * iter.nTilesY();
251245 if ( mProgressDialog )
@@ -254,19 +248,28 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
254248 mProgressDialog->setMaximum( nTiles );
255249 mProgressDialog->show();
256250 }
251+ #endif // 0
257252
258- while ( iter->nextPart( data, mapRect, iterLeft, iterTop, iterCols, iterRows, progress ) )
253+ while ( iter->readNextRasterPart ( 1 , iterCols, iterRows, &data, iterLeft, iterTop ) )
259254 {
260255 if ( iterCols <= 5 || iterRows <= 5 ) // some wms servers don't like small values
261256 {
262257 continue ;
263258 }
264259
260+ double mup = outputExtent.width () / nCols;
261+ double mapLeft = outputExtent.xMinimum () + iterLeft * mup;
262+ double mapRight = mapLeft + mup * iterCols;
263+ double mapTop = outputExtent.yMaximum () - iterTop * mup;
264+ double mapBottom = mapTop - iterTop * mup;
265+ QgsRectangle mapRect ( mapLeft, mapBottom, mapRight, mapTop );
266+
265267 if ( mapRect.width () < 0.000000001 || mapRect.height () < 0.000000001 )
266268 {
267269 continue ;
268270 }
269271
272+ #if 0
270273 if ( mProgressDialog )
271274 {
272275 mProgressDialog->setValue( fileIndex + 1 );
@@ -277,6 +280,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
277280 break;
278281 }
279282 }
283+ #endif // 0
280284
281285 // fill into red/green/blue/alpha channels
282286 uint* p = ( uint* ) data;
@@ -345,10 +349,12 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
345349 delete destProvider;
346350 CPLFree ( data ); CPLFree ( redData ); CPLFree ( greenData ); CPLFree ( blueData ); CPLFree ( alphaData );
347351
352+ #if 0
348353 if ( mProgressDialog )
349354 {
350355 mProgressDialog->setValue( nTiles );
351356 }
357+ #endif // 0
352358
353359 if ( mTiledMode )
354360 {
@@ -357,7 +363,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
357363 writeVRT ( vrtFilePath );
358364 buildPyramides ( vrtFilePath );
359365 }
360- #endif // 0
361366 return NoError;
362367}
363368
0 commit comments