Skip to content

Commit c4872b8

Browse files
AndrewAnnexnyalldawson
authored andcommittedOct 9, 2018
responding to github comments, simplified behavior to display the band name if present 'Band #: Band Name'. removed options
1 parent b86f84e commit c4872b8

File tree

3 files changed

+55
-122
lines changed

3 files changed

+55
-122
lines changed
 

‎src/app/qgsoptions.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -418,20 +418,6 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QList<QgsOpti
418418
cmbPromptRasterSublayers->addItem( tr( "Load all" ) );
419419
cmbPromptRasterSublayers->setCurrentIndex( mSettings->value( QStringLiteral( "/qgis/promptForRasterSublayers" ), 0 ).toInt() );
420420

421-
// decide how qgis should use band names (if present) in raster sources
422-
// 0 = Band Number -> Default behavior is to just use band numbers
423-
// 1 = Band Name -> Uses available band name
424-
// 2 = Band Name & Number -> Uses available band name with a band number-> "name (band #)"
425-
// 3 = Band Name & Number -> Uses band number with available band name-> "band # (name)"
426-
// 4 = Use _DIM_EXTRA -> Uses "_DIM_EXTRA" metadata attribute in netCDF and geotiff
427-
cmbUseOfRasterBandNames->clear();
428-
cmbUseOfRasterBandNames->addItem( tr( "Band Number" ) );
429-
cmbUseOfRasterBandNames->addItem( tr( "Band Name" ) );
430-
cmbUseOfRasterBandNames->addItem( tr( "Band Name & Number" ) );
431-
cmbUseOfRasterBandNames->addItem( tr( "Band Number & Name" ) );
432-
cmbUseOfRasterBandNames->addItem( tr( "Use _DIM_EXTRA" ) );
433-
cmbUseOfRasterBandNames->setCurrentIndex( mSettings->value( QStringLiteral( "/qgis/useOfRasterBandNames" ), 0 ).toInt() );
434-
435421
// Scan for valid items in the browser dock
436422
cmbScanItemsInBrowser->clear();
437423
cmbScanItemsInBrowser->addItem( tr( "Check file contents" ), "contents" ); // 0
@@ -1403,7 +1389,6 @@ void QgsOptions::saveOptions()
14031389
mSettings->setValue( QStringLiteral( "/qgis/attributeTableView" ), mAttrTableViewComboBox->currentData() );
14041390
mSettings->setValue( QStringLiteral( "/qgis/attributeTableRowCache" ), spinBoxAttrTableRowCache->value() );
14051391
mSettings->setValue( QStringLiteral( "/qgis/promptForRasterSublayers" ), cmbPromptRasterSublayers->currentIndex() );
1406-
mSettings->setValue( QStringLiteral( "/qgis/useOfRasterBandNames" ), cmbUseOfRasterBandNames->currentIndex() );
14071392
mSettings->setValue( QStringLiteral( "/qgis/scanItemsInBrowser2" ),
14081393
cmbScanItemsInBrowser->currentData().toString() );
14091394
mSettings->setValue( QStringLiteral( "/qgis/scanZipInBrowser2" ),

‎src/providers/gdal/qgsgdalprovider.cpp

Lines changed: 55 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -933,77 +933,65 @@ QString QgsGdalProvider::generateBandName( int bandNumber ) const
933933
if ( !const_cast<QgsGdalProvider *>( this )->initIfNeeded() )
934934
return QString();
935935

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+
}
936988
QString generatedBandName = QgsRasterDataProvider::generateBandName( bandNumber );
937989
GDALRasterBandH myGdalBand = getBand( bandNumber );
938990
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;
1005994
}
1006-
1007995
return generatedBandName;
1008996
}
1009997

‎src/ui/qgsoptionsbase.ui

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2007,45 +2007,6 @@
20072007
</item>
20082008
</layout>
20092009
</item>
2010-
<item>
2011-
<layout class="QHBoxLayout" name="horizontalLayout_38">
2012-
<item>
2013-
<widget class="QLabel" name="textLabel1_15">
2014-
<property name="sizePolicy">
2015-
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
2016-
<horstretch>0</horstretch>
2017-
<verstretch>0</verstretch>
2018-
</sizepolicy>
2019-
</property>
2020-
<property name="text">
2021-
<string>Change raster band name behavior</string>
2022-
</property>
2023-
</widget>
2024-
</item>
2025-
<item>
2026-
<spacer name="horizontalSpacer_38">
2027-
<property name="orientation">
2028-
<enum>Qt::Horizontal</enum>
2029-
</property>
2030-
<property name="sizeHint" stdset="0">
2031-
<size>
2032-
<width>40</width>
2033-
<height>20</height>
2034-
</size>
2035-
</property>
2036-
</spacer>
2037-
</item>
2038-
<item>
2039-
<widget class="QComboBox" name="cmbUseOfRasterBandNames">
2040-
<item>
2041-
<property name="text">
2042-
<string/>
2043-
</property>
2044-
</item>
2045-
</widget>
2046-
</item>
2047-
</layout>
2048-
</item>
20492010
<item>
20502011
<widget class="QCheckBox" name="cbxIgnoreShapeEncoding">
20512012
<property name="toolTip">
@@ -5645,7 +5606,6 @@ p, li { white-space: pre-wrap; }
56455606
<tabstop>cmbScanItemsInBrowser</tabstop>
56465607
<tabstop>cmbScanZipInBrowser</tabstop>
56475608
<tabstop>cmbPromptRasterSublayers</tabstop>
5648-
<tabstop>cmbUseOfRasterBandNames</tabstop>
56495609
<tabstop>cbxIgnoreShapeEncoding</tabstop>
56505610
<tabstop>cbxAddPostgisDC</tabstop>
56515611
<tabstop>cbxAddOracleDC</tabstop>

0 commit comments

Comments
 (0)
Please sign in to comment.