@@ -933,77 +933,65 @@ QString QgsGdalProvider::generateBandName( int bandNumber ) const
933
933
if ( !const_cast <QgsGdalProvider *>( this )->initIfNeeded () )
934
934
return QString ();
935
935
936
+ if ( strcmp ( GDALGetDriverShortName ( GDALGetDatasetDriver ( mGdalDataset ) ), " netCDF" ) == 0 || strcmp ( GDALGetDriverShortName ( GDALGetDatasetDriver ( mGdalDataset ) ), " GTiff" ) == 0 )
937
+ {
938
+ char **GDALmetadata = GDALGetMetadata (mGdalDataset , nullptr );
939
+ if (GDALmetadata)
940
+ {
941
+ QStringList metadata = QgsOgrUtils::cStringListToQStringList (GDALmetadata);
942
+ QStringList dimExtraValues;
943
+ QMap<QString, QString> unitsMap;
944
+ for (QStringList::const_iterator i = metadata.constBegin (); i != metadata.constEnd (); ++i) {
945
+ QString val (*i);
946
+ if (!val.startsWith (QLatin1String (" NETCDF_DIM_EXTRA" )) && !val.startsWith (QLatin1String (" GTIFF_DIM_EXTRA" )) && !val.contains (QLatin1String (" #units=" )))
947
+ continue ;
948
+ QStringList values = val.split (' =' );
949
+ val = values.at (1 );
950
+ if (values.at (0 ) == QLatin1String (" NETCDF_DIM_EXTRA" ) || values.at (0 ) == QLatin1String (" GTIFF_DIM_EXTRA" )) {
951
+ dimExtraValues = val.replace (' {' , QString ()).replace (' }' , QString ()).split (' ,' );
952
+ // http://qt-project.org/doc/qt-4.8/qregexp.html#capturedTexts
953
+ } else {
954
+ unitsMap[values.at (0 ).split (' #' ).at (0 )] = val;
955
+ }
956
+ }
957
+ if (!dimExtraValues.isEmpty ())
958
+ {
959
+ QStringList bandNameValues;
960
+ GDALRasterBandH gdalBand = GDALGetRasterBand (mGdalDataset , bandNumber);
961
+ GDALmetadata = GDALGetMetadata (gdalBand, nullptr );
962
+ if (GDALmetadata)
963
+ {
964
+ metadata = QgsOgrUtils::cStringListToQStringList (GDALmetadata);
965
+ for (QStringList::const_iterator i = metadata.constBegin (); i != metadata.constEnd (); ++i)
966
+ {
967
+ QString val (*i);
968
+ if (!val.startsWith (QLatin1String (" NETCDF_DIM_" )) && !val.startsWith (QLatin1String (" GTIFF_DIM_" )))
969
+ continue ;
970
+ QStringList values = val.split (' =' );
971
+ for (QStringList::const_iterator j = dimExtraValues.constBegin (); j != dimExtraValues.constEnd (); ++j)
972
+ {
973
+ QString dim = (*j);
974
+ if (values.at (0 ) != " NETCDF_DIM_" + dim && values.at (0 ) != " GTIFF_DIM_" + dim)
975
+ continue ;
976
+ if (unitsMap.contains (dim) && !unitsMap[dim].isEmpty () && unitsMap[dim] != QLatin1String (" none" ))
977
+ bandNameValues.append (dim + ' =' + values.at (1 ) + " (" + unitsMap[dim] + ' )' );
978
+ else
979
+ bandNameValues.append (dim + ' =' + values.at (1 ));
980
+ }
981
+ }
982
+ }
983
+ if (!bandNameValues.isEmpty ())
984
+ return tr (" Band" ) + QStringLiteral (" %1 / %2" ).arg (bandNumber, 1 + (int ) std::log10 ((float ) bandCount ()), 10 , QChar (' 0' )).arg (bandNameValues.join (QStringLiteral (" / " )));
985
+ }
986
+ }
987
+ }
936
988
QString generatedBandName = QgsRasterDataProvider::generateBandName ( bandNumber );
937
989
GDALRasterBandH myGdalBand = getBand ( bandNumber );
938
990
QString gdalBandName (GDALGetDescription (myGdalBand));
939
-
940
- QgsSettings settings;
941
- switch (settings.value (QStringLiteral ( " /qgis/useOfRasterBandNames" )).toInt ()) {
942
- case 0 :
943
- return generatedBandName;
944
- case 1 :
945
- if ( !gdalBandName.isEmpty () ) {
946
- return gdalBandName;
947
- }
948
- // if we didn't find a band name use the generated one
949
- break ;
950
- case 2 :
951
- return gdalBandName + QStringLiteral (" (" ) + generatedBandName + QStringLiteral (" )" );
952
- case 3 :
953
- return generatedBandName + QStringLiteral (" (" ) + gdalBandName + QStringLiteral (" )" );
954
- case 4 :
955
- if ( strcmp ( GDALGetDriverShortName ( GDALGetDatasetDriver ( mGdalDataset ) ), " netCDF" ) == 0 || strcmp ( GDALGetDriverShortName ( GDALGetDatasetDriver ( mGdalDataset ) ), " GTiff" ) == 0 ) {
956
- char **GDALmetadata = GDALGetMetadata (mGdalDataset , nullptr );
957
-
958
- if (GDALmetadata) {
959
- QStringList metadata = QgsOgrUtils::cStringListToQStringList (GDALmetadata);
960
- QStringList dimExtraValues;
961
- QMap<QString, QString> unitsMap;
962
- for (QStringList::const_iterator i = metadata.constBegin (); i != metadata.constEnd (); ++i) {
963
- QString val (*i);
964
- if (!val.startsWith (QLatin1String (" NETCDF_DIM_EXTRA" )) && !val.startsWith (QLatin1String (" GTIFF_DIM_EXTRA" )) && !val.contains (QLatin1String (" #units=" )))
965
- continue ;
966
- QStringList values = val.split (' =' );
967
- val = values.at (1 );
968
- if (values.at (0 ) == QLatin1String (" NETCDF_DIM_EXTRA" ) || values.at (0 ) == QLatin1String (" GTIFF_DIM_EXTRA" )) {
969
- dimExtraValues = val.replace (' {' , QString ()).replace (' }' , QString ()).split (' ,' );
970
- // http://qt-project.org/doc/qt-4.8/qregexp.html#capturedTexts
971
- } else {
972
- unitsMap[values.at (0 ).split (' #' ).at (0 )] = val;
973
- }
974
- }
975
- if (!dimExtraValues.isEmpty ()) {
976
- QStringList bandNameValues;
977
- GDALRasterBandH gdalBand = GDALGetRasterBand (mGdalDataset , bandNumber);
978
- GDALmetadata = GDALGetMetadata (gdalBand, nullptr );
979
-
980
- if (GDALmetadata) {
981
- metadata = QgsOgrUtils::cStringListToQStringList (GDALmetadata);
982
- for (QStringList::const_iterator i = metadata.constBegin (); i != metadata.constEnd (); ++i) {
983
- QString val (*i);
984
- if (!val.startsWith (QLatin1String (" NETCDF_DIM_" )) && !val.startsWith (QLatin1String (" GTIFF_DIM_" )))
985
- continue ;
986
- QStringList values = val.split (' =' );
987
- for (QStringList::const_iterator j = dimExtraValues.constBegin (); j != dimExtraValues.constEnd (); ++j) {
988
- QString dim = (*j);
989
- if (values.at (0 ) != " NETCDF_DIM_" + dim && values.at (0 ) != " GTIFF_DIM_" + dim)
990
- continue ;
991
- if (unitsMap.contains (dim) && !unitsMap[dim].isEmpty () && unitsMap[dim] != QLatin1String (" none" ))
992
- bandNameValues.append (dim + ' =' + values.at (1 ) + " (" + unitsMap[dim] + ' )' );
993
- else
994
- bandNameValues.append (dim + ' =' + values.at (1 ));
995
- }
996
- }
997
- }
998
-
999
- if (!bandNameValues.isEmpty ())
1000
- return tr (" Band" ) + QStringLiteral (" %1 / %2" ).arg (bandNumber, 1 + (int ) std::log10 ((float ) bandCount ()), 10 , QChar (' 0' )).arg (bandNameValues.join (QStringLiteral (" / " )));
1001
- }
1002
- }
1003
- }
1004
- break ;
991
+ if (!gdalBandName.isEmpty ())
992
+ {
993
+ return generatedBandName + QStringLiteral (" : " ) + gdalBandName;
1005
994
}
1006
-
1007
995
return generatedBandName;
1008
996
}
1009
997
0 commit comments