Skip to content

Commit 10dee12

Browse files
author
rblazek
committed
temporary? ugly fix for not georeferenced images
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@15409 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 3efe0aa commit 10dee12

File tree

1 file changed

+39
-4
lines changed

1 file changed

+39
-4
lines changed

src/providers/gdal/qgsgdalprovider.cpp

+39-4
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,12 @@ void QgsGdalProvider::readBlock( int theBandNo, QgsRectangle const & theExtent,
534534
myMemDsn.sprintf( "DATAPOINTER = %p", theBlock );
535535
QgsDebugMsg( myMemDsn );
536536

537-
myMemDsn.sprintf( "MEM:::DATAPOINTER=%lu,PIXELS=%d,LINES=%d,BANDS=1,DATATYPE=%s,PIXELOFFSET=0,LINEOFFSET=0,BANDOFFSET=0", ( long )theBlock, thePixelWidth, thePixelHeight, GDALGetDataTypeName(( GDALDataType )mGdalDataType[theBandNo-1] ) );
537+
//myMemDsn.sprintf( "MEM:::DATAPOINTER=%lu,PIXELS=%d,LINES=%d,BANDS=1,DATATYPE=%s,PIXELOFFSET=0,LINEOFFSET=0,BANDOFFSET=0", ( long )theBlock, thePixelWidth, thePixelHeight, GDALGetDataTypeName(( GDALDataType )mGdalDataType[theBandNo-1] ) );
538+
char szPointer[64];
539+
memset( szPointer, 0, sizeof(szPointer) );
540+
CPLPrintPointer( szPointer, theBlock, sizeof(szPointer) );
541+
542+
myMemDsn.sprintf( "MEM:::DATAPOINTER=%s,PIXELS=%d,LINES=%d,BANDS=1,DATATYPE=%s,PIXELOFFSET=0,LINEOFFSET=0,BANDOFFSET=0", szPointer, thePixelWidth, thePixelHeight, GDALGetDataTypeName(( GDALDataType )mGdalDataType[theBandNo-1] ) );
538543

539544
QgsDebugMsg( "Open GDAL MEM : " + myMemDsn );
540545

@@ -560,6 +565,13 @@ void QgsGdalProvider::readBlock( int theBandNo, QgsRectangle const & theExtent,
560565

561566
double myGeoTransform[6];
562567
GDALGetGeoTransform( mGdalDataset, myGeoTransform );
568+
// TODO:
569+
// Attention: GDALCreateGenImgProjTransformer failes if source data source
570+
// is not georeferenced, e.g. matrix 0,1,0,0,0,1/-1
571+
// as a workaround in such case we have to set some different value - really ugly
572+
myGeoTransform[0] = DBL_MIN;
573+
GDALSetGeoTransform( mGdalDataset, myGeoTransform );
574+
563575
GDALSetGeoTransform( myGdalMemDataset, myMemGeoTransform );
564576

565577
for ( int i = 0 ; i < 6; i++ )
@@ -593,8 +605,24 @@ void QgsGdalProvider::readBlock( int theBandNo, QgsRectangle const & theExtent,
593605
NULL,
594606
FALSE, 0.0, 1
595607
);
596-
597-
CPLAssert( myWarpOptions->pTransformerArg != NULL );
608+
/*
609+
myWarpOptions->pTransformerArg =
610+
GDALCreateGenImgProjTransformer2(
611+
mGdalDataset,
612+
myGdalMemDataset,
613+
NULL
614+
);
615+
*/
616+
if ( !myWarpOptions->pTransformerArg )
617+
{
618+
QMessageBox::warning( 0, QObject::tr( "Warning" ),
619+
QObject::tr( "Cannot GDALCreateGenImgProjTransformer: " )
620+
+ QString::fromUtf8( CPLGetLastErrorMsg() ) );
621+
return;
622+
623+
};
624+
625+
//CPLAssert( myWarpOptions->pTransformerArg != NULL );
598626
myWarpOptions->pfnTransformer = GDALGenImgProjTransform;
599627

600628
myWarpOptions->padfDstNoDataReal = ( double * ) CPLMalloc( myWarpOptions->nBandCount * sizeof( double ) );
@@ -616,7 +644,14 @@ void QgsGdalProvider::readBlock( int theBandNo, QgsRectangle const & theExtent,
616644

617645
GDALWarpOperation myOperation;
618646

619-
myOperation.Initialize( myWarpOptions );
647+
if ( myOperation.Initialize( myWarpOptions ) != CE_None )
648+
{
649+
QMessageBox::warning( 0, QObject::tr( "Warning" ),
650+
QObject::tr( "Cannot inittialize GDALWarpOperation : " )
651+
+ QString::fromUtf8( CPLGetLastErrorMsg() ) );
652+
return;
653+
654+
};
620655
CPLErrorReset();
621656
CPLErr myErr;
622657
myErr = myOperation.ChunkAndWarpImage( 0, 0, thePixelWidth, thePixelHeight );

0 commit comments

Comments
 (0)