[QGIS Commit] r15409 - trunk/qgis/src/providers/gdal
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Wed Mar 9 16:40:48 EST 2011
Author: rblazek
Date: 2011-03-09 13:40:48 -0800 (Wed, 09 Mar 2011)
New Revision: 15409
Modified:
trunk/qgis/src/providers/gdal/qgsgdalprovider.cpp
Log:
temporary? ugly fix for not georeferenced images
Modified: trunk/qgis/src/providers/gdal/qgsgdalprovider.cpp
===================================================================
--- trunk/qgis/src/providers/gdal/qgsgdalprovider.cpp 2011-03-09 20:29:12 UTC (rev 15408)
+++ trunk/qgis/src/providers/gdal/qgsgdalprovider.cpp 2011-03-09 21:40:48 UTC (rev 15409)
@@ -534,8 +534,13 @@
myMemDsn.sprintf( "DATAPOINTER = %p", theBlock );
QgsDebugMsg( myMemDsn );
- 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] ) );
+ //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] ) );
+ char szPointer[64];
+ memset( szPointer, 0, sizeof(szPointer) );
+ CPLPrintPointer( szPointer, theBlock, sizeof(szPointer) );
+ 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] ) );
+
QgsDebugMsg( "Open GDAL MEM : " + myMemDsn );
CPLErrorReset();
@@ -560,6 +565,13 @@
double myGeoTransform[6];
GDALGetGeoTransform( mGdalDataset, myGeoTransform );
+ // TODO:
+ // Attention: GDALCreateGenImgProjTransformer failes if source data source
+ // is not georeferenced, e.g. matrix 0,1,0,0,0,1/-1
+ // as a workaround in such case we have to set some different value - really ugly
+ myGeoTransform[0] = DBL_MIN;
+ GDALSetGeoTransform( mGdalDataset, myGeoTransform );
+
GDALSetGeoTransform( myGdalMemDataset, myMemGeoTransform );
for ( int i = 0 ; i < 6; i++ )
@@ -593,8 +605,24 @@
NULL,
FALSE, 0.0, 1
);
-
- CPLAssert( myWarpOptions->pTransformerArg != NULL );
+ /*
+ myWarpOptions->pTransformerArg =
+ GDALCreateGenImgProjTransformer2(
+ mGdalDataset,
+ myGdalMemDataset,
+ NULL
+ );
+ */
+ if ( !myWarpOptions->pTransformerArg )
+ {
+ QMessageBox::warning( 0, QObject::tr( "Warning" ),
+ QObject::tr( "Cannot GDALCreateGenImgProjTransformer: " )
+ + QString::fromUtf8( CPLGetLastErrorMsg() ) );
+ return;
+
+ };
+
+ //CPLAssert( myWarpOptions->pTransformerArg != NULL );
myWarpOptions->pfnTransformer = GDALGenImgProjTransform;
myWarpOptions->padfDstNoDataReal = ( double * ) CPLMalloc( myWarpOptions->nBandCount * sizeof( double ) );
@@ -616,7 +644,14 @@
GDALWarpOperation myOperation;
- myOperation.Initialize( myWarpOptions );
+ if ( myOperation.Initialize( myWarpOptions ) != CE_None )
+ {
+ QMessageBox::warning( 0, QObject::tr( "Warning" ),
+ QObject::tr( "Cannot inittialize GDALWarpOperation : " )
+ + QString::fromUtf8( CPLGetLastErrorMsg() ) );
+ return;
+
+ };
CPLErrorReset();
CPLErr myErr;
myErr = myOperation.ChunkAndWarpImage( 0, 0, thePixelWidth, thePixelHeight );
More information about the QGIS-commit
mailing list