Qt5.0调用GDAL库函数

关于在Qt5.0中使用GDAL库和函数调用的总结

 

添加库函数的方式可以参考5.0的帮助文档的关于LIBS的部分只要添加了路径就可以了。正如如下的文章所描述的:http://m.blog.youkuaiyun.com/blog/u010741715/12649225

 

如果在工程中直接添加的话右击工程文件选择---添加库---外部库---默认在当前的工程目录下添加,添加后的代码如下:

win32: LIBS += -L$$PWD/GDAL/lib/ -lgdal_i

INCLUDEPATH += $$PWD/GDAL/include

DEPENDPATH += $$PWD/GDAL/include

L表示路径,l表示库。

1.但是添加完库函数后有的库函数并不能直接调用到目前为止获得的原因是:

gdal_priv.h文件中定义的某些类的函数,并没有声明其其在动态链接库中的地址所以利用对象直接引用该函数会造成找不到该函数的定义的错误,这个错误真是好难发现呀!刚开始真是百思不得其解。gdal_priv.h中的GDALDataset

定义如下:

class CPL_DLL GDALDataset : public GDALMajorObject

### 使用C++中的GDAL库函数 为了在C++项目中使用GDAL库,开发者需要确保安装了必要的依赖项以及配置好开发环境。以下是关于如何使用GDAL库及其文档的一些指导。 #### 安装GDALGDAL是一个开源地理空间数据转换工具包,支持多种栅格和矢量格式的数据读写操作。要成功构建基于GDAL的应用程序,需满足以下条件: - GCC 4.4.x 或更高版本[^1]。 - CMake 2.8.7 或更新版本用于管理项目的构建过程。 - Git 可选,但如果需要从源码获取最新版GDAL,则Git是必需的。 - GTK+2.x 或更高级别的图形界面库(如果涉及GUI应用),包括头文件 `libgtk2.0-dev`。 - pkg-config 工具用来检测已安装软件包的信息并设置编译选项。 - Python 和 NumPy 的开发者包可选(仅当计划通过Python绑定访问GDAL API时才需要)。如果没有此需求,则无需安装这些组件。 - FFmpeg 或 libav 开发者包对于处理视频流或其他多媒体内容可能是有用的,但这不是核心功能的一部分。 #### 配置与初始化 一旦所有先决条件都到位,在实际编码之前还需要完成几个步骤来准备GDAL环境: ```cpp #include <gdal.h> int main() { // 初始化GDAL驱动器 GDALAllRegister(); const char* pszFilename = "/path/to/your/rasterfile.tif"; GDALDatasetH hDataset; hDataset = GDALOpen(pszFilename, GA_ReadOnly); if(hDataset == nullptr){ printf("无法打开文件 %s\n", pszFilename); exit(1); } int nXSize = GDALGetRasterXSize(hDataset); int nYSize = GDALGetRasterYSize(hDataset); printf("图像尺寸:%dx%d\n", nXSize, nYSize); GDALClose(hDataset); } ``` 上述代码展示了基本的操作流程:注册所有的GDAL驱动、加载影像数据集、查询基本信息最后关闭资源释放内存[^2]。 #### 常见API说明 下面列举了一些常用的GDAL类及相关方法简介: | 类名 | 描述 | |--|--| | **GDALDriverManager** | 负责管理和创建不同类型的GDALDrivers实例对象。可以通过它获得特定格式的支持情况。 | | **GDALDriver** | 表示一种具体的文件格式对应的driver实现。提供Create(), CreateCopy()等功能接口。 | | **GDALDataset** | 数据集合抽象基类,代表整个输入输出单元比如单个遥感图片或者一组关联层叠图层。 | 具体到某些成员函数上来说有以下几个重要概念值得特别关注: - `GDALAllRegister()` : 注册全部可用drivers以便后续能够识别各种可能遇到的空间数据形式; - `GDALOpen(const char *pszName, GDALAccess eAccess)` : 打开指定路径下的dataset供进一步分析利用; - `GDALGetRasterBand(GDALDatasetH hDS, int iBand)` : 获取某一层的具体波段信息作为单独实体对待; 更多详细的资料可以查阅官方发布的HTML帮助手册或者是在线参考资料链接地址[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值