1.matlab三维数据的转换,文件类型[*,*,12]
for ilisting = 1:12
binFlieName =
['globalMonthlyGSf', num2str(ilisting), '.bin']; %生成二进制文件名
fileID =
fopen(binFlieName,'wb');
machineformat =
'native';
fwrite(fileID,
squeeze(globalMonthlyGS(:,:,ilisting)), 'double', 0,
machineformat);
fclose(fileID);
end
2.多个单文件
clear;clc;
start_path = '';
dialog_title = '打开AD数据文件夹';
folder_name = uigetdir(start_path,dialog_title);
cd(folder_name);
listing = dir(folder_name);
for ilisting = 1:numel(listing)
if
listing(ilisting).isdir, continue, end %忽略目录文件
[pathstr,name,ext] =
fileparts(listing(ilisting).name);
if ~strcmp(ext,'*.mat'),
continue, end; %忽略不符合的文件类型
binFlieName =
strcat(name,'.bin'); %生成二进制文件名
fileID =
fopen(binFlieName,'wb');
data =
load(listing(ilisting).name); ta为struct类型
fieldNames =
fieldnames(data);
eval_r(['A =
data.',fieldNames{1},';']); %执行A = data.fieldnames(A);
machineformat =
'native';
fwrite(fileID, A,
'double', 0, machineformat);
fclose(fileID);
end
3.转换后的bin文件处理
缺少头文件,输入行列号,与IDL里的是相反的,File type为ENVI Standard, Data
type为Unsigned 64-bit,MAPinfo如图所示,随后在IDL中对每个文件进行hdr的copy:
pro copy_head_file
COMPILE_OPT
IDL2
ENVI,
/RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT,
LOG_FILE = 'BATCH_LOG.TXT'
;****************************************************************************************
file_path='N:\NIRv\out_path\'
file_name=file_search(file_path,'*.bin',count=numfiles)
file_hdr='N:\NIRv\NIRv-20010101.hdr'
out_path='N:\NIRv\out_path\'
for i=0,
numfiles-1 do begin
basename=file_basename(file_name[i],'bin')
out=out_path+basename+'hdr'
FILE_copy, file_hdr, out, /OVERWRITE
print,i
endfor
end
4. 对文件进行转置
pro transpose_data
compile_opt idl2
envi, /restore_base_save_files
e=envi(/headless)
envi_batch_init, log_file =
'batch_log.txt'
;*******************************************************************************************************
file_path='N:\'
out_path='N:\'
filename=file_search(file_path,'*.bin',count=numfiles)
;*********************************************************************************************
tags={GEOGANGULARUNITSGEOKEY:9102,$
GEOGCITATIONGEOKEY:'GCS_WGS_1984',$
GEOGINVFLATTENINGGEOKEY:298.25722356300003,$
GEOGRAPHICTYPEGEOKEY:4326,$
GEOGSEMIMAJORAXISGEOKEY:6378137.0000000000,$
GTMODELTYPEGEOKEY:2,$
GTRASTERTYPEGEOKEY:1,$
MODELPIXELSCALETAG:[0.1,0.1,0],$
MODELTIEPOINTTAG:[0.00000000,0.00000000,0.00000000,-180,90,0]}
;****************************************************************************************************************
for i=0,numfiles-1 do begin
envi_open_file,
filename[i],r_fid=fid
envi_file_query,fid,dims=dims,ns=ns,nl=nl,nb=nb,bnames=bnames
data1=envi_get_data(fid=fid, dims=dims,
pos=0)
data2=transpose(LAI_data1);进行转置
data=nan2zero(LAI_data2)
basename=file_basename(filename[i]) ;查询filename的全部文件名
year_name=strmid(basename,5,4)
month_name=strmid(basename,9,2)
half_month_name=strmid(basename,11,2)
out_name =
out_path+strcompress('data_'+year_name+month_name+half_month_name+'.tif',/REMOVE_ALL)
write_tiff,out_name,data,/float,geotiff=tags
print,out_name
endfor
end
加载中,请稍候......