zoukankan      html  css  js  c++  java
  • 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();)

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

  • 相关阅读:
    QML vs WEB
    《TO C产品经理进阶》
    《TO B产品设计标准化》
    《多元思维模型》跨学科及其核心思维模型
    产品经理审美训练
    Aria2多线程轻量级批量下载利器
    正则表达式
    如何开发一个用户脚本系列教程
    Aria2自动下载
    助贷
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313900.html
Copyright © 2011-2022 走看看