利用MRT对MODIS数据进行批量重投影+批量波段合成

写在前面:

官方渠道已经下载不到MRT了,为什么呢?退休了呗。

https://lpdaac.usgs.gov/news/downloadable-modis-reprojection-tool-mrt-and-mrtswath-tool-have-been-retired/

当然官方也推荐了新的处理工具

HDF-EOS to GeoTIFF (HEG)

之前也写过一篇相关文章但是没有深入探索,感兴趣的深入了解下。

https://mp.weixin.qq.com/s/afGu8hKjbRZtAJt1TKgydA

 

那么我们还是可以用退休前的版本处理MODIS数据的,下面是安装包及教程:

MRT下载:

https://pan.baidu.com/s/1_pDwv2lghAzTpaLGv7IcOw 
提取码:reyg

MRT安装:

1、解压(其中mrt文件是我自己建的,后面将会安装到此文件下)

 利用MRT对MODIS数据进行批量重投影+批量波段合成_第1张图片利用MRT对MODIS数据进行批量重投影+批量波段合成_第2张图片

2、点击mrt.install.bat.并按任意键继续。

出现如下界面

选择一个路径进行安装

  • 本文选择E:\ModisTools\MRT

利用MRT对MODIS数据进行批量重投影+批量波段合成_第3张图片

  • 选择Windows版本:1

利用MRT对MODIS数据进行批量重投影+批量波段合成_第4张图片

  • 本文默认你已经安装了java.此时找到你的java.exe的所在路径。
  • 本文为:

利用MRT对MODIS数据进行批量重投影+批量波段合成_第5张图片

利用MRT对MODIS数据进行批量重投影+批量波段合成_第6张图片

  • 重启电脑,开始使用。

可将mrt\bin文件夹下的ModisTool.bat文件发送到桌面快捷方式。双击即可使用。

 

利用MRT对MODISs数据进行批量自动重投影。

 

批处理代码:

三行代码写在文本文里件并另存为成  .bat  文件

 

 

set modistool.bat =放modis数据的路径 

for %%i in (*hdf)do resample -p my.prm -i %%i -o %%iout.tif

pause

 

注:my.prm为在MRT端加载一景MODIS影像设置 的参数保存为  .prm

 

最后把prm、modis数据、三行代码的bat文件都放在“放modis数据的文件下”

如图:

利用MRT对MODIS数据进行批量重投影+批量波段合成_第7张图片

双击bat即可批处理。捣鼓了一天,lsd.

利用MRT对MODIS数据进行批量重投影+批量波段合成_第8张图片

处理完之后会发现DATA文件夹下多了投影后的波段数据。

利用MRT对MODIS数据进行批量重投影+批量波段合成_第9张图片

那么针对上述文件一个个波段组合(layer stacking)是不是很麻烦呢?

写给和我一样的小白:

下面再分享一下自己从网上找,然后根据自己的数据进行调试,亲测可用的批量波段合成代码

pro band_envi_layer_stacking_doit_test
  compile_opt idl2

  envi,/restore_base_save_files
  envi_batch_init,log_file='batch.txt'

  Filesnames = 'G:\MODIS\20167MOD09A1\189\'  ;替换成自己的文件所在路径
  Files_arr = file_search(Filesnames, '*', COUNT = count) 

  Bandnum = 6
  filesnum = count/Bandnum
  
  for num=0, filesnum-1 do begin
    inputfiles = strarr(Bandnum)
    inputfiles[0]=Files_arr[num*Bandnum+2]   ;b3
    inputfiles[1]=Files_arr[num*Bandnum+3]   ;b4
    inputfiles[2]=Files_arr[num*Bandnum]     ;b1
    inputfiles[3]=Files_arr[num*Bandnum+1]   ;b2
    inputfiles[4]=Files_arr[num*Bandnum+4]   ;b6
    inputfiles[5]=Files_arr[num*Bandnum+5]   ;b7 我把b5删除了
    
    out_name = STRMID(inputfiles[0],0,42)
  
    fids=lonarr(n_elements(inputfiles))
    dimses=lonarr(5,n_elements(inputfiles))
    poses=lonarr(n_elements(inputfiles))
  
    for i=0,n_elements(inputfiles)-1 do begin
      envi_open_file,inputfiles[i],r_fid=fids1
      envi_file_query,fids1,ns=ns,nl=nl,nb=nb
  
      fids[i]=fids1
      dimses[0,i]=[-1,0,ns-1,0,nl-1]
      proj=envi_get_projection(fid=fids,pixel_size=out_ps)
  
    endfor
  
    envi_doit,'envi_layer_stacking_doit',$
      fid=fids,pos=poses,dims=dimses,$
      out_dt=2,out_name=out_name,$
      interp=2,out_ps=out_ps,$
      out_proj=proj,r_fid=r_fid
  endfor
end

 

欢迎关注个人公众号

 

你可能感兴趣的:(遥感数据处理)