整理遥感影像处理中所需要GDAL的API

  1. void GDALAllRegister(void)

    注册所有已知的GDAL驱动器(Driver)。在程序开头使用即可。

  2. GDALDriver *GetDriverByName(const char*)

    通过名字搜索得到对应的Driver

    通常会这样使用来创建一个GTiffDriver

    1
    GDALDriver* poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");
  3. GDALDatasetH GDALOpen(const char *pszFilename, GDALAccess eAccess)

    通过某种读写模式(实验中通常是只读GA_ReadOnly)打开一个图片,并将数据以GDALDataset类存储。

    1
    GDALDataset* data = (GDALDataset*)GDALOpen(filePath, GA_ReadOnly);
  4. GDALRasterBand *GetRasterBand(int)

    实验中,通常用作从Dataset中获取对应条带数的数据,以GDALRasterBand类存储。

    1
    GDALRasterBand* band = data->GetRasterBand(1);
  5. int GetRasterXSize()/int GetRasterYSize()

    获取该栅格图像的X/Y像素数

    1
    2
    int xSize = band->GetRasterXSize();
    int ySize = band->GetRasterYSize();
  6. CPLErr RasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, int, int*, GSpacing, GSpacing, GSpacing, GDALRasterIOExtraArg *psExtraArg)

    用于对对应条带数据进行IO操作,可读可写。

    读:

    1
    2
    3
    4
    5
    6
    band->RasterIO(GF_Read, 0, 0, 1, 1, data, 1, 1, GDT_Float64, 0, 0);
    //(0,0):偏移量
    //(1,1):数据的大小
    //data: 数据存储地址
    //(1,1):数组的大小
    //GDT_Float64:数据格式

    写:

    1
    band->RasterIO(GF_Write, 0, 0, 1, 1, data, 1, 1, GDT_Float64, 0, 0);
  7. void GDALClose(GDALDatasetH)

    用于程序结束时,关闭打开的图像。