1 LL2XY函数
bool LL2XY(double lon, double lat, double *dRgGeoTrans, float& i, float& j)
{
double dTemp = dRgGeoTrans[1] * dRgGeoTrans[5] - dRgGeoTrans[2] * dRgGeoTrans[4];
j = (dRgGeoTrans[5] * (lon - dRgGeoTrans[0]) - dRgGeoTrans[2] * (lat - dRgGeoTrans[3])) / dTemp;
i = (dRgGeoTrans[1] * (lat - dRgGeoTrans[3]) - dRgGeoTrans[4] * (lon - dRgGeoTrans[0])) / dTemp;
return true;
}
2 获取参数
double *dRgGeoTrans
通过 bool getImageInfo(const char* path, int& nBandnum, int& nImgWidth, int& nImgHeight, double *dGeoTrans)
函数获取。
double *dRgGeoTrans = new double [6];
getImageInfo(roughnessPath, nRgBandnum, nRgWidth, nRgHeight, dRgGeoTrans);
3 getImageInfo函数
bool getImageInfo(const char* path, int& nBandnum, int& nImgWidth, int& nImgHeight, double *dGeoTrans)
{
GDALAllRegister();
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");
CPLSetConfigOption("USE_RRD","YES");
GDALDataset * poDataset = (GDALDataset *) GDALOpen(path, GA_ReadOnly);
if(poDataset == NULL)
{
printf("open file fail.\n");
return false;
}
nImgWidth = poDataset -> GetRasterXSize();
nImgHeight = poDataset -> GetRasterYSize();
nBandnum = poDataset -> GetRasterCount();
poDataset -> GetGeoTransform(dGeoTrans);
GDALClose(poDataset);
return true;
}