我有这个代码将Geographic Projection设置为GeoTiff文件。
poDataset = (GDALDataset *) GDALOpen( fileName.c_str(), GA_Update);
OGRSpatialReference oSRS;
char *pszSRS_WKT = NULL;
oSRS.SetWellKnownGeogCS( "WGS84" );
oSRS.exportToWkt( &pszSRS_WKT );
oSRS.SetProjCS( pszSRS_WKT );
std::cout<<"Setted Proj: "<<pszSRS_WKT<<endl;
CPLErr err = poDataset->SetProjection( pszSRS_WKT );
std::cout<<"Proj Error: "<<err<<endl;
double adfGeoTransform[6];
CPLErr err2 = poDataset->GetGeoTransform( adfGeoTransform );
std::cout<<"Error: "<<err2<<endl;
std::string str = poDataset->GetProjectionRef();
std::cout<<"Retrieved Proj: "<<str<<endl;
结果是
Proj: GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,A
UTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM
["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHOR
ITY["EPSG","9108"]],AUTHORITY["EPSG","4326"]]**
Proj Error: 0
Error: 3
Retrieved Proj:
代码似乎合理,可能是这个错误的原因是什么?
先谢谢
答案 0 :(得分:0)
我解决了这个问题,当您设置投影时,您也应该分配新的GeoTransformation。 打电话
poDataset->SetGeoTransform(adfGeoTransform);
解决了我的问题。