背景前提

  地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布。 作为一个库,它为调用应用程序提供了一个抽象数据模型,用于所有支持的格式。 它还可以构建有各种有用的命令行接口实用程序,用于数据转换和处理。 PROJ.4库支持投影和转换。(摘自维基百科)

  相关的OGR库(OGR Simple Features Library [2])是GDAL源代码树的一部分,它为简单的特征矢量图形数据提供了类似的功能。(摘自维基百科)

  GDAL库在使用前可以进行源码编译,编译环境由用户所要进行后期的开发环境所决定,一般情况下,Windows系统下和Linux系统下所编译出来的GDAL库文件是不一样的,不仅如此,对于C++语言来说,不同编译器下的编译出来的GDAL库文件也是不一样的,例如QT所采用的MinGW编译器和VS的MSVC编译器所编译出来Windows系统下的GDAL库文件不通用(本人亲测,确实如此),所以不同的开发环境,不同的开发平台(IDE),不同的编译器,这都会影响前期的GDAL库源码的编译,再加上GDAL库本身又支持多种扩展库,以及多种语言下的二次编译,不同的用户有不同的扩展需求,所以针对GDAL库的复杂需求,配置不同的编译环境,编译出来的GDAL库文件也是各式各样,这可能也是开源地理空间基金会的GDAL / OGR项目管理委员会之所以进行开源的原因。

适用环境(开发)

  这里主要介绍前期随笔中所提到的基于GDAL库所适用的开发环境,以及是如何使用的,当然这里只是做一下简要的总结,至于具体的函数使用,以及库文件的编译,推荐大家可以去买一本李民录老师的《GDAL库源码剖析与开发指南》(说明:不是打广告,我也没收李老师一分钱,这里只是出于对初学者的一个建议)。

  本文GDAL库所采用的是QT软件平台下的MSVC 2017 x64编译器进行编译,编译出来的库文件也只能用于Windows系统下QT(MSVC)软件平台进行开发。编译过程中为了支持.nc等NetCDF类型文件的读取与写入,以及包括高斯投影在内的大部分投影功能,特地加入了netCDF(4.6.2)和proj4(4.9.3)库文件进行联合编译,编译出来以后经过测试,可以正常使用。

使用方法

  这里只介绍基于Qt软件下MSVC编译器进行GDAL库使用环境的配置。编译后的文件主要有三个:GDAL232、netCDF_462、proj493

  每一个文件夹内部都包含各自库本身所具有的bin文件、include文件、lib文件,bin文件主要是Windows程序运行时与系统进行交互的运行环境文件,lib是程序进行编译时的库文件,include文件是编写时的声明文件。下面主要说一下如何进行配置。

  首先进行系统环境变量的配置,环境变量的配置方法自行百度,只不过内容不一样,配置的变量名称为系统环境下的Path变量(PS:很多人初学者曾经问过我,为什么不在用户环境变量中的Path里面配置,这个我做一点解释,就是用户环境变量与系统环境变量的区别,用户环境变量里面的内容只有该用户登陆Windows系统进行使用时才有效,其他用户没有,但是系统环境变量就区别于这一点,它是所有用户都生效),具体配置结果如下:

  配置完环境变量完成以后进行测试一下,打开cmd命令行,输入gdalinfo命令,如果显示如下

  则说明配置成功,如果不是,则失败,检查相关错误。配置成功以后再进行编译环境的配置,打开Qt软件,新建Qt项目,右击项目名称,导入外部库文件,选择GDAL库lib文件夹中的.lib文件,选择完成后,如下图所示:

  点击确定以后,.pro文件中多处这几行文字表示添加成功,具体如下图所示:

  同样的步骤将netCDF库和proj4库同样添加进来,添加的lib文件分别是netcdf.lib,proj_i.lib和proj.lib三个文件。添加以后的内容如下:

  添加完成以后,即可进行代码的书写开发。具体开发步骤和内容参考上文所说的《GDAL库源码剖析与开发指南》一书,或者去查看李民录老师相关博文(博文主页:https://blog.csdn.net/liminlu0314)。

结束语

  本文主要是针对前期所发博文中所采用的库文件的前提介绍,也是对之前博文的补充说明,与此同时,为了扩大方便大家的使用,此处公开我之前项目文件中所使用的GDAL库文件,下载连接:https://files.cnblogs.com/files/thyou/GDAL.7z,希望对相关读者有一定的帮助。本文中所采用的GDAL库及扩展库所采用的源码均为官网最新版编译出来的,编译时间为2018年9月20日。

致谢

  从一开始的啥也不懂,编译库文件,到扩展其他语言版本,再到现在C++与Java语言下GDAL库的熟练使用,李老师以及相关的技术博主给予我分享了太多的经验知识,虽然学习的道路中充满荆棘,但是还是走过来了,这里要衷心的感谢你们,谢谢!

关于基于GDAL库QT软件平台下C++语言开发使用说明的更多相关文章

  1. 对于Linux平台下C语言开发中__sync_函数的认识

      reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built ...

  2. 对于Linux平台下C语言开发中__sync_函数的认识(转)

    reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built-i ...

  3. 基于GDAL库海洋表温日平均计算工具设计与实现 C++版

    技术背景 在对物理海洋数据处理过程中,表层温度是众多要素中的一种,本文书要是针对海洋表温数据批量日平均处理的一个工具设计.首先要在对当前的SST数据文件作一下简要的说明,SST全称为sea surfe ...

  4. 基于GDAL库,读取.grd文件(以海洋地形数据为例)C++版

    技术背景 海洋地形数据主要是通过美国全球地形起伏数据(GMT)获得,数据格式为grd(GSBG)二进制数据,打开软件通过是Surfer软件,surfer软件可进行数据的编辑处理,以及进一步的可视化表达 ...

  5. 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版

    对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...

  6. 基于GDAL库,读取海洋风场数据(.nc格式)c++版

    经过这一段时间的对海洋数据的处理,接触了大量的与海洋相关的数据,例如海洋地形.海洋表面温度.盐度.湿度.云场.风场等数据,除了地形数据是grd格式外,其他的都是nc格式的数据.本文将以海洋风场数据为例 ...

  7. 基于GDAL库,读取.grd文件(以海洋地形数据为例)Java版

    技术背景 海洋地形数据主要是通过美国全球地形起伏数据(GMT)获得,数据格式为grd(GSBG)二进制数据,打开软件通过是Surfer软件,surfer软件可进行数据的编辑处理,以及进一步的可视化表达 ...

  8. Python安装BeautifulSoup库(Windows平台下)

    简介 参照官网Beautiful Soup4.4.0文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 安装步骤 1.到https:// ...

  9. <2014 05 14> Android平台下2D/3D开发攻略

    Android通过OpenGL包含了对高性能2D和3D图形的支持,尤其支持OpenGLES API.OpenGL是一个跨平台的图形API,提供了软件操作3D图形硬件的接口.OpenGLES是一个专用于 ...

随机推荐

  1. kubernetes (k8s) CKA认证之第二课:亲和性与 Pod 的调度

    手动调度一个 pod // cat manual-schedule.yaml apiVersion: v1 kind: Pod metadata: labels: run: pod-manual-sc ...

  2. Go语言系列之单元测试

    go test工具 Go语言中的测试依赖go test命令.编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法.规则或工具. go test命令是一个按照一定约定和组织的测试代码的驱动 ...

  3. Maven插件开发教程

    Maven是一个一个优秀的项目管理开源框架,其插件机制为其功能扩展提供了非常大的便捷性.大多数情况下,我们不需要自己开发Maven插件,因为Maven本身提供了很多便捷的官方插件.但是对于某些特殊场景 ...

  4. [javaweb]strut2-001漏洞分析

    Strut2-001 漏洞描述 框架解析JSP页面标签时会对用户输入的Value值获取,在获取对应的Value值中递归解析%{.}造成了二次解析,最终触发表达式注入漏洞,执行任意代码 影响版本 2.0 ...

  5. i-Urban Renovation使用3D Tiles可视化鸟取县Munakata建筑状态

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 日本的鸟取县,使用i-Urban Renovation appl ...

  6. 基于World Wind的数据可视化插件

    基于开源数据可视化类库(MSChart.VTK.D3)实现的组件样例,并基于World Wind实现调用上述组件的功能插件. GitHub下载地址:https://github.com/hujiuli ...

  7. 淘系工程师讲解的使用Spring特性优雅书写业务代码

    使用Spring特性优雅书写业务代码   大家在日常业务开发工作中相信多多少少遇到过下面这样的几个场景: 当某一个特定事件或动作发生以后,需要执行很多联动动作,如果串行去执行的话太耗时,如果引入消息中 ...

  8. gin中间request body绑定到不同的结构体中

    1. 一般通过调用 c.Request.Body 方法绑定数据,但不能多次调用这个方法. package main import ( "fmt" "github.com/ ...

  9. Web播放器

    web视频播放器的使用及遇到的问题记录 TcPlayer播放器(腾讯Web超级播放器) https://cloud.tencent.com/document/product/881/20207 Ste ...

  10. 总是记不住但又总是要用的css

    有没有经常遇到一些样式每次写都要用百度呢?我收集了一些我平时经常要用到的但又总是记不住的样式.有错误的地方欢迎指正.转载请注明出处. 一.设置input 的placeholder的字体样式 input ...