加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab数据转为二进制文件

(2018-08-29 19:47:22)
分类: matlab
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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有