IDL实现遥感数据的快速重投影(几何校正)- 以MODIS Swath产品为例
网上关于遥感数据的重投影资料其实已经很多了,比如基于GDAL的实现、基于ENVI GLT的实现、基于一些专用处理工具的实现(MCTK、VCTK、HEG、MRT)等。但实际上,IDL中本身提供了用于数据几何校正的一些函数,如poly_2d、warp_tri。这里主要介绍一种基于poly_2d函数的几何校正,特点是快速(类似于gdalwarp),校正精度相比GLT要低一些,但个人认为对于遥感数据的可视化而言,没有什么差别,毕竟最终目标就只是看一个空间趋势。如果真的要严格定量,可能GLT方法更好。
一、关于poly_2d
poly_2d实际上是基于多项式几何校正的一种函数实现,具体原理在很多讲遥感原理的书里都有,网上也有很多资料,这里就不再提了。poly_2d在IDL中的语法如下:
Result = POLY_2D( Array, P, Q [, Interp [, Dimx, Dimy]] [, CUBIC={
-1 to 0}] [, MISSING=value] [, PIXEL_CENTER=value])
其中:
Array是存储待校正数据的数组;
P和Q则是用于几何校正的多项式系数,一般是配合polywarp函数使用来获取;
interp是校正过程中使用的插值方法,0代表最近邻插值,1代表双线性插值,2代表三次卷积插值;
Dimx和Dimy分别代表输出图像的列数和行数;
MISSING代表在图像边界外的填充值,可自定义;
更多参数说明可直接查看IDL中关于poly_2d的详细说明。
上面提到了多项式系数需要用到polywarp函数:
POLYWARP, Xi, Yi, Xo, Yo, Degree, Kx, Ky [, /DOUBLE] [, STATUS=variable]
其中:
Xi和Yi,分别代表待校正图像中像元的列号和行号;
Xo和Yo,分别代表校正后图像像元的列号和行号;
Degree是拟合的自由度(理解不准确,存疑);
Kx和Ky,分别代表要求的拟合多项式系数;
更多参数说明可直接查看IDL中关于polywarp的详细说明。
从上面可看出,关键的点在于Xo和Yo怎么求。
二、Xo和Yo的求法
这里以MODIS的气溶胶产品为例,假设已经通过HDF读取函数读出了其中的经度数据(modis_lon_data)、纬度数据(modis_lat_data)、AOD数据(