仿射地理变换
GDAL数据集有两种方式表示栅格数据中像元位置(图像中某个点在影像中的行列号)和投影坐标系(不是经纬度,是投影到二维平面的地图坐标,二者可以通过地图投影进行相互转换)间的关系:仿射变换和GCP点。大部分数据都是用仿射变换描述的,本节中描述仿射变换。
仿射变换由六个参数实现, GDALDataset::GetGeoTransform() 可以获取仿射变换参数数组。将像元位置转换为投影坐标的公式如下:
/*
六个参数分别是:
geos[0] top left x 左上角x坐标
geos[1] w-e pixel resolution 东西方向像素分辨率
geos[2] rotation, 0 if image is "north up" 旋转角度,正北向上时为0
geos[3] top left y 左上角y坐标
geos[4] rotation, 0 if image is "north up" 旋转角度,正北向上时为0
geos[5] n-s pixel resolution 南北向像素分辨率
x/y为图像的x/y坐标,geox/geoy为对应的投影坐标
*/
geox = geos[0] + geos[1] * x + geos[2] * y;
geoy = geos[3] + geos[4] * x + geos[5] * y
注意,上面所说的点/线坐标系是从左上角(0,0)点到右下角,也就是坐标轴从左到右增长,从上到下增长的坐标系(即影象的行列从左下角开始计算)。 点/线位置中心是(0.5,0.5)