【VC++开源代码栏目提醒】:网学会员VC++开源代码为您提供GDAL使用方法VC+C# - 图形图像参考,解决您在GDAL使用方法VC+C# - 图形图像学习中工作中的难题,参考学习。
GDAL栅格图像操作 GDAL是一个操作各种栅格和矢量由ogr这个库实现地理数据格式的
开源库。
包括读取、写入、转换、处理各种栅格和矢量数据格式有些特定的格式对一些操作如写入等不支持。
即使不是进行地理遥感方面的应用研究GDAL也是一个非常有用的库因为它可以支持大量我们常见的图像数据比如jpggif之类的。
完整的格式清单可以到此链接查看http://www.gdal.org/formats_list.html。
而且已经有包括GoogleEarth在内的很多
软件都是在使用GDAL作为后台库。
本文就以
VC为开发平台介绍GDAL对栅格数据的操作方法。
Include目录是开发中需要的头文件lib中是所需要的lib文件在
VC8中应当将其存放目录添加到目录
列表中选择菜单的“工具-选项-项目和解决
方案-
VC目录”分别在“包含文件”和“库文件”中将此两个目录添加进去。
在项目的属性页中选择“配置属性-链接器-输入”在“附加依赖项”中添加gdal_i-
vc8.lib和gdal_id-
vc8.lib两个使用GDAL中需要的静态库文件或者在程序中添加以下两行
代码也可以。
pragma commentlib gdal_i-
vc8.lib pragma commentlib gdal_id-
vc8.lib Bin目录下的动态链接库文件应当放置于程序能够访问的位置比如windowssystem32中。
此外在
程序中需要引入的头文件是gdal_priv.h。
现在开始用C来对图像文件进行操作。
在打开文件之前需要首先注册所需要的驱动程序一般来说我们可以默认
注册所有支持的格式驱动所使用的函数是GDALAllRegister。
然后就是打开文件操作。
这里要说一个数据集的概念也就是所谓的Dataset。
在GDAL中可以说数据的核心就是Dataset简单来说可以将Dataset就理解为图像文件比如说一个jpeg格式的文件就是一个数据集当然其他一些文件格式可能在一个数据集中包含多于一个文件比如可能除了图像数据文件外还可能会有一些附加信息文件等。
在数据集下最重要组成部分就是所谓的波段band波段可多可少比如一个RGB真彩色的图像就有3个波段分别代表红色绿色和蓝色波段如果是灰度图那可能就只有一个波段而很多遥感图像可能就会多于3个波段。
除了波段外数据集中还含有图像相关的坐标系投影信息元数据信息等数据。
文件的打开使用的是GDALOpen const char pszFilename GDALAccess eAccess pszFilename是文件路径eAccess 是访问权限可以是GA_ReadOnly只读也可以是GA_Update来对文件进行修改。
比如我们以只读模式打开一个tif文件 GDALDataset poDataset //数据集对象指针 GDALAllRegister//注册驱动 poDataset GDALDataset GDALOpen c:terra335h_EV_250_Aggr500_RefSB_b0.tif GA_ReadOnly if poDataset NULL /检查是否正常打开文件/ //do something delete poDataset //释放资源 在确认poDataset不是NULL的情况下就可以对图像数据集进行操作了。
首先来看一下有关这个图像的基本信息比如长宽和波段数。
cout