利用GDAL读取获取影像任一点坐标,并可对该点坐标进行坐标转换,如投影坐标转换为地理坐标,UTM转WGS84
GDALAllRegister();
GDALDataset *poDataset;
char *fileName = "D:\\1.tif";
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
poDataset = (GDALDataset *)GDALOpen(fileName, GA_ReadOnly);
if (poDataset == NULL)
{
cout << "fail in open files!!!" << endl;
return 0;
}
int imageWidth = poDataset->GetRasterXSize();
int imageHeight = poDataset->GetRasterYSize();
int bandcount = poDataset->GetRasterCount();
double adfGeoTransform[6];
CPLErr aaa = poDataset->GetGeoTransform(adfGeoTransform);
const char* PrjRef = poDataset->GetProjectionRef();
OGRSpatialReference projSRS;
projSRS.importFromWkt(&PrjRef);
double CenterX = 0.0;
double CenterY = 0.0;
if (projSRS.IsGeographic())
{
CenterX = adfGeoTransform[0] + imageWidth * 0.5 * adfGeoTransform[1] + imageWidth * 0.5 * adfGeoTransform[2];
CenterY = adfGeoTransform[3] + imageHeight * 0.5 * adfGeoTransform[4] + imageHeight * 0.5 * adfGeoTransform[5];
}
else if(projSRS.IsProjected())
{
CenterX = adfGeoTransform[0] + imageWidth * 0.5 * adfGeoTransform[1] + imageWidth * 0.5 * adfGeoTransform[2];
CenterY = adfGeoTransform[3] + imageHeight * 0.5 * adfGeoTransform[4] + imageHeight * 0.5 * adfGeoTransform[5];
OGRSpatialReference geoSRS;
geoSRS = *projSRS.CloneGeogCS();
OGRCoordinateTransformation *coord = OGRCreateCoordinateTransformation(&projSRS, &geoSRS);
coord->Transform(1, &CenterX , &CenterY);
}
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");