一、GDAL简介
GDAL,全称Geospatial Data Abstraction Library,即地理空间数据抽象库,是一个在X/MIT许可协议下读写空间数据的开源库,可以通过命令行工具来进行数据的转换和处理。而在调用中我们常用的OGR(OpenGIS Simple Features Reference Implementation)则是GDAL的一个子项目,实现了一个对空间参考信息进行处理的类。这其中,GDAL主要支持对栅格数据的处理,而OGR主要进行矢量数据的处理,二者通过一个生成系统进行维护,合称为GDAL,用于很多著名的GIS产品(例如ArcGIS、QGIS等)的底层,支持python、C\C++、R等各种语言的API。
二、GDAL安装流程(默认已安装Visual Studio 2019)
(一)cmake安装
本文选择下载cmake 3.27.8(Windows ×64 Installer)版本。需要注意的是,在Install Options安装步骤中我们既可以选择“Add CMake to the system PATH for all users”,也可以选择“Add CMake to the system PATH for the current user”,根据自身需求而定。下载网址见安装官网[1]。
(二)sqlite下载
本文选择下载sqlite 3.44.0版本,SQLite作为数据库引擎为proj库提供数据支持并且与GDAL库相配合。进入官网后分别下载Source Code中的一项“sqlite-amalgamation-3440000.zip”与Precompiled Binaries for Windows中的两项“sqlite-dll-win-x64-3440000.zip”和“sqlite-tools-win-x64-3440000.zip”。下载网址见安装官网[2]。
SQLite环境配置详见参考资料[3],此步骤是为了生成sqlite的静态库。
(三)tiff下载编译
本文选择下载tiff-4.6.0(.tar.gz)版本且采用CMake生成项目文件及基于VS2019编译,配置编译好的TIFF库将用于协助PROJ的编译。
TIFF库编译配置详见参考资料[4],此步骤主要为生成TIFF库的bin、include、lib、share结果文件。
(四)proj下载(最为复杂的部分)
本文选择下载最新proj-6.1.0版本且采用源代码编译方式(传统方法),PROJ库是一个地理坐标转换库,用以处理不同的地理坐标数据。需要注意的是①PROJ库目前已更新至9.3.0版本,但以7.0.0为分界版本需要对proj-datumgrid packages、proj-data package作区分;②debug、release编译需要具有一致性。
PROJ库编译配置详见参考资料[3][1],此步骤需要借助CMake并结合SQLite编译配置后的结果文件。配置完成后,自动生成bin、include、lib与share四个文件夹。
(1)本人在配置过程中,首先尝试对proj-9.3.0版本进行编译配置,但在cmake的configure过程中,总是产生Could NOT find XXX类的报错,Error总是在解决完一个问题之后又持续产生。因此,我选择重新编译配置proj-6.1.0版本。
(2)除下述修改外,可另外修改CMAKE_INSTALL_PREFIX的值为最后编译配置好结果文件的存储地址。
(3)针对参考资料[3]而言,通过本文实验发现,只要对应debug或release编译,均可以编译成功。
(五)gdal下载
本文选择下载gdal-3.5.2(.tar.gz)版本。需要注意的是,在对nmake.opt文件进行修改时,所有修改项都应该删去“#”。
gdal库编译配置详见参考资料[3][1],此步骤主要为生成TIFF库的bin、include、lib、share结果文件。
(六)VS2019工程依赖设置及测试过程
本文选择在工程文件的解决方案资源管理器的属性中配置包含目录、库目录以及附加依赖项。
具体工程文件配置编译详见参考资料[1]。
安装官网:
[1] CMake - Upgrade Your Software Build System
[2] SQLite Download Page
[3] Download — PROJ 9.3.0 documentation
[4] Index of /libtiff/
[5] Download — GDAL documentation
参考资料:
[1] GDAL C++の学习 第一回:编译GDAL - 知乎
[2] CMake Tutorial — CMake 3.28.0-rc5 Documentation
[3] 配置Visual Studio C++环境中GDAL、SQLite与PROJ库的方法 - 知乎
[4] Win11下基于cmake-3.26.3 完美编译 TIFF-4.5.0源码_tiff编译_GIS子枫的博客-CSDN博客