一、仿射变换(Affine GeoTransform)有六个参数,描述的是栅格行列号和地理坐标之间的关系。
在GDAL中可以通过函数GDALDataset::GetGeoTransform()函数获得,存放在一个double类型的数组里面。
每个元素下标都代表着不同的含义:
- 0:图像左上角的X坐标;
- 1:图像东西方向分辨率;
- 2:旋转角度,如果图像北方朝上,该值为0;
- 3:图像左上角的Y坐标;
- 4:旋转角度,如果图像北方朝上,该值为0;
- 5:图像南北方向分辨率;
二、基于遥感影像具有的特点,这六个参数可以描述遥感影像起点坐标、分辨率、旋转角度。
以C++实现代码为例:
GDALAllRegister();
GDALDataset *pSrcDS = (GDALDataset*)GDALOpen("源数据的路径", GA_ReadOnly);
double GeoTransform[6] = {0};//初始化
pSrcDS->GetGeoTransform(GeoTransform);
//这样就得到了读取数据的仿射变换参数,并且已经放入了GeoTransform数组中。
GeoTransform[0]和GeoTransform[3]代表图像左上角坐标(地理坐标)
GeoTransform[1]和GeoTransform[5];代表影像分辨率(东西方向为正,南北方向为负)
GeoTransform[2]和GeoTransform[4];一般值都是0
三、得到这六个参数之后就可以进行图像行列号和地理坐标之间的变换,变换关系如下:
Xgeo = GeoTransform[0] + Xpixel*GeoTransform[1] + Ypixel*GeoTransform[2]
Ygeo = GeoTransform[3] + Xpixel*GeoTransform[4] + Ypixel*GeoTransform[5]
这样就能得到图像任一点的地理坐标了。