上期介绍了MODIS的处理工具MRT,除MRT外,MODIS数据也可以通过MCTK插件进行处理。MCTK可以从ENVI App Store中下载安装。
单幅影像处理
打开MCTK,导入hdf文件,选择输出文件类型为Reprojected,设置输出路径。
然后在处理选项中,设置重面方式以及投影方式和基准方式。
然后点击左下角的过程,等待处理结果。
批处理
MTCK User’s Guide中提供了MODIS不同数据集的批处理示例,推荐大家去看。这里提供处理MOD13A3的代码。
pro modis_mctk
compile_opt idl2
e = envi()
envi, /restore_base_save_files
envi_batch_init, log_file='batch.txt'
;选择需要批处理文件所在的文件夹
inpath = 'G:\MODIS_China\' ;modis文件路径
cd, inpath
filenames = file_search('*.hdf')
n = N_elements(filenames)
print, n
PRINT, '开始处理数据 : ', SYSTIME()
;导出
bridges = mctk_create_bridges()
FOR i = 0, n-1 DO BEGIN
modis_grid_file = inpath+filenames[i]
filename = filenames[i]
print,filename
;选择处理后文件另存的文件夹位置
outpath = 'G:\NDVI_China\'
;提取原文件前23位作为处理后文件的名称
output_rootname = STRMID(filename, 9, 23)
;数据集或格网名称,不同数据名称在MCTK窗口中导入数据可看到
grid_name = 'MOD_Grid_monthly_1km_VI'
;选择要处理的波段
sd_names = ['1 km monthly NDVI'] ;从MCTK窗口可以看到
;Output method schema is:
;0 = Standard, 1 = Reprojected, 2 = Standard and reprojected
out_method = 1
;选择地理坐标系统,这些是指导手册案例的内容
output_projection = ENVI_PROJ_CREATE(/UTM)
;OPTIONALLY specify the output X and Y pixel sizes in double precision floating
;point. Sizes must be in units relevant to selected output projection
out_ps = [1000,1000]
;Choosing cubic convolution interpolation.
interpolation_method = 2
;Set reprojection background and any native fill values to NaN
nan_fill = float('NaN')
;以下是调用mctkh函数
convert_modis_data, in_file=modis_grid_file, $
out_path=outpath, out_root=output_rootname, $
gd_name=grid_name, sd_names=sd_names, $
out_method=out_method, out_proj=output_projection, $
out_ps=out_ps, interp_method=interpolation_method, $
background=nan_fill, fill_replace_value=nan_fill, $
r_fid_array=r_fid_array, r_fname_array=r_fname_array, $
msg=msg
print,output_rootname
ENDFOR
mctk_destroy_bridges, bridges
PRINT, '处理完成 : ', SYSTIME()
envi_batch_exit
end