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

[转载]idl中文件的读写

(2015-03-17 08:22:01)
标签:

转载

分类: IDL学习
原文地址:idl中文件的读写作者:基德
其实程序的目的是希望计算机能帮助自己处理一些复杂繁琐的事务,大部分需要处理的文件都是保存在磁盘中,如何利用程序从磁盘中读取文件和保存处理结果是编程者首先应该学习的,至于对于这些文件的处理方法,可以慢慢的学。

  一般情况下,做遥感所处理的数据都是图像格式数据,另外一些是文本文件和二进制的文件。Idl集成了多个读取图像文件的命令,可以从idl帮助文件中查找这些读取图像文件的命令。

1.图像格式文件的读写

read_*

*代表图像文件类型,有一个通用的读取文件命令是read_image

write_*

保存文件的命令,同样有一个通用的write_image

但是在写文件时要注意文件中数据的类型,整型、浮点型还是字节型等等。

2.格式化文件读写

  idl在读写格式化数据方面有两种格式化文件的区分:

      自由文件格式     自由格式文件用逗号或空白分开文件中的每个原始

     确定的文件格式   确定的文件格式是用格式说明按照给定的规范进行编排的

2.1读文件

   ascii文件格式属于自由文件格式的一种,对于其读取可以采用read_ascii(),返回的是一个结构变量

    data=read_ascii('aa.txt',data_start=5);其实数据是从第6行开始的,也就是在读取的时候跳过头文件部分

   或者

    filetemplate =ascii_template(file)
   data =read_ascii('aa.txt',template=filetemplate)

  其他的自由格式文件则直接可用readf读取

  readf可以同时读取多个文件,将其放入到一个文件中。

IDL>ReadF, lun, header, data, vector

对于确定格式文件

应用format关键字即可

2.2写文件

  printf即可写入

3.读写非格式化文件即二进制文件

   非格式文件数据比格式化数据紧凑得多,经常用于大数据文件,对于这种文件的读写,通常采用

   readu 和writeu

但是如果我们不知道

4.读取带有文件头的非格式化文件

  有时一个文件包含有文件头信息,读取里面的数据需要绕过文件头。

  对于头文件可将其看成是一个字符串。

pro readheaderfile,size=size
   cd,'c:'
 
  file =dialog_pickfile()     ;读取头文件目录
   print,file
   openr,lun,file,/get_lun    ;打开头文件,将其读入内存,赋予内部逻辑号lun
   header =fstat(lun)         ;fstat函数用来统计文件的信息,将其赋予一个结构变量
   help,header ,/structure
   print,header.size          ;结构变量中的size即为文件的大小
   size=header.size
   free_lun,lun

end

pro readfile
   cd,'c:'
  readheaderfile,size =size
  ;读取波谱文件
  file1 =dialog_pickfile()  ;读取波谱文件目录
   file1='spect1.txt'
   print,file1
   openr,lun,file1,/get_lun    ;打开文件,将其读入内存,赋予内部逻辑号lun
   point_lun,lun,size         ; 定位到size处,有时候需要调整位置,如果数据前有空格也算一个字符
   spect =findgen(2,3)         ;定义输出文件的大小,2列3行的文件,可以根据数据大小随意设置
   readf,lun ,spect             ; 读取文件中的数据
   print,spect
   openw,lun,'c:spect.txt',/get_lun; 建立一个输出文件
   printf,lun,spect                 ;将数据保存到data.txt中
   close,/all

0

  

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

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

新浪公司 版权所有