folder=dir('G:\101\'); %浏览存放多天数据的文件夹
for i=1:numel(folder)
day_txt=['G:\101\',folder(i).name,'.txt'];
filename=fopen(day_txt,'wt');
files_dir=['G:\101\',folder(i).name];
files=dir(files_dir);
for j=3:numel(files) %从3开始为了去掉读取目录的那两行,否则在调用MRT中会出错
fprintf(filename,'%s \n',['G:\101\',folder(i).name,'\',files(j).name]);%写入数据存放路径和文件名
end
status = fclose(filename);
%调用MRT中的mosaic
str=['mrtmosaic -i G:/101/',folder(i).name,'.txt -s "1 0 0 0 1" -o G:/101/',folder(i).name,'.hdf']; %dos中的路径用‘/’,输出数据的格式必须是.hdf
dos(sprintf('%s',str)); %运行dos命令
end
%将镶嵌后文件名及其路径写入TXT
filename=fopen('G:\101\mosaic_filename.txt','wt');
files=dir('G:\101\*.hdf'); %读取该目录下所有*.hdf文件
for i=1:numel(files)
fprintf(filename,'%s \n',['G:\101\',files(i).name]);%写入数据存放路径和文件名
end
fclose(filename);
%创建*.prm参数文件,并对影像进行重投影
MOD11A1_FILE_DIR='G:\101\';
MOD11A1_FILE_NAME=[MOD11A1_FILE_DIR,'mosaic_filename.txt']; %将*.txt的存放路径和文件名赋值给变量
[MOD11A1_FILE_NAME]=textread(MOD11A1_FILE_NAME,'%s',-1); %读取txt中的内容
MOD11A1_FILE_DIR_LENGTH=length(MOD11A1_FILE_DIR); %计算路径的字符长度
MOD11A1_FILENUMS=size(MOD11A1_FILE_NAME,1); %计算txt文件中的行数
for filenum=1:MOD11A1_FILENUMS
fid_out=fopen('G:\101\my.prm','wt');
output_filename=MOD11A1_FILE_NAME{filenum,1}(1:MOD11A1_FILE_DIR_LENGTH+16); %40文件名的前40位.{}用于cell数组的分配或引用;()用于引用数组的元素;[]中括号用来构建向量或矩阵
fprintf( fid_out, '\nINPUT_FILENAME = %s\n', MOD11A1_FILE_NAME{ filenum, 1 } );
fprintf( fid_out, '\nSPECTRAL_SUBSET = ( 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )\n' );
%fprintf( fid_out, '\nSPATIAL_SUBSET_TYPE = INPUT_LAT_LONG\n' );
%fprintf( fid_out, '\nSPATIAL_SUBSET_UL_CORNER = ( 60.0 80.0 )\n' );
%fprintf( fid_out, '\nSPATIAL_SUBSET_LR_CORNER = ( 50.0 100.0 )\n' );
fprintf( fid_out, '\nOUTPUT_FILENAME = %s\n', [output_filename '.tif'] );
fprintf( fid_out, '\nRESAMPLING_TYPE = NEAREST_NEIGHBOR\n' );
fprintf( fid_out, '\nOUTPUT_PROJECTION_TYPE = GEO\n' );
fprintf( fid_out, '\nOUTPUT_PROJECTION_PARAMETERS = (' );
fprintf( fid_out, '\n 0.0 0.0 0.0' );
fprintf( fid_out, '\n 0.0 0.0 0.0' );
fprintf( fid_out, '\n 0.0 0.0 0.0' );
fprintf( fid_out, '\n 0.0 0.0 0.0' );
fprintf( fid_out, '\n 0.0 0.0 0.0 )\n' );
fprintf( fid_out, '\nDATUM = NoDatum\n' );
fclose( fid_out )
%调用MRT中的投影和重采样
str = ['resample -p G:/101/my.prm'];
dos ( sprintf( '%s', str ) ) %运行dos命令
end
基于matlab实现MOD11A1数据的镶嵌、重投影、重采样批处理源码.rar
版权申诉
130 浏览量
2024-05-04
16:21:58
上传
评论
收藏 2KB RAR 举报
依然风yrlf
- 粉丝: 983
- 资源: 3118