背景前提
地理空间数据抽象库 (GDAL) 是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库, 由开源地理空间基金会在许可的 X / MIT 风格免费软件许可下发布. 作为一个库, 它为调用应用程序提供了一个抽象数据模型, 用于所有支持的格式. 它还可以构建有各种有用的命令行接口实用程序, 用于数据转换和处理. PROJ.4 库支持投影和转换.(摘自维基百科)
相关的 OGR 库 (OGR Simple Features Library [2]) 是 GDAL 源代码树的一部分, 它为简单的特征矢量图形数据提供了类似的功能.(摘自维基百科)
GDAL 库在使用前可以进行源码编译, 编译环境由用户所要进行后期的开发环境所决定, 一般情况下, Windows 系统下和 Linux 系统下所编译出来的 GDAL 库文件是不一样的, 不仅如此, 对于 C++ 语言来说, 不同编译器下的编译出来的 GDAL 库文件也是不一样的, 例如 QT 所采用的 MinGW 编译器和 VS 的 MSVC 编译器所编译出来 Windows 系统下的 GDAL 库文件不通用(本人亲测, 确实如此), 所以不同的开发环境, 不同的开发平台(IDE), 不同的编译器, 这都会影响前期的 GDAL 库源码的编译, 再加上 GDAL 库本身又支持多种扩展库, 以及多种语言下的二次编译, 不同的用户有不同的扩展需求, 所以针对 GDAL 库的复杂需求, 配置不同的编译环境, 编译出来的 GDAL 库文件也是各式各样, 这可能也是开源地理空间基金会的 GDAL / OGR 项目管理委员会之所以进行开源的原因.
适用环境(开发)
这里主要介绍前期随笔中所提到的基于 GDAL 库所适用的开发环境, 以及是如何使用的, 当然这里只是做一下简要的总结, 至于具体的函数使用, 以及库文件的编译, 推荐大家可以去买一本李民录老师的《GDAL 库源码剖析与开发指南》(说明: 不是打广告, 我也没收李老师一分钱, 这里只是出于对初学者的一个建议).
本文 GDAL 库所采用的是 QT 软件平台下的 MSVC 2017 x64 编译器进行编译, 编译出来的库文件也只能用于 Windows 系统下 QT(MSVC)软件平台进行开发. 编译过程中为了支持. nc 等 NetCDF 类型文件的读取与写入, 以及包括高斯投影在内的大部分投影功能, 特地加入了 netCDF(4.6.2)和 proj4(4.9.3)库文件进行联合编译, 编译出来以后经过测试, 可以正常使用.
使用方法
这里只介绍基于 Qt 软件下 MSVC 编译器进行 GDAL 库使用环境的配置. 编译后的文件主要有三个: GDAL232,netCDF_462,proj493
每一个文件夹内部都包含各自库本身所具有的 bin 文件, include 文件, lib 文件, bin 文件主要是 Windows 程序运行时与系统进行交互的运行环境文件, lib 是程序进行编译时的库文件, include 文件是编写时的声明文件. 下面主要说一下如何进行配置.
首先进行系统环境变量的配置, 环境变量的配置方法自行百度, 只不过内容不一样, 配置的变量名称为系统环境下的 Path 变量(PS: 很多人初学者曾经问过我, 为什么不在用户环境变量中的 Path 里面配置, 这个我做一点解释, 就是用户环境变量与系统环境变量的区别, 用户环境变量里面的内容只有该用户登陆 Windows 系统进行使用时才有效, 其他用户没有, 但是系统环境变量就区别于这一点, 它是所有用户都生效), 具体配置结果如下:
配置完环境变量完成以后进行测试一下, 打开 cmd 命令行, 输入 gdalinfo 命令, 如果显示如下
则说明配置成功, 如果不是, 则失败, 检查相关错误. 配置成功以后再进行编译环境的配置, 打开 Qt 软件, 新建 Qt 项目, 右击项目名称, 导入外部库文件, 选择 GDAL 库 lib 文件夹中的. lib 文件, 选择完成后, 如下图所示:
点击确定以后,.pro 文件中多处这几行文字表示添加成功, 具体如下图所示:
同样的步骤将 netCDF 库和 proj4 库同样添加进来, 添加的 lib 文件分别是 netcdf.lib,proj_i.lib 和 proj.lib 三个文件. 添加以后的内容如下:
添加完成以后, 即可进行代码的书写开发. 具体开发步骤和内容参考上文所说的《GDAL 库源码剖析与开发指南》一书, 或者去查看李民录老师相关博文(博文主页: https://blog.csdn.net/liminlu0314 ).
结束语
本文主要是针对前期所发博文中所采用的库文件的前提介绍, 也是对之前博文的补充说明, 与此同时, 为了扩大方便大家的使用, 此处公开我之前项目文件中所使用的 GDAL 库文件, 下载连接: https://files.cnblogs.com/files/thyou/GDAL.7z , 希望对相关读者有一定的帮助. 本文中所采用的 GDAL 库及扩展库所采用的源码均为官网最新版编译出来的, 编译时间为 2018 年 9 月 20 日.
致谢
从一开始的啥也不懂, 编译库文件, 到扩展其他语言版本, 再到现在 C++ 与 Java 语言下 GDAL 库的熟练使用, 李老师以及相关的技术博主给予我分享了太多的经验知识, 虽然学习的道路中充满荆棘, 但是还是走过来了, 这里要衷心的感谢你们, 谢谢!
来源: http://www.bubuko.com/infodetail-2894438.html