GDAL是遥感数据的IO处理库,可以读写erdas img、GeoTiff等多种文件格式。 本文根据原来的文件重新设置仿射变换系数后,保存文件。
double* pRgToGeoAffPara; //"待纠正图像"到"地理坐标"的仿射变换系数
//建立保存对话框,获得要保存的文件名
char* szFilter = "erdas img Files(*.img)|*.img||";
CFileDialog dlg(FALSE,NULL,TEXT("temp.img"),NULL,szFilter,NULL);
CString strSaveName = dlg.GetPathName();
if(dlg.DoModal() == IDOK)
{
//打开原始待纠正图像
GDALAllRegister();
GDALDataset* poDataset;
poDataset = (GDALDataset *) GDALOpen(strRegNmae , GA_ReadOnly );
if( !poDataset == NULL )
{
//adfGeoTransform[0] /* top left x */
//adfGeoTransform[1] /* w-e pixel resolution */
//adfGeoTransform[2] /* rotation, 0 if image is "north up" */
//adfGeoTransform[3] /* top left y */
//adfGeoTransform[4] /* rotation, 0 if image is "north up" */
//adfGeoTransform[5] /* n-s pixel resolution */
//创建输出图像文件
GDALDriver *poDriver;
poDriver = poDataset->GetDriver();
if( poDriver == NULL )
return;
GDALDataset *poDstDS;
poDstDS = poDriver->CreateCopy(strSaveName, poDataset, FALSE, NULL, NULL, NULL );
//设置输出图像到地理坐标的仿射变换系数
poDstDS->SetGeoTransform(pRgToGeoAffPara);
if( poDstDS != NULL )
delete poDstDS;
AfxMessageBox("纠正图像保存完毕!");
}
if(poDataset != NULL)
delete poDataset;
}