首先创建数据集
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);
推荐阅读
- 开源|开源切片工具--TileStache
- GeoServer的安装与启动
- 影像分割|GlobeLand30及相关土地覆盖产品
- GEE学习及应用|GEE学习笔记04(参数类型)
- 百度,高德,google地图显示级别的比较
- ArcEngine 9.3 学习笔记(十一)(地图输出(Printer类,PageLayoutControl控件打印出图,栅格格式文件输出,矢量格式文件输出)...)
- GIS|将几种北京建成区数据下载裁剪重分类后以供比较
- GIS Lab9 栅格计算器,叠加