地理栅格(遥感影像、DEM、扫描图等)的仿射变换系数文件解析

        地理栅格(遥感影像、DEM、扫描图等)式GIS一个重要的数据源,每天都有大量的栅格数据产生,但是图像本身是只有记录图像本身的信息,如果要和实际地理坐标建立关联,就必须制定仿射变换的系数。何谓仿射变换,这是使用的最多的一种几何纠正方式。在保留平行条件下,仿射变换允许对长方形目标做旋转、平移和不均匀缩放等。仿射变换数学表达式为:

x'=Ax+By+C
y'=Dx+Ey+F

其中:

          x'=象素对应的地理X坐标

          y'=象素对应的地理Y坐标

          x=象素坐标【列号】

     y=象素坐标【行号】

     A=X方向上的象素分辨率

     D、B=旋转系统

     E=Y方向上的象素分辨素

     C=栅格地图左上角象素中心X坐标

     F=栅格地图左上角象素中心Y坐标

关键是如何求取这六个系数,一般最常用的方法是采用控制点(一般来说多余4个),通过最小二乘法来求得系数,这样我们就可以完成影像坐标到实际坐标的转换,常见的TIFF格式的变换系数文件的后缀名是tfw,实际上是一个文本文件,下面是一个实际的例子:

0.0000025009

0.0000000000

0.0000000000

-0.0000025009

111.8439114689

29.6483755683

 

具体解释如下,第一个数0.0000025009代表X方向的像素分辨率,就是一个像素代表的实际距离;

第二和第三个数0.0000000000代表旋转系数;

第四个数是-0.0000025009代表Y方向上的像素分辨率;

第五个数111.8439114689代表栅格左上角像素中心X坐标

第六个数29.6483755683代表栅格左上角像素中心Y坐标

 

当然,有的文件里面并不是分为六行,这需要自己去识别,再分为六行就可以看得清楚了

 在GDAL中,可以用代码获得这六个系数:

//获得仿射变换的系数
double adfGeoTransform[6];
poDataset->GetGeoTransform( adfGeoTransform );

上面只是简单的说明了一下,有什么补充的,等以后弄懂了再说
adfGeoTransform[0]图像左上角X地理坐标

adfGeoTransform[1] X方向也就是横向的分辨率大小

adfGeoTransform[2] 旋转系数,如果为0,就是标准的正北向图像

adfGeoTransform[3] 图像左上角Y地理坐标

 adfGeoTransform[4] 旋转系数,如果为0,就是标准的正北向图像

adfGeoTransform[5] Y方向也就是纵向的分辨率大小

 

通过这六个参数就能很容易的计算出图像上每一个像素的地理坐标,当然也很容易根据地理坐标计算像素坐标。

你可能感兴趣的:(c,tiff)