MRT和MST的批处理问题

来源:互联网 发布:sd卡数据恢复工具免费 编辑:程序博客网 时间:2024/05/19 13:09

之前使用MODIS数据的时候,一直使用的是二级以上产品,总是使用MRT来进行拼接,当时对于遥感一知半解,安装MRT的时候,还需要Java的环境,看网上的安装步骤,感觉非常繁琐,很复杂,现在想来,还是水平太菜了,根本不了解程序的开发已经安装环境。如果对于程序的开发,已经运行环境有了解的,这些根本就不是很什么问题。

首先还是介绍下MRT和MST的区别,NASA开发的这两个工具一个是针对MODIS的一级数据,一个是针对二级及以上数据来做处理的。MST是针对MOD02数据即MODIS的原始数据来做处理的,在处理过程中需要用到MOD03数据作为地理信息辅助,在处理的过程中,只能针对单景影像来进行处理,如MOD02和对应的MOD03来做处理,而对应用同一天的MOD02数据,但是对于不同的获取时间数据并不能进行拼接这些操作。对于MODIS的命名格式如下:


MRT对二级及以上数据做处理,可以进行拼接及重采样操作。处理数据的时候需要看清是哪级数据,选择不同的处理工具。

在网上搜索批处理的时候,大部分都是使用的Cygwin这个工具,实质上就是在windows系统下,使用了一个unix的虚拟环境,写了一个bash文件。如果你能看懂这种脚本语言的话,会发现最重要的一个语句是调用了MRT安装路径下的BIN文件夹之中的两个exe,mrtmosaic.exe和resample.exe,如果你有耐心看MRT或者MST的说明的话,就会发现,这个工具就是靠这一两个exe来运行的。Java的安装只是为了给软件提供一个GUI界面而已。

如果你会其他的语言,也可以自己写一个批处理的代码,例如用python,C/C++等等,只要你明白MST里面的swath2grid.exe和MRT里面的mrtmosaic.exe和resample.exe是如何工作的。

最近用DOS命令写了两个BAT文件来做批处理,相对于Cygwin来说,步骤要简单的多。下面就简单介绍下思路吧

1、首先假设要处理的数据是连续一年的影像,并且存放在同一个文件夹下,给程序指定扫描的文件夹。

2、因为MODIS的数据命名都是按照一定的格式的,这样对于要处理的文件就方便多了,对读取的文件的日期设定一个起始,扫描一个当前日期的影像,存放进一个临时txt之中,调用MRT中的EXE来进行处理,处理完后对天数进行自增,进行下一个循环。下面给出一个例子吧

set  MRTDATADIR=D:/MRT/dataset /a DAY=2012001   rem **batch  data start time**set /a DEADLINE=2012361  rem **batch data end time**set workdir= "F:/modis/":startif %DAY% leq %DEADLINE% (goto ORDER) else exit:ORDER:: **save the file name into a notepad**dir *%DAY%.*.hdf/a/b/s > MOSAICINPUT.TXT:: **execute mosaic **::  Set the mrtmosaic.exe directory.D:/MRT/bin/mrtmosaic.exe -i MOSAICINPUT.TXT -s "1 1" -o MOSAIC_TMP_%DAY%.hdfD:/MRT/bin/resample.exe -p mod.prm -i MOSAIC_TMP_%DAY%.hdf -o MOD010A2_%DAY%.tif:: **copy the  result to a file and delete the input data**move *.tif F:\MOD\Resultdel MOSAIC_TMP_%DAY%.hdfset /a DAY= %DAY% + 8 goto startcmd.exe


上面这个只是针对MRT来进行的处理,针对自己的数据进行下响应的修改就可以使用了。对于MST来说,主要的修改就是一个MOD03数据的读取,并且swath2grid.exe的输入参数只需要prm文件,其他都参数都可以直接写在prm文件中。针对MST和MRT的prm文件编写,网上也有很多介绍,可以自行搜索下。

0 0
原创粉丝点击