利用MRT和windows的批处理工具提取NDVI我已经很熟练了,但是提取其他波段频频翻车,后来找到了这个方法,原文找不到了,感谢这位同学的细心记录。
https://www.jianshu.com/p/eefc3599cb9c
步骤:
1. 下载安装MRT(这个比较简单)
2.批量拼接
2.1 将同一年的数据放在一个文件夹X中,新建一个result文件夹来存放拼接后的文件(代码中是拼接完就把源文件删除啦,注意备份)
2.2 文件夹X内新建txt文档,复制代码,根据自己的数据修改代码,然后将txt的后缀修改为bat。注意:bat 和 hdf 以及result文件夹都在 X之下,然后点击bat文件即可开始拼接。
代码:
set MRTDATADIR=f:\MOD_HDE_SOURCE
set /a DAY=2000049 rem ***开始日期***
set /a DEADLINE=2000353 rem ***结束日期***
:start
if %DAY% leq %DEADLINE% (goto ORDER) else exit
:ORDER
rem **将当天的图幅数据文件名放在一个TXT文件中**
dir *%DAY%.*.hdf/a/b/s > MOSAICINPUT.TXT
rem **拼接HDF12种数据中的第一种**
d:/software_install/MRT/bin/mrtmosaic.exe -i MOSAICINPUT.TXT -s "1 0 0 0 0 0 0 0 0 0 0 0" -o MOSAIC_TMP_%DAY%.hdf
rem **将拼接后数据复制到已建Result 文件夹中并删除当天的数据**
copy MOSAIC_TMP_%DAY%.hdf Result & del MOSAIC_TMP_%DAY%.hdf
del *%DAY%.*.hdf
set /a DAY= %DAY% + 16 rem ***拼接下一个时相的数据***
goto start
3. 拼接后重采样
3.1 生成prm文件
3.2 将拼接后的hdf 、prm 放在同一个文件夹之内,新建txt,粘贴代码,修改后缀为bat,双击即可。
代码:
set MRT_DATA_DIR=D:\2019
for %%i in (*.hdf) do C:/MRT/bin/resample.exe -p 2000mrttest.prm -i %%i -o %%iout.tif
pause
--------------
多年拼接的代码:
set MRT_DATA_DIR=d:\aaamoment
set /a DAY=2001065
set /a DAY1=337
set /a DEADLINE=2003353
:start
if %DAY% leq %DEADLINE% (goto ORDER1) else exit
:ORDER1
if %DAY1% leq 353 (goto ORDER)
:ORDER
dir *%DAY%.*.hdf/a/b/s > MOSAICINPUT.TXT
C:/MRT/bin/mrtmosaic.exe -i MOSAICINPUT.TXT -s "0 0 0 0 0 0 0 0 0 0 0 1" -o MOSAIC_TMP_%DAY%.hdf
copy MOSAIC_TMP_%DAY%.hdf result & del MOSAIC_TMP_%DAY%.hdf
del *%DAY%.*.hdf
set /a DAY1= %DAY1% + 16
set /a DAY= %DAY% + 16
if %DAY1% GTR 357 (goto ORDER2)
goto start
:ORDER2
set /a DAY=%DAY% + 1000 - 368
set /a DAY1=1
goto start
--------------------------------------------
以前采用windws 的cmd命令来完成拼接和格式转换,采用上述方法完成第一部分拼接和波段提取之后就不可以用cmd命令进行后续处理,否则会报错找不到HDF文件 ,噢,对了,投影和重采样的过程依旧除了prm和hdf之外,还需要红框这俩:
这俩在MRT的安装目录之下,比如我的就是这里:C:\MRT\data
-------------over-----------------