MODIS数据处理工具MCTK

上期介绍了MODIS的处理工具MRT,除MRT外,MODIS数据也可以通过MCTK插件进行处理。MCTK可以从ENVI App Store中下载安装。

单幅影像处理

打开MCTK,导入hdf文件,选择输出文件类型为Reprojected,设置输出路径。
MODIS数据处理工具MCTK_第1张图片
然后在处理选项中,设置重面方式以及投影方式和基准方式。
MODIS数据处理工具MCTK_第2张图片
然后点击左下角的过程,等待处理结果。

批处理

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

你可能感兴趣的:(开发语言)