• GDAL创建图像提示Driver xxx does not support XXX creation option的原因


    经常在群里有人问,创建图像的时候为什么老是提示下面的信息。

    CPLError: Driver GTiff does not support DCAP_CREATE creation option
    Warning 6: Driver GTiff does not support DCAP_CREATE creation option
    CPLError: Driver GTiff does not support DCAP_CREATECOPY creation option
    Warning 6: Driver GTiff does not support DCAP_CREATECOPY creation option
    CPLError: Driver GTiff does not support DCAP_VIRTUALIO creation option
    Warning 6: Driver GTiff does not support DCAP_VIRTUALIO creation option
    CPLError: Driver GTiff does not support DMD_CREATIONDATATYPES creation option
    Warning 6: Driver GTiff does not support DMD_CREATIONDATATYPES creation option
    CPLError: Driver GTiff does not support DMD_CREATIONOPTIONLIST creation option
    Warning 6: Driver GTiff does not support DMD_CREATIONOPTIONLIST creation option
    CPLError: Driver GTiff does not support DMD_EXTENSION creation option
    Warning 6: Driver GTiff does not support DMD_EXTENSION creation option
    CPLError: Driver GTiff does not support DMD_HELPTOPIC creation option
    Warning 6: Driver GTiff does not support DMD_HELPTOPIC creation option
    CPLError: Driver GTiff does not support DMD_LONGNAME creation option
    Warning 6: Driver GTiff does not support DMD_LONGNAME creation option
    CPLError: Driver GTiff does not support DMD_MIMETYPE creation option
    Warning 6: Driver GTiff does not support DMD_MIMETYPE creation option
    CPLError: Driver GTiff does not support DMD_SUBDATASETS creation option
    Warning 6: Driver GTiff does not support DMD_SUBDATASETS creation option

    测试的代码如下:

                GDALAllRegister();
                GDALDriver *poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");
                char **papszCreateOptions = poDriver->GetMetadata();
    
                GDALDataset *poDS = poDriver->Create("D:\test.tif", 512, 512, 3, GDT_Byte, papszCreateOptions);
    
                // do something
    
                GDALClose((GDALDatasetH)poDS);

    上面的代码中有个错误就是papszCreateOptions这个参数的值设置错误,如果没有创建选项,就指定为NULL就可以了,为啥要获取Dirver的元数据呢???

    注意上面的代码,Create函数或者CreateCopy函数中有个参数叫CreateOptions,这个参数的意思就是为了指定创建图像的一些特殊选项,比如Tiff图像的压缩方式,Jpeg图像的压缩率,ENVI的图像存储方式等等,每种驱动所对应的创建选项也不会相同,具体的都可以在gdal的官网中的格式说明中找到非常详细的介绍,每种驱动页面中只要是支持创建的格式一般都会有一个Cerete Options的章节,里面就是这种格式的创建选项以及使用设置的参数信息。

    知道了这个参数的原因,就明白了为什么会出现上面的提示,主要原因就是你设置的创建选项是错误的,所以GDAL提示了出来。

    这个问题群里面非常多的人问,我觉得应该是有人在网上将这种错误的写法贴出来了,所以我搜了下,下面的网址中的用法都是这个原因导致的。
    http://blog.sciencenet.cn/blog-98709-486392.html (char **papszMetadata = poDriver->GetMetadata();)

    最后希望大家在网上搜索资料的时候学会判断哪些是对的,那些是错误的,不要一股脑的全部拿来用。

  • 相关阅读:
    穷人不配拥有爱情
    配置 OSPF 的 DR 选择示例
    配置OSPF虚连接示例
    配置OSPF路由协议基本功能示例
    配置 RIP 与动态 BFD 联动特性示例(IPv4)
    配置 RIP 与单臂静态 BFD 联动特性示例(IPv4)
    配置 RIP 引入外部路由示例(IPv4)
    配置 RIP 基本功能示例(IPv4)
    可以继承和不可以继承的样式属性
    权重和权重的计算
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313900.html
Copyright © 2020-2023  润新知