配置GDAL及使用CPP调用GDAL
配置GDAL及使用CPP调用GDAL
ytkz配置GDAL
首先打开Visual Studio 2019,新建控制台工程,名字叫做“简单调用GDAL”。
右击工程,找到“属性”
把GDAL的include文件夹填写到“附加包含目录”中,如下图。
把GDAL的lib文件夹填写到“附加库目录”中,如下图。
简单调用GDAL
GDAL封装了很多类、函数接口,我们要去学习怎么调用它们。
# include "gdal_priv.h"
using namespace std;
#include <iostream>
int main()
{
printf("strat!\n");
//注册文件格式
GDALAllRegister();
const char* file = "D:\\hh1.tif";
GDALDataset *ds = (GDALDataset*) GDALOpen (file, GA_ReadOnly);
//A* p则使用:p->play(); 左边是结构指针。
//A p 则使用:p.paly(); 左边是结构变量。
int Xsize = ds->GetRasterXSize();
int Ysize = ds->GetRasterYSize();
printf("Xsize =%d\n" , Xsize);
printf("影像长为%d,宽为%d\n", ds->GetRasterXSize(), ds->GetRasterYSize());
//读取影像第一波段
GDALRasterBand* band = ds->GetRasterBand(1);
int min,max;
double minmax[2];
//char a;
//a = &min;
minmax[0] = band->GetMinimum(&min);
minmax[1] = band->GetMaximum(&max);
printf("\n最小值是:%fd\n最大值是%f\n", minmax[0],minmax[1]);
int nXsize = band->GetXSize();
float *pafScanline = new float[Xsize *Ysize];
band->RasterIO(GF_Read, 0, 0, Xsize, Ysize, pafScanline, Xsize, Ysize, GDT_Float32, 0, 0); //pafScanline是影像矩阵
// 循环打印影像矩阵的每一个数值
int num_iamge_size = 0;
for (int i = 0; i < Xsize; i++)
{
for (int j = 0; j < Ysize; j++)
{
num_iamge_size++;
//if (i<10 && j < 10)
cout << pafScanline[i * Ysize + j] << endl;
}
//cout << i << "---" << pafScanline[i*nImgSizeY] << endl;
}
printf("ok");
}
小结
CPP是挺难的,不过学习这件事本来就是要坚持!