首先创建数据集
GDALDataset *poDataset; //创建整个图像数据集
GDALRasterBand *poRasterBand; //创建单个波段数据集
GDALAllRegister(); //注册驱动
poDataset=(GDALDataset *)GDALOpen( //打开文件
"e:\\124036zuhe.tif" //文件路径
,GA_ReadOnly); //打开方式 包括GA_ReadOnly 和 GA_Update
if(poDataset!=NULL)
{
double adfGeoTransform[6];
cout<<"RasterXSize:"<GetRasterXSize()<GetRasterYSize()<GetRasterBand(1)<GetRasterCount()<GetProjectionRef()<GetGeoTransform(adfGeoTransform)<GetGCPCount()<GetGCPProjection()<GetGCPs()<GetRasterBand(1);
cout<<"BandXSize:"<GetXSize()<GetYSize()<GetRasterDataType())<GetColorInterpretation())<RasterIO(GF_Read //设置读写方式GF_Read和GF_Write
,3000,3000, //读取图像的起始位置X,Y
1000,1000, //要读取区域的大小,分别为X,Y方向
buff, //读入的缓冲区指针
1000,1000, //指定缓冲区大小
GDT_Float32, //读取图像的数据类型
3, //读取的波段数
num //读取的波段顺序指针
,0,0,0); //先不管
//读取图像到缓冲区
const char *pszFormat = "GTiff";
char *SavePath="D:\\3.tif";
poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat); //获取指定驱动类型
poDatasetCreate=poDriver->Create( //创建待写入文件的数据集
SavePath, //文件路径
1000,1000, //图像文件的大小
3, //图像的波段数
GDT_Float32 //图像数据类型
,NULL); //图像储存方式
double GeoTransform[6]={ 444720, 30, 0, 3751320, 0, -30 };
poDatasetCreate->RasterIO(GF_Write,0,0,1000,1000,buff,
1000,1000,GDT_Float32,3,num,0,0,0);
//设置图像坐标
poDatasetCreate->RasterIO( //缓冲区内容写入创建的数据集
GF_Write, //数据集打开方式
0,0, //写入的起始位置X,Y
1000,1000, //写入的数据大小X,Y
buff, //缓冲区指针
1000,1000, //缓冲区大小
GDT_Float32, //图像数据类型
3, //波段数目
num, //波段顺序
0,0,0);