对于有波长和单位信息的影像可用调用某一栅格波段的GetMetadataItem函数打开:
dataSet->GetRasterBand(1)->GetMetadataItem("wavelength");
dataSet->GetRasterBand(1)->GetMetadataItem("wavelength_units");
如果有这些信息,返回值类型为const char *,如果没有这些信息,返回值为NULL;
const char *变量可以直接赋值给string类型的变量;
如果返回值为NULL则不显示,可以通过加入条件语句将单位赋值为Unknown来显示;
注意不要拼写错误;
因为每个波段都有这些信息,因此需要用循环找出每个波段的波长和单位信息,下面是Qt环境中在TreeView显示的代码:
//显示波段信息
QFileInfo fileInfo(fName);
QStandardItem *rootItem = new QStandardItem(fileInfo.fileName());
for(int i=0;i<BandCount;i++)
{
const char *wave = dataSet->GetRasterBand(i+1)->GetMetadataItem("wavelength");
const char *waveUints = dataSet->GetRasterBand(i+1)->GetMetadataItem("wavelength_units");//别拼写错误
QString wav = wave;
QString wavUi = waveUints;
if(waveUints == NULL)
wavUi = "Unknown";
QStandardItem *childItem = new QStandardItem(tr("Band%1 %2 %3").arg(i+1).arg(wav).arg(wavUi));
rootItem->setChild(i,childItem);
}
fileModel->setItem(0,rootItem);
ui->treeView->setModel(fileModel);
ui->treeView->expandAll();//打开所以节点
效果如下: