GDAL仿射变换

一、仿射变换(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]

这样就能得到图像任一点的地理坐标了。

猜你喜欢

转载自blog.csdn.net/HB_Programmer/article/details/81741515