c++ gdal柵格數(shù)據(jù)的讀寫(xiě)方法

c++
小樊
83
2024-08-15 15:15:43

在C++中使用GDAL庫(kù)來(lái)讀寫(xiě)柵格數(shù)據(jù),可以按照以下步驟進(jìn)行:

  1. 引入GDAL庫(kù)頭文件
#include "gdal/gdal.h"
  1. 初始化GDAL庫(kù)
GDALAllRegister();
  1. 打開(kāi)柵格數(shù)據(jù)集
GDALDataset *poDataset = (GDALDataset *)GDALOpen("path/to/raster.tif", GA_ReadOnly);
if(poDataset == NULL) {
    // 處理打開(kāi)失敗的情況
}
  1. 獲取柵格數(shù)據(jù)集的信息
int nXSize = poDataset->GetRasterXSize();
int nYSize = poDataset->GetRasterYSize();
int nBands = poDataset->GetRasterCount();
GDALRasterBand *poBand = poDataset->GetRasterBand(1);
GDALDataType eType = poBand->GetRasterDataType();
  1. 讀取柵格數(shù)據(jù)
int nXOff = 0, nYOff = 0, nXSize = 100, nYSize = 100; // 讀取的區(qū)域大小
int *pData = new int[nXSize * nYSize];
poBand->RasterIO(GF_Read, nXOff, nYOff, nXSize, nYSize, pData, nXSize, nYSize, eType, 0, 0);
  1. 寫(xiě)入柵格數(shù)據(jù)
int *pData = new int[nXSize * nYSize]; // 要寫(xiě)入的數(shù)據(jù)
poBand->RasterIO(GF_Write, nXOff, nYOff, nXSize, nYSize, pData, nXSize, nYSize, eType, 0, 0);
  1. 關(guān)閉數(shù)據(jù)集
GDALClose(poDataset);

以上是使用GDAL庫(kù)讀寫(xiě)柵格數(shù)據(jù)的基本步驟,開(kāi)發(fā)者可以根據(jù)具體需求進(jìn)行定制化操作。

0