GDAL通过RasterIO读写图像文件,数据集的创建,图像相关信息的获取

首先创建数据集

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:"GetRasterBand(1); cout<<"BandXSize:"【GDAL通过RasterIO读写图像文件,数据集的创建,图像相关信息的获取】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); //图像储存方式doubleGeoTransform[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);


    推荐阅读