有点坑爹的GDALComputeRasterMinMax函数

标签: GDALComputeRasterMin
2134人阅读 评论(3) 收藏 举报
分类:

作者:朱金灿

来源:http://blog.csdn.net/clever101

    

        GDALComputeRasterMinMax函数是gdal库为了求取指定波段的极值而提供的接口。最近看了这个接口的源码,发现这个接口有点坑爹。GDALComputeRasterMinMax实际上是调用GDALRasterBand类的virtual double GetMinimum( int *pbSuccess = NULL )virtual double GetMaximum(int *pbSuccess = NULL );两个接口。我们看看GDALRasterBand::GetMinimum函数的实现:


double GDALRasterBand::GetMinimum( int *pbSuccess )

{
    const char *pszValue = NULL;
    
    if( (pszValue = GetMetadataItem("STATISTICS_MINIMUM")) != NULL )
    {
        if( pbSuccess != NULL )
            *pbSuccess = TRUE;
        
        return CPLAtofM(pszValue);
    }

    if( pbSuccess != NULL )
        *pbSuccess = FALSE;

    switch( eDataType )
    {
      case GDT_Byte:
      {
        const char* pszPixelType = GetMetadataItem("PIXELTYPE", "IMAGE_STRUCTURE");
        if (pszPixelType != NULL && EQUAL(pszPixelType, "SIGNEDBYTE"))
            return -128;
        else
            return 0;
      }

      case GDT_UInt16:
        return 0;

      case GDT_Int16:
        return -32768;

      case GDT_Int32:
        return -2147483648.0;

      case GDT_UInt32:
        return 0;

      case GDT_Float32:
        return -4294967295.0; /* not actually accurate */

      case GDT_Float64:
        return -4294967295.0; /* not actually accurate */

      default:
        return -4294967295.0; /* not actually accurate */
    }
}

    这段函数的意义是什么呢?就是说首先从元数据文件(一般是xml文件)中查找是否有最小值记录,如果有就取出来返回;如果没有就把波段类型的值域的最小值返回。这样做就有点坑爹了,因为求取的极值并非来自统计图像而来,就是说除非派生自GDALRasterBand类的波段类重写了GetMinimumGetMaximum两个接口,否则求取的极值基本上是不准确的。我查了一下,geotiff的波段类都没重写这两个接口。因此GDALComputeRasterMinMax这个接口应该慎用。

查看评论

GDAL计算栅格图像统计值相关说明

一、        简介 在图像处理的过程中,会经常获取图像的统计值来进行一些计算。这里说的图像的统计值指:直方图,最大值,最小值,均值和方差这几个。下面分别对怎么使用GDAL来计算这些值做一个简单的...
  • liminlu0314
  • liminlu0314
  • 2013-01-11 23:15:00
  • 6262

GDAL ComputeRasterMinMax .aux.xml

这个函数的第一个参数bApproxOK,TRUE表示精确统计,速度慢,图像的所有像元都遍历一边,FALSE表示粗略统计,速度快,但是不一定准确。函数还有个返回值,是CPLErr类型,如果返回CE_No...
  • qq245642042
  • qq245642042
  • 2016-06-02 00:16:29
  • 324

minmax()函数

CSS Grid Layout规范中的minmax()函数是一个非常有用的新特性。这个函数能够让我们用最简单的CSS控制网格轨道的大小。这个函数包括一个最小值和最大值。minmax()函数minmax...
  • taotaomin99
  • taotaomin99
  • 2017-06-11 23:46:54
  • 606

minMaxIdx用法

OpenCV中给出的声明是这样的void cv::minMaxIdx ( InputArray src, double * minVal,...
  • qq_29796317
  • qq_29796317
  • 2017-06-12 20:49:33
  • 1694

有点坑爹的GDALComputeRasterMinMax函数

作者:朱金灿来源:http://blog.csdn.net/clever101            GDALComputeRasterMinMax函数是gdal库为了求取指定波段的极值而提供的接口。...
  • clever101
  • clever101
  • 2014-11-06 18:25:26
  • 2134

自己动手用c#写控件

willsound(willsound@163.com) 关键词c#,.net,控件,GDI+ 我平时比较喜欢使用delphi,小生不才,我随然喜欢delphi,平时开发(至少现在)多用delphi,...
  • chenchao_csharp
  • chenchao_csharp
  • 2005-04-12 22:45:00
  • 889

有点坑爹的一些问题

一开始按照网上说的步骤想办法在JNI里面弄出log来,但是很奇怪的是我这里一直出不来,弄了好久发现原来已经出来了,只是Logcat那些标签没有显示出来弄得我以为没有出来,浪费好多时间 需要注意的是A...
  • findsafety
  • findsafety
  • 2013-01-05 15:57:23
  • 437

1023——坑爹的黑店

#include using namespace std; int main() { int n; cin>>n; int m,i,j,k; for(m=0;m>s...
  • u011470356
  • u011470356
  • 2013-07-22 18:24:06
  • 940

HDF文件的显示策略

作者:朱金灿来源:http://blog.csdn.net/clever101         hdf格式(类似还有netcdf格式)格式是国际上通用的遥感数据格式。它们都是采用不规则存储的格式,就是...
  • clever101
  • clever101
  • 2014-10-25 13:10:54
  • 4539

MFC结合GDAL按256*256大小裁剪正方形图片

GDAL <em>ComputeRasterMinMax</em> .aux.xml GDAL读写shp文件代码 立即下载 上传者: starhuhu 时间: 2017-06-13 综合评分: 3 积分/C币:5 Qt+GDAL图像显示基本...
  • 2018年04月14日 00:00
    个人资料
    持之以恒
    等级:
    访问量: 421万+
    积分: 4万+
    排名: 76
    文章存档
    最新评论