VS2019编译安装GDAL(C++)程序库

2023-11-21 05:52

本文主要是介绍VS2019编译安装GDAL(C++)程序库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、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博客

这篇关于VS2019编译安装GDAL(C++)程序库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400281

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方