GDAL ComputeRasterMinMax .aux.xml

原创 2016年06月02日 00:16:29

这个函数的第一个参数bApproxOK,TRUE表示精确统计,速度慢,图像的所有像元都遍历一边,FALSE表示粗略统计,速度快,但是不一定准确。函数还有个返回值,是CPLErr类型,如果返回CE_None表示计算成功,其他的可以参考GDAL的相关说明。

第二个参数pdfMinMax,是用来存储统计出来的最小值和最大值。这个数组一般是一个double [2],第0个表示最小值,第1个表示最大值。

切记,调用了函数GDALRasterBand::ComputeRasterMinMax ()之后,GDAL不会把最大值和最小值写入.aux.xml中。如果想把最大值和最小值写入.aux.xml中,需要手动调用:
    CPLsnprintf( szValue, sizeof(szValue), "%.14g", dfMin );
    SetMetadataItem( "STATISTICS_MINIMUM", szValue );


    CPLsnprintf( szValue, sizeof(szValue), "%.14g", dfMax );
    SetMetadataItem( "STATISTICS_MAXIMUM", szValue );

通常情况下此函数和GDALRasterBand::GetMinimum()、GDALRasterBand::GetMaximum()配套使用。

只有直接调用函数GDALRasterBand::GetMinimum()和GDALRasterBand::GetMaximum() 获取不成功时才需要调用ComputeRasterMinMax函数。

并可以将ComputeRasterMinMax的计算的结果存入.aux.xml中:下次就不需要再统计一遍了 ,如果有.aux.xml文件,且.aux.xml中有最大最小值,直接调用函数GDALRasterBand::GetMinimum()和GDALRasterBand::GetMaximum()就能获取到准确的结果。

代码逻辑如下:

      int bGotMin, bGotMax;
      double adfMinMax[2];
      adfMinMax[0] = poBand->GetMinimum( &bGotMin );
      adfMinMax[1] = poBand->GetMaximum( &bGotMax );
      if( ! (bGotMin && bGotMax) )
      {
         GDALComputeRasterMinMax(poBand, FALSE, adfMinMax);
         CPLsnprintf( szValue, sizeof(szValue), "%.14g", dfMin );
         SetMetadataItem( "STATISTICS_MINIMUM", szValue );
         CPLsnprintf( szValue, sizeof(szValue), "%.14g", dfMax );
         SetMetadataItem( "STATISTICS_MAXIMUM", szValue );
      }



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

有点坑爹的GDALComputeRasterMinMax函数

作者:朱金灿来源:http://blog.csdn.net/clever101            GDALComputeRasterMinMax函数是gdal库为了求取指定波段的极值而提...

Linux下的ps aux命令详解

  • 2014-08-20 09:48
  • 65KB
  • 下载

OpenGL Aux

  • 2012-08-22 13:23
  • 194KB
  • 下载

linux命令ps aux|grep xxx详解

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令. 使用该命令 可以确定有哪些进程正...

QQ2010_AUX_M909_Build045.jad

  • 2012-07-31 10:04
  • 548B
  • 下载

ubuntu的ps -aux详细介绍

显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 使用“date -s”命令来修改系统时间 比如将系统时间设定成1996年6月10日的命令如下。 ...

ubuntu的ps -aux详细介绍

显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 使用“date -s”命令来修改系统时间 比如将系统时间设定成1996年6月10日的命...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)