10
10
#include " gdal.h"
11
11
12
12
QgsRasterFileWriter::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 )
14
14
{
15
15
16
16
}
@@ -164,7 +164,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeRasterSingleTile( Qgs
164
164
165
165
QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster ( QgsRasterIterator* iter, int nCols, const QgsRectangle& outputExtent )
166
166
{
167
- #if 0
168
167
if ( !iter )
169
168
{
170
169
return SourceProviderError;
@@ -186,9 +185,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
186
185
// Get output map units per pixel
187
186
double outputMapUnitsPerPixel = outputExtent.width () / nCols;
188
187
189
- QgsRasterIterator iter( 1, sourceProvider );
190
- iter. setMaximumTileWidth( mMaxTileWidth );
191
- iter. setMaximumTileHeight( mMaxTileHeight );
188
+
189
+ iter-> setMaximumTileWidth ( mMaxTileWidth );
190
+ iter-> setMaximumTileHeight ( mMaxTileHeight );
192
191
193
192
void * data = VSIMalloc ( iface->typeSize ( QgsRasterInterface::ARGB32 ) * mMaxTileWidth * mMaxTileHeight );
194
193
void * redData = VSIMalloc ( mMaxTileWidth * mMaxTileHeight );
@@ -237,15 +236,10 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
237
236
}
238
237
}
239
238
240
- QgsRasterViewPort viewPort;
241
- viewPort.drawableAreaXDim = nCols;
242
- viewPort.drawableAreaYDim = nRows;
243
-
244
- QgsMapUnitsPerPixel mup;
245
-
246
239
// iter->select( outputExtent, outputMapUnitsPerPixel );
247
- iter->startRasterRead( 1, &viewPort, &mup );
240
+ iter->startRasterRead ( 1 , nCols, nRows, outputExtent );
248
241
242
+ #if 0
249
243
//initialize progress dialog
250
244
int nTiles = iter.nTilesX() * iter.nTilesY();
251
245
if ( mProgressDialog )
@@ -254,19 +248,28 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
254
248
mProgressDialog->setMaximum( nTiles );
255
249
mProgressDialog->show();
256
250
}
251
+ #endif // 0
257
252
258
- while ( iter->nextPart( data, mapRect, iterLeft, iterTop, iterCols, iterRows, progress ) )
253
+ while ( iter->readNextRasterPart ( 1 , iterCols, iterRows, &data, iterLeft, iterTop ) )
259
254
{
260
255
if ( iterCols <= 5 || iterRows <= 5 ) // some wms servers don't like small values
261
256
{
262
257
continue ;
263
258
}
264
259
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
+
265
267
if ( mapRect.width () < 0.000000001 || mapRect.height () < 0.000000001 )
266
268
{
267
269
continue ;
268
270
}
269
271
272
+ #if 0
270
273
if ( mProgressDialog )
271
274
{
272
275
mProgressDialog->setValue( fileIndex + 1 );
@@ -277,6 +280,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
277
280
break;
278
281
}
279
282
}
283
+ #endif // 0
280
284
281
285
// fill into red/green/blue/alpha channels
282
286
uint * p = ( uint * ) data;
@@ -345,10 +349,12 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
345
349
delete destProvider;
346
350
CPLFree ( data ); CPLFree ( redData ); CPLFree ( greenData ); CPLFree ( blueData ); CPLFree ( alphaData );
347
351
352
+ #if 0
348
353
if ( mProgressDialog )
349
354
{
350
355
mProgressDialog->setValue( nTiles );
351
356
}
357
+ #endif // 0
352
358
353
359
if ( mTiledMode )
354
360
{
@@ -357,7 +363,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeARGBRaster( QgsRaster
357
363
writeVRT ( vrtFilePath );
358
364
buildPyramides ( vrtFilePath );
359
365
}
360
- #endif // 0
361
366
return NoError;
362
367
}
363
368
0 commit comments