Skip to content

Commit f259830

Browse files
committed
Enable WMS saving
1 parent 54a82e0 commit f259830

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

src/core/raster/qgsrasterfilewriter.cpp

+19-14
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include "gdal.h"
1111

1212
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 )
1414
{
1515

1616
}
@@ -164,7 +164,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeRasterSingleTile( Qgs
164164

165165
QgsRasterFileWriter::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

src/core/raster/qgsrasterfilewriter.h

-2
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,11 @@ class CORE_EXPORT QgsRasterFileWriter
3636
void setTiledMode( bool t ) { mTiledMode = t; }
3737
bool tiledMode() const { return mTiledMode; }
3838

39-
#if 0
4039
void setMaxTileWidth( int w ) { mMaxTileWidth = w; }
4140
int maxTileWidth() const { return mMaxTileWidth; }
4241

4342
void setMaxTileHeight( int h ) { mMaxTileHeight = h; }
4443
int maxTileHeight() const { return mMaxTileHeight; }
45-
#endif //0
4644

4745
private:
4846
QgsRasterFileWriter(); //forbidden

0 commit comments

Comments
 (0)