GDAL入门篇——GDAL环境配置(一)

下一篇:GDAL入门篇——GDAL源码文件结构简单介绍(二)

目录

一.GDAL介绍

1.1简介

1.2 GDAL的下载与安装

二.GDAL环境配置

2.1环境配置

2.2 环境测试


一.GDAL介绍

1.1简介

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。因此GDAL可以提供对栅格和矢量数据的转换。

1.2 GDAL的下载与安装

GDAL下载网址:GDAL下载    网址:http://download.osgeo.org/gdal

选择自己所要使用的版本进行下载,下载后进行编译,编译方法可以参考我的另外一篇博文:Cmake在Windows下的使用(附图文)

根据自己的环境和需要的版本尽心编译完成会生成我们所需要的GDAL库,如图所示:

GDAL入门篇——GDAL环境配置(一)_第1张图片

GDAL入门篇——GDAL环境配置(一)_第2张图片

这是我编译生成的windows下64库,大家可自行下载进行学习:GDAL204 x64库

二.GDAL环境配置

2.1环境配置

首先我们检查我们生成的库文件对不对,如图所示我们需要编译生成的头文件Include,静态库lib,动态链接库dll和其他一些依赖的三方库

Include:

GDAL入门篇——GDAL环境配置(一)_第3张图片

lib:

dll:

GDAL入门篇——GDAL环境配置(一)_第4张图片

然后在我们的编译器中进行环境配置,我所使用的是VS2015,首先新建一个工程文件,工程右键属性分别对头文件,库路径,依赖的库进行环境配置,配置好之后我们进行简单的测试。

2.2 环境测试

我们通过读取写入tiff数据进行简单测试

例子代码如下:

        //注册
	GDALAllRegister();
	//以防中文名不能正常读取
	CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");

	//tif文件读取
	std::string name = "global.tif";
	const char *charName = name.c_str();
	GDALDataset *m_pDataset = (GDALDataset*)GDALOpen(charName, GA_ReadOnly);

	if (m_pDataset == NULL)
	{
		return;
	}
	int Width = m_pDataset->GetRasterXSize(); //获取图像宽
	int Height = m_pDataset->GetRasterYSize(); //获取图像高
	int Count = m_pDataset->GetRasterCount(); //波段数

	
	GDALRasterBand  *pInRasterBand1 = m_pDataset->GetRasterBand(1);
	GDALRasterBand  *pInRasterBand2 = m_pDataset->GetRasterBand(2);
	GDALRasterBand  *pInRasterBand3 = m_pDataset->GetRasterBand(3);
	float *inBuf1;
	inBuf1 = new float[Width*Height];
	CPLErr err;

	float *inBuf2;
	inBuf2 = new float[Width*Height];
	

	float *inBuf3;
	inBuf3 = new float[Width*Height];
	
	//获取三个波段值
	err = pInRasterBand1->RasterIO(GF_Read, 0, 0, Width, Height, inBuf1, Width, Height, GDT_Float32, 0, 0);
	err = pInRasterBand1->RasterIO(GF_Read, 0, 0, Width, Height, inBuf2, Width, Height, GDT_Float32, 0, 0);
	err = pInRasterBand1->RasterIO(GF_Read, 0, 0, Width, Height, inBuf3, Width, Height, GDT_Float32, 0, 0);

	//创建输出图像、写图像
	char* outPath("E:/globa2.tif");
	GDALDriver *poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");
	
	char* OutFilename = outPath;

	//创建三波段tiff
	GDALDataset* pOutDataset = poDriver->Create(OutFilename, Width, Height, 3, GDT_Float32, NULL);
	
	GDALRasterBand* pOutRasterBand1 = pOutDataset->GetRasterBand(1);
	GDALRasterBand* pOutRasterBand2 = pOutDataset->GetRasterBand(2);
	GDALRasterBand* pOutRasterBand3 = pOutDataset->GetRasterBand(3);

	//写入数据
	err = pOutRasterBand1->RasterIO(GF_Write, 0, 0, Width, Height, inBuf1, Width, Height, GDT_Float32, 0, 0);
	err = pOutRasterBand2->RasterIO(GF_Write, 0, 0, Width, Height, inBuf2, Width, Height, GDT_Float32, 0, 0);
	err = pOutRasterBand3->RasterIO(GF_Write, 0, 0, Width, Height, inBuf3, Width, Height, GDT_Float32, 0, 0);
	
	//关闭波段和驱动
	GDALClose(m_pDataset);
	GDALClose(pOutDataset);
	GetGDALDriverManager()->DeregisterDriver(poDriver);
	GDALDestroyDriverManager();

生成的数据显示如下:

GDAL入门篇——GDAL环境配置(一)_第5张图片

至此,我们的GDAL环境搭建完成,其他版本环境配置与此类似。

你可能感兴趣的:(GDAL,c++,gdal)