本文主要是介绍GDAL读取图像波长和单位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于有波长和单位信息的影像可用调用某一栅格波段的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();//打开所以节点
效果如下:
这篇关于GDAL读取图像波长和单位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!