Skip to content

Commit

Permalink
[GDAL provider] Use base dataset to display metadata in HTML output
Browse files Browse the repository at this point in the history
Fix #58489
  • Loading branch information
rouault authored and nyalldawson committed Sep 10, 2024
1 parent 2861ba8 commit 3de62b0
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/core/providers/gdal/qgsgdalprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -526,23 +526,27 @@ QString QgsGdalProvider::htmlMetadata() const

QString myMetadata;

// Use the base dataset to display metadata, rather than potentially the
// warped VRT one, which might lack it.
GDALDatasetH dsForMetadata = mGdalBaseDataset;

// GDAL Driver description
myMetadata += QStringLiteral( "<tr><td class=\"highlight\">" ) + tr( "GDAL Driver Description" ) + QStringLiteral( "</td><td>" ) + mDriverName + QStringLiteral( "</td></tr>\n" );

// GDAL Driver Metadata
myMetadata += QStringLiteral( "<tr><td class=\"highlight\">" ) + tr( "GDAL Driver Metadata" ) + QStringLiteral( "</td><td>" ) + QString( GDALGetMetadataItem( hDriver, GDAL_DMD_LONGNAME, nullptr ) ) + QStringLiteral( "</td></tr>\n" );

// Dataset description
myMetadata += QStringLiteral( "<tr><td class=\"highlight\">" ) + tr( "Dataset Description" ) + QStringLiteral( "</td><td>" ) + QString::fromUtf8( GDALGetDescription( mGdalDataset ) ) + QStringLiteral( "</td></tr>\n" );
myMetadata += QStringLiteral( "<tr><td class=\"highlight\">" ) + tr( "Dataset Description" ) + QStringLiteral( "</td><td>" ) + QString::fromUtf8( GDALGetDescription( dsForMetadata ) ) + QStringLiteral( "</td></tr>\n" );

// compression
QString compression = QString( GDALGetMetadataItem( mGdalDataset, "COMPRESSION", "IMAGE_STRUCTURE" ) );
QString compression = QString( GDALGetMetadataItem( dsForMetadata, "COMPRESSION", "IMAGE_STRUCTURE" ) );
myMetadata += QStringLiteral( "<tr><td class=\"highlight\">" ) + tr( "Compression" ) + QStringLiteral( "</td><td>" ) + compression + QStringLiteral( "</td></tr>\n" );

// Band details
for ( int i = 1; i <= GDALGetRasterCount( mGdalDataset ); ++i )
for ( int i = 1; i <= GDALGetRasterCount( dsForMetadata ); ++i )
{
GDALRasterBandH gdalBand = GDALGetRasterBand( mGdalDataset, i );
GDALRasterBandH gdalBand = GDALGetRasterBand( dsForMetadata, i );
char **GDALmetadata = GDALGetMetadata( gdalBand, nullptr );
myMetadata += QStringLiteral( "<tr><td class=\"highlight\">" ) + tr( "Band %1" ).arg( i ) + QStringLiteral( "</td><td>" );
if ( GDALmetadata )
Expand Down Expand Up @@ -574,7 +578,7 @@ QString QgsGdalProvider::htmlMetadata() const
myMetadata += tr( "Mask band (exposed as alpha band)" ) + QStringLiteral( "<br />\n" );
}

char **GDALmetadata = GDALGetMetadata( mGdalDataset, nullptr );
char **GDALmetadata = GDALGetMetadata( dsForMetadata, nullptr );
if ( GDALmetadata )
{
QStringList metadata = QgsOgrUtils::cStringListToQStringList( GDALmetadata );
Expand Down

0 comments on commit 3de62b0

Please sign in to comment.