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

写在前面:

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

LP DAAC - The downloadable MODIS Reprojection Tool (MRT) and MRTSwath tool have been retired

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

HDF-EOS to GeoTIFF (HEG)

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

一个HDF转geotiff工具

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

MRT下载:

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

MRT安装:

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

 

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

出现如下界面

选择一个路径进行安装

  • 本文选择E:\ModisTools\MRT

  • 选择Windows版本:1

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

  • 重启电脑,开始使用。

可将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数据的文件下”

如图:

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

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

那么针对上述文件一个个波段组合(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

欢迎关注个人公众号GeoSuper

  • 18
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值