资源描述:
《modis数据预处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MODIS数据预处理1.波段设置Modis影像有三种打开方式,一般我们用打开外部文件的方式打开科学数据集,因为需要数据集中的一些辅助信息(主要是太阳几何,卫星几何).但是这样打开之后显示的波段从1开始的,而数据集中对应的modis通道并不是这个顺序.通过菜单栏中的basic_tools->preprocessing->data_specificutilities->viewHDFdatasetattributes可以打开数据集里每个要素的属性表,在里面选中需要的HDF文件中的数据集,就会打开其属性表,波段内容如下Attri
2、bute3-5:"band_names""8,9,10,11,12,13lo,13hi,14lo,14hi,15,16,17,18,19,26"对应打开的HDF文件里1KM辐亮度文件的波段数,一共16个波段.其中13/14波段比较特殊,都有hi和lo两组数据,它们是传感器高敏感度和低敏感度两种状态下获取到的DN值,分别对应于较暗地物和较亮地物,使用哪个文件根据需要而定.但是在太湖湖区,13/14波段大部分区域效果都不太好.值会很大,出现溢出.可能是由于太湖的高浑浊度.1.几何校正几何校正有三种方法:1)用envi自带模块进
3、行几何校正,通过菜单栏中的Map->GeoreferencesMODIS选中envi中已经打开的需要校正的数据集,输入研究区的地理位置,如下图左,投影用UTM,基准面用WGS-84,区域根据经纬度确定。输入完成,envi会自动校正,并执行去蝴蝶结效应算法,有点是能对我们需要的那些波段进行校正。缺点也很明显。如下图右,校正结束的图像会失去原始图像四个角的信息,这样就无法和GLT校正的图像很好的匹配起来,不利于一些后续的处理。2)用GLT,即是查找表法对图像进行几何校正Map->GeoreferencefrominputGeo
4、metry->buidGLT用来建立查找表。在弹出的对话框中选择查找表的XY信息,其中X对应图像经度信息,Y对应纬度信息。然后只需要规定投影、基准面和区位信息,就可以生成一个查找表文件。这个查找表文件的实质也是两幅图像,分别在每个像元上保存着经纬度值,并且像元位置是拉伸到我们规定的输出投影上面去了,而且是逐像元的拉伸。那么剩下的矫正工作就只是把想要矫正的信息和查找表一一匹配起来,因此速度也很快。Map->GeoreferencefrominputGeometry->GeoreferencefromGLT就是上面所说的,把查
5、找表运用到需要矫正的每一个像元上。这里只需要选择想要矫正的影响就好了。有一点需要注意:这里查找表的分辨率比辐亮度信息要低,因此如果直接用这个查找表对原始的辐亮度图像进行矫正,只能得到原始图像一小部分的信息。因为矫正时是按照像元行列号一一对应查询的。解决方案有两个:可以把原始图像分辨率降低,重采样成和查找表一样大小的图像,再用查找表进行几何校正,这样运行速度快但是损失原始图像信息;也可以将查找表重采样成和原始的辐亮度图像一样大小的图像,再用这个新的查找表对图像进行矫正。这样就不会损失原始图像信息,但是计算速度会大大降低。视应
6、用选择。1)IDL批处理;forward_functionenvi_proj_createPROModis_gef_batchenvi,/restore_base_save_files;恢复ENVIsav文件envi_batch_init,log_file=’batch.txt’;开始批处理模式inpath=DIALOG_PICKFILE(/DIRECTORY,$TITLE="selectMODISfilespath")CD,inpathfilename=FILE_SEARCH('*.HDF');print,resultn
7、=N_ELEMENTS(filename)outpath=DIALOG_PICKFILE(/DIRECTORY,$TITLE="selectMODISoutpath")FORi=0,n-1DOBEGINin_name=inpath+filename[i]out_name='ReGeo'+filename[i];设置校正方法;0=RadianceEmissivity,1=ReflectanceEmissivitycalib_method=1;设置输出方法;0=Standard,1=Projected,2=Standard
8、andProjectedout_method=1;设置输出投影output_projection=envi_proj_create(/geographic);在输出时设置去除蝴蝶效应convert_modis_data,in_file=in_name,out_path=outpath,$out_root