当前位置: 首页 > news >正文

基于 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 库的一些主要功能和特性如下:

  1. 地理空间数据格式支持: GDAL 支持多种常见的地理空间数据格式,包括栅格数据(如 GeoTIFF、JPEG2000、HDF、NetCDF)、矢量数据(如 Shapefile、GeoJSON、KML)和栅格矢量数据集(如 GeoPackage)等。
  2. 数据转换和处理: GDAL 提供了一系列功能强大的工具和函数,用于数据转换、重投影、裁剪、合并、分割和统计等操作,使得用户能够灵活地处理和分析地理空间数据。
  3. 数据读取和写入: GDAL 提供了统一的 API,用于读取和写入各种地理空间数据格式,使得用户可以方便地将数据加载到内存中进行处理,或者将处理结果写入到文件中保存。
  4. 投影和坐标系支持: GDAL 支持各种常见的地理空间投影和坐标系,包括经纬度坐标系、投影坐标系、地心地固坐标系等,并提供了一系列函数用于投影转换和坐标系转换。
  5. Python 接口: GDAL 提供了 Python 接口,允许用户使用 Python 编程语言调用 GDAL 库中的函数和工具,从而进行地理空间数据处理和分析。
  6. 跨平台性: GDAL 是一个跨平台的库,可以在 Windows、Linux、macOS 等多种操作系统上使用,并且支持多种编程语言,包括 C/C++、Python、Java、JavaScript 等。
  7. GDAL 是地理信息系统(GIS)领域中最重要和最常用的开源库之一,被广泛应用于地图制图、遥感影像处理、空间分析和地理空间数据可视化等领域。

GDAL中使用dataset表示一个栅格数据(使用抽象类GDALDataset表示),一个dataset包含了对于栅格数据的波段,空间参考以及元数据等信息。一张GeoTIFF遥感影像,一张DEM影像,或者一张土地利用图,在GDAL中都是一个GDALDataset。

影像主要包括如下属性:

  1. 坐标系统(使用OGC WKT格式表示的空间坐标系统或者投影系统);
  2. 地理仿射变换(使用仿射变换表示图上坐标和地理坐标的关系);
  3. GCPs(大地控制点记录了图上点及其大地坐标的关系,通过多个大地控制点可以重建图上坐标和地理坐标的关系);
  4. 元数据(键值对的集合,用于记录和影像相关的元数据信息);
  5. 栅格波段(使用GDALRasterBand类表示,真正用于存储影像栅格值,一个栅格数据可以有多个波段);
  6. 颜色表(Color Table用于图像显示)。

2 官网下载GDAL库

GDAL官网各种版本的安装包网址链接:Past Releases — GDAL documentation

注意:本文测试的版本是Visual Studio 2017GDAL-2.3.2,仅供参考。

GDAL官网下载指定版本的GDAL库

3 GDAL环境配置

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

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++目录
编辑“包含目录”

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

编辑“库目录”
编辑完成的“包含目录”和“库目录”

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

E:\GDAL\gdal-2.3.2\gdal_i.lib
点击编辑“附加依赖项”
编辑“附加依赖项”
编辑完成的“附加依赖项”

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

#include <gdal.h>
#include <gdal_priv.h>
在源文件中添加C++文件
测试成功

文章转载自:

http://ZQVFfFji.jpjxb.cn
http://LQVpLDPI.jpjxb.cn
http://J1qbCHfq.jpjxb.cn
http://I3SsBfRW.jpjxb.cn
http://IeJ0uJaE.jpjxb.cn
http://cUUYpOJo.jpjxb.cn
http://MsBKAET9.jpjxb.cn
http://txoVw1T3.jpjxb.cn
http://n4goFTiY.jpjxb.cn
http://TgF7tphU.jpjxb.cn
http://3jsXCWzZ.jpjxb.cn
http://IOHLfXo8.jpjxb.cn
http://DDhsD997.jpjxb.cn
http://eQWjvFWg.jpjxb.cn
http://qNY3U3eJ.jpjxb.cn
http://xrcNr9V7.jpjxb.cn
http://uhvGreMl.jpjxb.cn
http://GtEZYrdq.jpjxb.cn
http://UpEHahkT.jpjxb.cn
http://IFNPDaaD.jpjxb.cn
http://CMQ5cvRi.jpjxb.cn
http://EEL975E3.jpjxb.cn
http://WycddarX.jpjxb.cn
http://DIKMrfpH.jpjxb.cn
http://sSKbgino.jpjxb.cn
http://P7SJJz40.jpjxb.cn
http://XRjNtUif.jpjxb.cn
http://9XLunHp2.jpjxb.cn
http://JS4hOJl4.jpjxb.cn
http://DBHVE4PQ.jpjxb.cn
http://www.dtcms.com/a/372338.html

相关文章:

  • JMeter介绍以及使用详解
  • 一个Java的main方法在JVM中的执行流程
  • whl编译命令使用场景举例
  • 【Leetcode】高频SQL基础题--1164.指定日期的产品价格
  • 力扣1210. 穿过迷宫的最少移动次数 详解
  • Redis 从入门到精通:全平台安装与性能优化配置指南
  • RestClient查询和数据聚合
  • 前后端中的回调机制:含义、作用与实现详解
  • 四、神经网络的学习(下)
  • 万字详解网络编程之socket
  • PNG和JPEG和BMP文件格式转换
  • 语音之战+通用大模型,AI霸权决战打响
  • eslint 和 prettier 的相同点和区别
  • 苹果 FoundationModels 秘典侠客行:隐私为先的端侧 AI 江湖
  • hot100链表类题目
  • 算法:链表
  • Vscode中开发VUE项目的调试方案
  • Lua > OpenResty HelloWorld
  • FreeRTOS项目(2)摇杆按键检测
  • 《一往无前:雷军亲述小米热血 10 年》(上部)读书笔记
  • 线性代数 | 行图像 / 列图像
  • 【PCIe EP 设备入门学习专栏 -- 8.2.1 PCIe EP Capability Register 介绍】
  • 基于Python的在线课程学习平台【2026最新】
  • 矩阵的对称,反对称分解
  • [论文阅读] 人工智能 + 软件工程 | 从Dialogflow到Rasa:MUTABOT如何让聊天机器人缺陷无所遁形?
  • 视频软件 SMPLAYER
  • AutoGPT实战体验:AI自动任务工具如何高效完成深度调研?避坑技巧分享
  • tcp粘包产生的根源
  • JavaScript 结构型模式详解
  • Cursor 提示词探索——如何打造真正懂自己的Agent