1、前言

GDAL库在2015年6月开始发布了2.0.0版本,同时与1.x的版本保持同步更新,GDAL2.x的最新版本已经发布到2.2.0(2017年4月发布),并且1.x的最后发布的版本是在2016年7月1.11.5,至今再没有更新(在维护的版本有一个1.11.6,估计只是修改bug的版本)。由此可以看出GDAL库将来可能只会更新2.x的版本。

GDAL2.x的版本比1.x的版本有更多的算法,更高的效率和更好的组织结构,所以在接口上发生了一定的变化,但是不是很多(否则基于GDAL库的项目升级代价太大),下面就对发生变化的部分进行总结,便于大家进行升级到2.x。

2、栅格数据读写操作

与1.x的接口完全一样,可以直接将库更新到2.x直接编译即可,代码都不用修改。但是打开图像增加了GDALOpenEx函数,该函数与之前的GDALOpen类似。

3、矢量数据读写操作(注意:下面是重点)

与1.x的接口变化较大,主要在于打开数据和关闭数据。请看下面的代码:

1.x打开矢量数据代码如下:

#include "ogrsf_frmts.h"
int main()
{OGRRegisterAll();OGRDataSource       *poDS;poDS = OGRSFDriverRegistrar::Open( "point.shp", FALSE );if( poDS == NULL ){printf( "Open failed.\n" );exit( 1 );}OGRLayer  *poLayer;poLayer = poDS->GetLayerByName( "point" );  //中间读取Feature、FeatureDefn和Geometry等接口没有任何变化//关闭数据OGRDataSource::DestroyDataSource( poDS );
}

2.x打开矢量数据代码如下:

#include "ogrsf_frmts.h"
int main()
{GDALAllRegister();GDALDataset       *poDS;poDS = (GDALDataset*) GDALOpenEx( "point.shp", GDAL_OF_VECTOR, NULL, NULL, NULL );if( poDS == NULL ){printf( "Open failed.\n" );exit( 1 );}OGRLayer  *poLayer;poLayer = poDS->GetLayerByName( "point" );//中间读取Feature、FeatureDefn和Geometry等接口没有任何变化//关闭数据GDALClose( poDS );
}

由于GDAL2.x的版本将栅格和矢量访问接口进行了统一,个人觉得主要原因是为了更方便的访问比如PIX、PDF等既可以存图像又可以存矢量的数据,所以将读写矢量数据的接口与读写栅格的接口进行了一致。

通过比较可以发现,主要的不同在于以下几个方面:

序号 说明 1.x版本 2.x版本
1 注册函数变化 OGRRegisterAll() GDALAllRegister()
2 数据集对象 OGRDataSource GDALDataset
3 打开函数 OGRSFDriverRegistrar::Open() GDALOpenEx()
4 获取图层对象 OGRDataSource GDALDatset
5 关闭矢量数据 OGRDataSource::DestroyDataSource() GDALClose()

3、总结

如果在项目中仅仅使用了图像处理的内容,直接可以升级到2.x的版本,不需要进行任何修改。
如果在项目中用到了矢量数据读写的内容,升级的时候只需要将矢量数据打开和关闭的部分进行修改即可。
对于其他语言,如C/C#/Python/Java等,栅格数据接口没有任何变化,矢量数据接口打开和关闭进行了调整。

GDAL2.x与1.x的主要变化比较(以C++为例说明)相关推荐

  1. AI持续赋能,搜狗S1会给录音笔行业带来哪些新变化?

    作者 | 持续赋能的 出品 | CSDN(ID:CSDNnews) 2月26日,在以"同舟共记"为主题的"2020搜狗AI录音笔新品线上发布会"上,搜狗重磅推出 ...

  2. 溃疡性结肠炎中肠黏膜病毒的变化

    摘要 目的 UC的发病机制与肠道菌群失调有关.我们推测,在病毒群落中,肠道黏膜的改变在UC发病机理中起着重要作用.这项研究旨在表征黏膜病毒及其在健康和UC中的功能. 设计 对来自中国三个不同地理区域( ...

  3. labview布尔型数据开关控制指示灯比较数值颜色变化条件判断

    wx供重浩:创享日记 对话框发送:labview布尔 获取完整无水印报告+源程序文件 文章目录 例1.在程序前面板通过开关控制指示灯颜色变化. 例2.比较2个数值的大小,通过指示灯的颜色变化来显示比较 ...

  4. numpy.astype数据精度导致数据变化的问题

    在用numpy.astype强制转换数据类型的时候,由于numpy精度的问题将会对长度超过16位的数据发生不可预见的变化. 见以下样例: a=np.random.randint(10000000000 ...

  5. WAS服务器负载测试软件导读

    转帖:出处未知 你的Web服务器和应用到底能够支持多少并发用户访问?在出现大量并发请求的情况下,软件会出现问题吗?这些问题靠通常的测试手段是无法解答的.本文介绍了Microsoft为这个目的而提供的免 ...

  6. Java 最常见的 100+ 面试题和答案:面试必备

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的. 需要pdf版的可以 ...

  7. 干货丨从概念到案例:初学者须知的十大机器学习算法

    本文先为初学者介绍了必知的十大机器学习(ML)算法,并且我们通过一些图解和实例生动地解释这些基本机器学习的概念.我们希望本文能为理解机器学习(ML)基本算法提供简单易读的入门概念. 机器学习模型 在& ...

  8. odoo tree视图过滤数据_在EA中建立优雅的仪表板视图

    在EA中为什么需要仪表盘 在EA中可以建立需求模型.设计模型.code模型.测试模型,实现基于模型的管理,包括: 需求管理 质量管理 项目管理 这些管理需要对相应的模型元素进行统计,并以图表的形式展示 ...

  9. FPGA之道(80)静态时序分析(六)常用时序约束介绍(基于ISE的UCF文件语法)

    文章目录 前言 常用时序约束介绍 时序环境约束 分组时序约束 TNM TNM_NET TIMEGRP 常用时序约束 周期约束 输入时钟周期约束 内部时钟周期约束 关联时钟周期约束 差分时钟周期约束 输 ...

最新文章

  1. 《Splunk智能运维实战》——3.11 制作折线图显示项目浏览量和购买量随时间的变化...
  2. 17、MySQL创建,执行事件
  3. vivo X21低调奢华 彭于晏携手黑金版来袭
  4. MFC 界面美化 Skinmagic
  5. ADSL断流问题分析
  6. docker数据持久化数据卷
  7. CCF201312试题
  8. Python导入jar包
  9. 拉普拉斯变换部分公式证明
  10. Mysql学习——建表语句详解
  11. java读取propertiies文件例子
  12. Excel怎么快速选中相同背景颜色单元格
  13. SOLIDWORKS凸台拉伸命令,你真的会用吗?
  14. 通信工程专业就业怎么样?难不难学?
  15. 智能耳机测试软件,智能可穿戴设备有哪些?解析可穿戴设备的作用和测试
  16. 无法定位程序输入点_except1于动态链接库
  17. php7.3 7.4,PHP 7.4 早期性能基准测试:与 7.3 差不多
  18. JAVA微信开发(四), 公众号普通红包
  19. GDUT22级寒假训练专题四
  20. 软件生命周期模型——瀑布模型

热门文章

  1. python网页信息_利用python处理网页信息
  2. python 判断文件夹是否存在 否则创建_10行Python代码自动清理电脑内重复文件,解放双手!...
  3. 10外置面板没声音_现在电脑机箱只能用外置光驱了?看我装了个隐蔽式光驱
  4. 手机浏览器被强制跳转_Azure front door 强制http redirect to https
  5. ubantu实现linux命令的实验_linux 基础知识
  6. 作为程序猿必须了解的生产者与消费者
  7. jQuery天猫商品分类导航菜单
  8. vue项目中使用sass的方法
  9. elasticsearch备份与恢复4_使用ES-Hadoop将ES中的索引数据写入HDFS中
  10. 一致性 hash 算法(consistent hashing)