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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Talk2BEV: Language-enhanced Bird’s-eye View Maps for Autonomous Driving

论文标题为“Talk2BEV: Language-enhanced Bird’s-eye View Maps for Autonomous Driving”,主要介绍了一种新型的视觉-语言模型(LVLM)界面,用于自动驾驶情境中的鸟瞰图(BEV)映射。以下是论文的主要内容概…

MATLAB中std函数用法

目录 语法 说明 示例 矩阵列的标准差 三维数组的标准差 指定标准差权重 矩阵行的标准差 数组页的标准差 排除缺失值的标准差 标准差和均值 标准差 std函数的功能是得到标准差。 语法 S std(A) S std(A,w) S std(A,w,"all") S std(A,w,dim) S std(A…

2311rust,到38版本更新

1.35.0稳定版 此版本亮点是分别为Box<dyn FnOnce>,Box<dyn FnMut>和Box<dyn Fn>实现了FnOnce,FnMut和Fn闭包特征. 此外,现在可按不安全的函数指针转换闭包.现在也可无参调用dbg!. 为Box<dyn Fn*>实现Fn*装饰特征. 以前,如果要调用在盒子闭包中存储的…

nvm切换node后,没有npm

当我们想要在不同的 Node.js 版本之间切换的时候&#xff0c;通常会使用 nvm&#xff08;Node Version Manager&#xff09; 来完成。但是&#xff0c;当我们在使用 nvm 切换 Node.js 版本的时候&#xff0c;可能会遇到没有 npm 的情况。这种情况通常发生在我们在新环境或者重新…

Android---Gradle 构建问题解析

想必做 Android App 开发的对 Gradle 都不太陌生。因为有 Android Studio 的帮助&#xff0c;Android 工程师使用 Gradle 的门槛不算太高&#xff0c;基本的配置都大同小异。只要在 Android Studio 默认生成的 build.gradle 中稍加修改&#xff0c;就都能满足项目要求。但是&am…

『vue-router 要点』

参数或查询的改变并不会触发进入/离开的导航守卫&#xff0c;如何解决&#xff1a; 通过观察 $route 对象来应对这些变化&#xff0c; watch: {$route(to, from) {// 对路由变化作出响应...}}使用 beforeRouteUpdate 的组件内守卫。 beforeRouteUpdate(to, from, next) {// re…

面试题c/c++ --STL 算法与数据结构

1.6 STL 模板 模板底层实现&#xff1a;编译器会对函数模板进行两次编译&#xff0c; 在声明的地方对模板代码本身进行编译&#xff0c; 在调用的地方对参数替换后的代码进行编译。 模板传参分析 模板重载 vector 是动态空间&#xff0c; 随着元素的加入&#xff0c; 它的内…

Apache Airflow (十二) :PythonOperator

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

内网穿透的应用-如何在Docker中部署MinIO服务并结合内网穿透实现公网访问本地管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

HTTPS流量抓包分析中出现无法加载key

HTTPS流量抓包分析(TLSv1.2)&#xff0c;这篇文章分析的比较透彻&#xff0c;就不班门弄斧了 https://zhuanlan.zhihu.com/p/635420027 写个小问题&#xff1a;RSA密钥对话框加载rsa key文件的时候注意不要在中文目录下&#xff0c;否则会提示&#xff1a;“Enter the passwor…

单张图像3D重建:原理与PyTorch实现

近年来&#xff0c;深度学习&#xff08;DL&#xff09;在解决图像分类、目标检测、语义分割等 2D 图像任务方面表现出了出色的能力。DL 也不例外&#xff0c;在将其应用于 3D 图形问题方面也取得了巨大进展。 在这篇文章中&#xff0c;我们将探讨最近将深度学习扩展到单图像 3…

【MySql】13- 实践篇(十一)

文章目录 1. 自增主键为什么不是连续的&#xff1f;1.1 自增值保存在哪儿&#xff1f;1.2 自增值修改机制1.2.1 自增值的修改时机1.2.2 自增值为什么不能回退? 1.3 自增锁的优化1.3.1 自增锁设计历史 2. Insert语句为何很多锁?2.1 insert … select 语句2.2 insert 循环写入2…

以“防方视角”观Shiro反序列化漏洞

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 案例概述02 攻击路径03 防方思路 01 案例概述 这篇文章来自微信公众号“潇湘信安”&#xff0c;记录的某师傅如何发现、利用Shiro反序列化漏洞&#xff0c;又是怎样绕过火绒安全防护实现文件落地、…

BLIP-2:冻结现有视觉模型和大语言模型的预训练模型

Li J, Li D, Savarese S, et al. Blip-2: Bootstrapping language-image pre-training with frozen image encoders and large language models[J]. arXiv preprint arXiv:2301.12597, 2023. BLIP-2&#xff0c;是 BLIP 系列的第二篇&#xff0c;同样出自 Salesforce 公司&…

C 语言结构体(struct)

C 语言结构体(struct) 在本教程中&#xff0c;您将学习C语言编程中的结构类型。您将借助示例学习定义和使用结构。 在C语言编程中&#xff0c;有时需要存储实体的多个属性。 实体不必仅具有一种类型的所有信息。 它可以具有不同数据类型的不同属性。 C 数组允许定义可存储相…

Java 的异常体系

Java 中 Throwable 是所有异常和错误的超类&#xff0c;两个直接子类是 Error&#xff08;错误&#xff09;和 Exception&#xff08;异常&#xff09; 在Java中&#xff0c;异常的根类是java.lang.Throwable类&#xff0c;而根类又分为两大类&#xff1a;Error和Exception&…

浅谈开源和闭源的认知

目录 在大型模型的发展中&#xff0c;开源和闭源两种截然不同的开发模式扮演着关键的角色。开源模式通过促进技术共享&#xff0c;吸引了大量优秀人才的加入&#xff0c;从而推动了大模型领域的不断创新。与此相反&#xff0c;闭源模式则着重于保护商业利益和技术优势&#xff…

【uni-app】设置背景颜色相关

1. 全局页面背景色设置&#xff1a; 在App.vue的style样式表中设置 <style> page {background-color: #F0AD4E; } </style> 2. 顶部导航栏背景色设置&#xff1a; 在pages.json页面路由中&#xff0c;globalStyle设置 "globalStyle": {"navi…

物流实时数仓:采集通道搭建

系列文章目录 物流实时数仓&#xff1a;环境搭建 文章目录 系列文章目录前言一、环境准备1.前置环境2.hbase安装1.上传并解压2.配置环境变量3.拷贝jar包4.编写配置文件5.分发配置文件 3.Redis安装1.安装需要的编译环境2.上传并解压文件3.编译安装4.后台访问 4.ClickHouse安装5…

OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建

目录 一、OpenCV 二、OpenCvSharp 三、OpenCvSharp开发环境搭建 四、下载 五、其他 一、OpenCV OpenCV是基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习函数库&#xff0c;支持Windows、Linux、Android和Mac OS操作系统。OpenCV由一系…