关闭

有点坑爹的GDALComputeRasterMinMax函数

标签: GDALComputeRasterMin
1995人阅读 评论(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这个接口应该慎用。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

GDAL ComputeRasterMinMax .aux.xml

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

浙江大学ACM俱乐部——1023坑爹的黑店

题目描述 今天小明去了一个风景如画的地方散心,但是自己带的饮料喝完了,小明口渴难耐,见不远处有家小商店,于是跑去买饮料。 小明:“我要买饮料!” 店主:“我们这里有三种饮料,矿泉水1...
  • AdamChinaren
  • AdamChinaren
  • 2014-02-18 20:20
  • 1092

Lua: 好的, 坏的, 和坑爹的

在我使用Lua编程整整9个月后, 是时候停下来反省一下这段经历了. 过去了几年里, 我使用了各式各样的语言:Perl (soaplite.com, 还有其它的项目, 包括我现在的咨询工作), C (D...
  • xoyojank
  • xoyojank
  • 2013-10-16 00:42
  • 14657

没有最坑爹,只有更坑爹 ,v7醉了

一个主题引发的惨案: 1.运来项目用的是一般的,然后想用个第三方库,得用v7,然后就用了,然后就闪退,然后就单独写了个空activity测了一把,崩了,然后各种百度测试,可是找到了,因为them...
  • BINGDUCAIJUN
  • BINGDUCAIJUN
  • 2017-04-07 17:32
  • 1212

超诡异的自杀案,有点坑爹

1994年美国报界评出十大最离奇的新闻。 其中一件新闻是这样的: 这一年的3月23日,纽约警察总局的法医检查了一具尸体, 得出结论:此人死于头部枪击。 死者名叫罗纳德·奥普斯,从他留下的遗书中得知,他...
  • jianxia_wzx
  • jianxia_wzx
  • 2012-10-14 22:31
  • 2283

有点坑爹的gdal库

作者:朱金灿来源:http://blog.csdn.net/clever101          今天同事遇到了这样一个问题。他的代码如下:FILE* fpHdr = NULL; fpHdr = fo...
  • clever101
  • clever101
  • 2012-12-11 18:36
  • 1776

c++基础知识,有现成的函数不用,非的自己设计算法,这不是坑爹吗?

那天天气不错,小白(纯属虚构,也许是我,你猜,呵呵)兴高采烈地去xx手机游戏公司面试,带上自己的学历,简历,还有android 手机 手机除了便于联系贵公司之外,最重要的一点,手机上安装有自己制作的...
  • aiwobiezoukaicnew
  • aiwobiezoukaicnew
  • 2014-12-27 10:34
  • 436

c++基础知识,有现成的函数不用,非的自己设计算法,这不是坑爹吗?

那天天气不错,小白(纯属虚构,也许是我,你猜,呵呵)兴高采烈地去xx手机游戏公司面试,带上自己的学历,简历,还有android 手机 手机除了便于联系贵公司之外,最重要的一点,手机上安装有自己制作的...
  • aiwobiezoukainnn
  • aiwobiezoukainnn
  • 2014-12-26 22:48
  • 281

USACO Section 2.4 Overfencing - 略坑爹的输入..再一个函数递归来DFS要慎用.

题目很简单了..从每个出口做一次搜索~~边遍历边判断更新赋值...最后扫描一次全图..找到值最大了就是答案了...     这个输入阿~~会有多余的空格~~也会有本来是一行都是空的~~结果打了两个空...
  • kk303
  • kk303
  • 2011-12-01 14:45
  • 1303

坑爹的stl list 的size()成员函数

刚做hihocoder #1086 Browser Caching的题,一开始的做法是stl unorderd_map+list,满心以为一次就AC,结果……TLE了。O(N)也能TLE!!(╯‵□′...
  • lyingson
  • lyingson
  • 2015-09-15 14:17
  • 1184
    个人资料
    • 访问:4069976次
    • 积分:46260
    • 等级:
    • 排名:第76名
    • 原创:772篇
    • 转载:80篇
    • 译文:3篇
    • 评论:2476条
    公告


    真名:朱金灿
    主要经历:本科毕业于CUG(武汉)的GIS专业,毕业后参加工作,现在在北京从事软件开发和团队管理工作。曾获有色金属工业科技进步奖二等奖(获奖证书链接)。
    我的联系方式:
    EMAIL:clever101#163.com
    研究方向:
    数字图像处理、计算机图形学。

    本博客内容除非特殊说明均属原创,如需转载、引用其中的部分文字,请注意以下几点:

    1)如果我的博客侵犯了你的版权,请给我邮件:clever101#163.com,经核实后我会做出合适的处理。

    2)请在转载(引用)的内容提供本博客中相应文章的链接。如你的作品为非电子读物或纯文本,请给出链接的url。

    3)请勿将我的原创文章用于商业用途。

    4)如果愿意,请给我邮件:clever101#163.com,让我知道我的东西到哪去了。谢谢!

    5)我可以尽我所能回复你在评论中提到的问题,但一般不会给你发邮件,所以请勿留邮箱地址.

    文章存档
    最新评论