nager() -> GetDriverByName("GTIFF");
GDALDataset * OPTemp;
OPTemp = podrive ->Create(outFpath,X,Y,1,Band->GetRasterDataType(),NULL);
GDALRasterBand * TPband ;
TPband = OPTemp ->GetRasterBand(1);
TPband -> RasterIO( GF_Write, 0,0,X,Y,bandvalue,X,Y,Band->GetRasterDataType(),0,0);
GDALClose(OPTemp);
delete []bandvalue;
bandvalue = NULL;
GDALClose(OPTemp);
break;
}
case (GDT_UInt16):
{unsigned short* bandvalue = new unsigned short[X * Y];
Band -> RasterIO( GF_Read, 0,0,X,Y,bandvalue,X,Y,Band->GetRasterDataType(),0,0);
GDALDriver * podrive;
podrive = GetGDALDriverManager() -> GetDriverByName("GTIFF");
GDALDataset * OPTemp;
OPTemp = podrive ->Create(outFpath,X,Y,1,Band->GetRasterDataType(),NULL);
GDALRasterBand * TPband ;
TPband = OPTemp ->GetRasterBand(1);
TPband -> RasterIO( GF_Write, 0,0,X,Y,bandvalue,X,Y,Band->GetRasterDataType(),0,0);
GDALClose(OPTemp);
delete []bandvalue;
bandvalue = NULL;
break;
}
default:
{break;}
}
GDALClose((GDALDriver * )DataSet);
break;
}
}
GDALClose((GDALDriverH)pDataSet);
return 0;
}
gdal 读取grb2格式
const int blockSize = 200;
template <typename T>
void BlockImgConvertProcess( int lblockXSize,int lblockYSize, int blockSize,int bandIndex,
int j,int k,GDALRasterBand* poBand,GDALRasterBand* poBand_img)
{
T *ppdata = new T[lblockXSize * lblockYSize];
poBand->RasterIO( GF_Read, j * blockSize, k * blockSize, lblockXSize, lblockYSize,
ppdata, lblockXSize, lblockYSize, poBand->GetRasterDataType(),
0, 0 );
poBand_img -> RasterIO ( GF_Write, j * blockSize, k * blockSize, lblockXSize, lblockYSize,
ppdata,lblockXSize, lblockYSize, poBand_img->GetRasterDataType(), 0, 0);
delete[] ppdata;
ppdata = NULL;
}
bool GRBToImg(const char* pchTifPath, const char* pchImgPath)
{
string strTifPath = pchTifPath;
string strTifExt = strTifPath.substr(strTifPath.rfind('.') + 1, strTifPath.length());
string strImgPath = pchImgPath;
string strImgExt = strImgPath.substr(strImgPath.rfind('.') + 1, strImgPath.length());
transform(strTifExt.begin(),strTifExt.end(),strTifExt.begin(), ::toupper);
transform(strImgExt.begin(),strImgExt.end(),strImgExt.begin(), ::toupper);
if(strTifExt != "GRB2" || strImgExt != "TIF")
return false;
GDALDataset *poDataset;
//打开图像
poDataset = (GDALDataset *)GDALOpen( pchTifPath, GA_ReadOnly );
if( poDataset == NULL )
{
return false;
}
//打开图像
//获取图像信息
double adfGeoTransform[6];
double *maomao = new double[6];
long lWidth = poDataset->GetRasterXSize();
long lHeight = poDataset->GetRasterYSize();
long lBandCount = poDataset->GetRasterCount();
const char* chWkt = poDataset->GetProjectionRef();
poDataset->GetGeoTransform( adfGeoTransform );
//获取图像信息
vector<string> bandscrip;