@@ -105,6 +105,7 @@ QgsGdalProvider::QgsGdalProvider( const QString &uri, QgsError error )
105
105
, mYBlockSize( 0 )
106
106
, mGdalBaseDataset( nullptr )
107
107
, mGdalDataset( nullptr )
108
+ , mStatisticsAreReliable( false )
108
109
{
109
110
mGeoTransform [0 ] = 0 ;
110
111
mGeoTransform [1 ] = 1 ;
@@ -127,6 +128,7 @@ QgsGdalProvider::QgsGdalProvider( const QString &uri, bool update )
127
128
, mYBlockSize( 0 )
128
129
, mGdalBaseDataset( nullptr )
129
130
, mGdalDataset( nullptr )
131
+ , mStatisticsAreReliable( false )
130
132
{
131
133
mGeoTransform [0 ] = 0 ;
132
134
mGeoTransform [1 ] = 1 ;
@@ -240,7 +242,15 @@ QgsGdalProvider::~QgsGdalProvider()
240
242
}
241
243
if ( mGdalDataset )
242
244
{
245
+ // Check if already a PAM (persistent auxiliary metadata) file exists
246
+ QString pamFile = dataSourceUri () + QLatin1String ( " .aux.xml" );
247
+ bool pamFileAlreadyExists = QFileInfo ( pamFile ).exists ();
248
+
243
249
GDALClose ( mGdalDataset );
250
+
251
+ // If GDAL created a PAM file right now by using estimated metadata, delete it right away
252
+ if ( !mStatisticsAreReliable && !pamFileAlreadyExists && QFileInfo ( pamFile ).exists () )
253
+ QFile ( pamFile ).remove ();
244
254
}
245
255
}
246
256
@@ -2443,6 +2453,7 @@ QgsRasterBandStats QgsGdalProvider::bandStatistics( int theBandNo, int theStats,
2443
2453
myerval = GDALComputeRasterStatistics ( myGdalBand, bApproxOK,
2444
2454
&pdfMin, &pdfMax, &pdfMean, &pdfStdDev,
2445
2455
progressCallback, &myProg );
2456
+ mStatisticsAreReliable = true ;
2446
2457
}
2447
2458
else
2448
2459
{
0 commit comments