【新手入門,學(xué)習(xí)存檔,禁搬,侵刪】
感謝互聯(lián)網(wǎng)!
代碼參考:
①https://blog.csdn.net/qq_41718357/article/details/88776377
②https://blog.csdn.net/good_learner_1/article/details/103414514 (非常重要)
③https://blog.csdn.net/gisboygogogo/article/details/75784080
步驟:
(1)下載安裝MRT:在第②個(gè)鏈接里有MRT的安裝包鏈接,安裝方法見鏈接③
(2)批量拼接(下面是拼接一年的代碼,多年批量拼接的代碼在最后):
① 將同一年的hdf數(shù)據(jù)放到一個(gè)文件夾里(此處是yr2001),新建一個(gè)result文件夾用來存放拼接后的文件。注意拼接完成后原文件就刪除了,所以要做好備份。
② 文件夾內(nèi)新建txt文檔,將如下代碼復(fù)制進(jìn)去(參考鏈接①&②),修改相應(yīng)的內(nèi)容,后綴名改為bat。務(wù)必將bat文件和hdf文件、result文件夾放在一起,雙擊bat文件運(yùn)行即可。
親測可用代碼:
set MRTDATADIR=D:\MOD10A2\yr2001
set /a DAY=2001001 rem ***開始日期***
set /a DEADLINE=2001361 rem ***結(jié)束日期***
:start
if %DAY% leq %DEADLINE% (goto ORDER) else exit
:ORDER
rem **將當(dāng)天的圖幅數(shù)據(jù)文件名放在一個(gè)TXT文件中**
dir *%DAY%.*.hdf/a/b/s > MOSAICINPUT.TXT
rem **拼接HDF2種數(shù)據(jù)中的第二種**
d:/MRT/bin/mrtmosaic.exe -i MOSAICINPUT.TXT -s "0 1" -o MOSAIC_TMP_%DAY%.hdf
rem **將拼接后數(shù)據(jù)復(fù)制到已建Result 文件夾中并刪除當(dāng)天的數(shù)據(jù)**
copy MOSAIC_TMP_%DAY%.hdf Result & del MOSAIC_TMP_%DAY%.hdf
del *%DAY%.*.hdf
set /a DAY= %DAY% + 8 rem ***拼接下一個(gè)時(shí)相的數(shù)據(jù)***
goto start
說明:

文件存放

代碼說明

結(jié)果文件
(3)拼接后的數(shù)據(jù)進(jìn)行投影、重采樣
① 雙擊打開D:\MRT\bin(MRT的安裝目錄)中的 ModisTool.bat,按照下圖生成prm文件(設(shè)置投影、重采樣、轉(zhuǎn)格式都在這步進(jìn)行)。

軟件界面說明
② 把拼接之后的hdf文件、prm文件都放在一個(gè)文件夾,在這個(gè)文件夾內(nèi)新建txt文件,將下面代碼粘貼進(jìn)去(參考鏈接①&②),保存為bat,雙擊即可使用代碼運(yùn)行prm文件。
親測可用代碼:
set unknow_wgs.bat=D:\MOD10A2\yr2000\result
for %%i in (*.hdf) do D:\MRT\bin\resample.exe -p unknow_wgs.prm -i %%i -o %%iout.tif
pause
說明:

文件說明
成功得到tif文件!

得到tif文件
補(bǔ)充 :可以直接進(jìn)行多年拼接的代碼(仍然是參考鏈接②,主要是做了一些備注,方便理解)
親測可用代碼:
set MRT_DATA_DIR=D:\MOD10A2MAX
set /a DAY=2001009
set /a DAY1=9
set /a DEADLINE=2019361
:start
if %DAY% leq %DEADLINE% (goto ORDER1) else exit
:ORDER1
if %DAY1% leq 361 (goto ORDER)
:ORDER
dir *%DAY%.*.hdf/a/b/s > MOSAICINPUT.TXT
d:/MRT/bin/mrtmosaic.exe -i MOSAICINPUT.TXT -s "1 0" -o MOSAIC_TMP_%DAY%.hdf
copy MOSAIC_TMP_%DAY%.hdf Result & del MOSAIC_TMP_%DAY%.hdf
del *%DAY%.*.hdf
set /a DAY1= %DAY1% + 8
set /a DAY= %DAY% + 8
if %DAY1% leq 361 (goto ORDER1) else (goto ORDER2)
pause
goto start
:ORDER2
set /a DAY=%DAY% - 8 + 640
set /a DAY1=1
goto start
說明:

代碼說明