基于 Visual Studio 2017 安装配置 GDAL 库的详细步骤
目录
1 GDAL简介
2 官网下载GDAL库
3 GDAL环境配置
1 GDAL简介
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据处理库,提供了一系列用于读取、写入和处理各种地理空间数据格式的功能。它是一个跨平台的库,可以在多种操作系统上使用,包括 Windows、Linux 和 macOS。GDAL是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。有很多著名的GIS类产品都使用了GDAL/OGR库,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系统。利用GDAL/OGR库,可以使基于Linux的地理空间数据管理系统提供对矢量和栅格文件数据的支持。实际上就是说,GDAL是一个我们用来在代码端读取、处理和操纵栅格数据的库,OGR是一个我们用来在代码端读取、处理和操纵矢量数据的库。GDAL提供了C/C++接口,并且通过SWIG提供了Python,Java,C#等的调用接口。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。
GDAL 库的一些主要功能和特性如下:
- 地理空间数据格式支持: GDAL 支持多种常见的地理空间数据格式,包括栅格数据(如 GeoTIFF、JPEG2000、HDF、NetCDF)、矢量数据(如 Shapefile、GeoJSON、KML)和栅格矢量数据集(如 GeoPackage)等。
- 数据转换和处理: GDAL 提供了一系列功能强大的工具和函数,用于数据转换、重投影、裁剪、合并、分割和统计等操作,使得用户能够灵活地处理和分析地理空间数据。
- 数据读取和写入: GDAL 提供了统一的 API,用于读取和写入各种地理空间数据格式,使得用户可以方便地将数据加载到内存中进行处理,或者将处理结果写入到文件中保存。
- 投影和坐标系支持: GDAL 支持各种常见的地理空间投影和坐标系,包括经纬度坐标系、投影坐标系、地心地固坐标系等,并提供了一系列函数用于投影转换和坐标系转换。
- Python 接口: GDAL 提供了 Python 接口,允许用户使用 Python 编程语言调用 GDAL 库中的函数和工具,从而进行地理空间数据处理和分析。
- 跨平台性: GDAL 是一个跨平台的库,可以在 Windows、Linux、macOS 等多种操作系统上使用,并且支持多种编程语言,包括 C/C++、Python、Java、JavaScript 等。
- GDAL 是地理信息系统(GIS)领域中最重要和最常用的开源库之一,被广泛应用于地图制图、遥感影像处理、空间分析和地理空间数据可视化等领域。
GDAL中使用dataset表示一个栅格数据(使用抽象类GDALDataset表示),一个dataset包含了对于栅格数据的波段,空间参考以及元数据等信息。一张GeoTIFF遥感影像,一张DEM影像,或者一张土地利用图,在GDAL中都是一个GDALDataset。
影像主要包括如下属性:
- 坐标系统(使用OGC WKT格式表示的空间坐标系统或者投影系统);
- 地理仿射变换(使用仿射变换表示图上坐标和地理坐标的关系);
- GCPs(大地控制点记录了图上点及其大地坐标的关系,通过多个大地控制点可以重建图上坐标和地理坐标的关系);
- 元数据(键值对的集合,用于记录和影像相关的元数据信息);
- 栅格波段(使用GDALRasterBand类表示,真正用于存储影像栅格值,一个栅格数据可以有多个波段);
- 颜色表(Color Table用于图像显示)。
2 官网下载GDAL库
GDAL官网各种版本的安装包网址链接:Past Releases — GDAL documentation
注意:本文测试的版本是Visual Studio 2017和GDAL-2.3.2,仅供参考。

3 GDAL环境配置
下载好GDAL-2.3.2以后解压到不含中文的路径中,然后按住Windows+R组合键,或右键桌面左下角Windows徽标选择“运行(R)”,键入powershell并确定。

然后在powershell中键入如下命令,其中“E:\GDAL\gdal-2.3.2”为GDAL路径。
cd E:\GDAL\gdal-2.3.2
继续键入如下命令,得到下图结果:
.\generate_vcxproj.bat

根据提供的Examples修改后三个参数,其中第一个参数(如15.0)和最后一个vs版本参数(如gdal_vs2017)对应,示范代码:
.\generate_vcxproj.bat 15.0 64 gdal_vs2017
运行成功会出现如下界面,然后就可以关闭powershell了:

接下来打开GDAL文件夹,右键新生成的“gdal_vs2017.vcxproj”文件,在Visual Studio 2017中打开,点击“生成”→“生成解决方案”,如果生成解决方案后输出台出现“无法打开包括文件”的现象,则需要在Visual Studio 2017中点击“项目”→“重定解决方案目标”。然后点击“确定”后再次点击“生成”→“生成解决方案”,运行结果如下,成功后退出Visual Studio 2017:


在Visual Studio 2017中新建空项目,右键该项目,点击属性,在属性窗口中找到VC++目录,并在“包含目录”中开始编辑,分别添加如下文件夹:



确定后再返回VC++目录,在“库目录”中也同样将如上的文件夹添加进去。


完成后在属性窗口找到链接器→输入,在附加依赖项中开始编辑,键入如下地址(根据自己的GDAL路径修改):
E:\GDAL\gdal-2.3.2\gdal_i.lib



然后关闭属性窗口,在源文件中添加测试C++文件,测试如下常用的调用GDAL库的代码,如果include下没有出现波浪线,那么就说明可以包含GDAL库,至此就配置成功了。
#include <gdal.h>
#include <gdal_priv.h>

