IDL语言2014教材

所需积分/C币:17 2018-04-16 17:35:30 1.88MB PDF
63
收藏 收藏
举报

IDL语言2014教材:交互式数据语言IDL(Interactive Data Language)是进行科学数据分析、可视化表达和跨平台应用开发的高效软件和理想工具。IDL作为第四代语法简单、面向矩阵运算的计算机语言,拥有丰富的分析工具包,采用高速的图形显示技术,是集成可视化、交互数据分析、大型商业开发为一体的高级集成开发环境,使用户的数据处理、科学研究和商业开发真正的做到快捷有效。
IDL屮的文件输入与输出 2文件读写 21打开文件 IDL从憾盘上的文件读写数据,必须首先把一个逻辑设备号连接到一个特定的文件,然 后进行文件操作如打开、关闭和读取等。DL中的逻辑设备号范闱是-2-128,其中1-99是 可以用户任意指定的,100-128是根据 get lun和 free lun来管理的,其他是特殊函数专用 的。 0是常规标准输入流,一般是键盘。也就是说下面命令是一致的 IDL> read, ox -1是常规标准输岀流,一般是显小屏幕,下面命令的功能是一致的 IDL> PRINTF -1.x I DL> PRINTE. -1X -2是错误流,一般是显示屏幕 文件操作相关的函数见下表。 表:|DL中文件操作的函数列表 函数名字 作用 Open 以只读方式打开己存在文件 Open W 创建一个可以读写的新文件 O 以更新模式打开己存在文件 File Search 对文件名达行特定的查找 Dialog_ pickfile() 对话框方式选择文件; State 返回一个已打廾文件的信息 EOF 检测是否到文件末 CLOSE 关闭一个文件 Free lun 释放一个逻辑设备号并关闭文件; 22读写ASC码文件 IDL在读写该文件分为有两种格式化文件:自由文件格式和确定的文件格式 自由文件格式是用逗号或空白(tab键和空格键)分开文件中的每个元素的ASC文件。 确定的格式文件是用格式说明按照给定的规范进行编排的。二者相比后者比前者更止规一些。 (1)读写自由文件格式 IDL下用 Reade从文件中读入自由格式数据, Printf写入自由格式数据到文件中。DL中 读写自由格式文件遵循下面的几个规则 1)如果读入到宇符串变量中,那么,在当前行剩下的所有字符都将读入该变量中。 2)输入数据必须用逗号或空白分隔(空格键或tab键) 3)输入通过数字变量完成。数组和结构都可作为数字变量的集合。 4)如果当前读入行是空的,并且还有变量要求输入,则读取另一行 5)如果当前读入行不是空的,但是没有变量要求输入,则忽略此行剩下的数 IDL屮的文件输入与输出 6)尽量将数据转换为变量所希望的数据类型 7)复数数据必须有实数和虚数两部分,用逗号分隔,并用括号括起来。 (2)读写确定的文件格式 读写桷定文件格式可同样用 ReadF和 PrintE命令,它们刚才已用于自由格式文件,但现 在文件格式已由 Format关键字明确声明。(在读写标准翰入和输出时,也可将F。 ormat关键 字用于Read和Prnt命令)。 )通用的格式说明符 通用格式说明符 Format关键字的语法在5.11章节中有详细的描述,这里的用法跟该章 节一致。 b)逗号分隔的确定格式 有时数据文件必须用确定格式书写,以方使它们被其它软件读取。用逗号分隔的数据文 件就是这类文件的典型代表。 Format=(F103,A1,2X,F10.3A1,2XF103) c)字符串中读取格式数据 Reads是一个有用的DL命令,可以从字符串变量而不是从文件中为自由格式或确定柊 式读取数据。 Reads运用了和命令Read和 Read E相同的读取格式数据规则。也就是说,使 用 Reads就象从数据文件中读取一样,所不冋的是所读的对象是一个字符串变量 当大量信息需从文件头部读取时,此命令特别有用。例如,假设ASC‖数据文件的第 行说明了数据文件的行数和列数,此文件头可以从文件中读取,并且可创建一个大小正确的 数组来读取数据。 IDL> firstline=1024500 12 June 1996 IDL> columns=O IDL> rows=0 lDL> date= IDL> reads, firstline, columns rows, date 102450012June1996 IDL> print, columns; rows, date IDL> print, rows, date 24500 IDL> print, date 12June1996 (3)向导式读取函数 IDL中提供了 ASCII TEMPLATE, QUERY ASC|和 READ ASC函数。 (4)综合应用举例 针对上面介绍的三种读取方式,对同一个数据采用了不同的读取方式进行了读取,附代 asciFile =currentPath+ \data \ascii. txt ;依次读取 OPENR, lun, ascifile / get lun IDL屮的文件输入与输出 IF lun EQ-1 THEN RETURN tmp WHILE(EOF(lun))DO BEGIN READF,lun, tmp ENDWHILE FREE LUN lun 分块读取 tmp= STRARR(3 data =FLTaRr(2, 4) data INTARR(20) OPENR, lun, asciifile, /get lun READF,lun, tmp READEJun data FREE LUN, lun 白定义格式读取 tmp row =0 plums =0 OPENR, lun, asciifile, /get lun READE,lun, tmp READS, tmp, row, columns, type data =MAKE ARRAY(row, columns, type type) READF, lun, tmp READE,lun, tmp FREE LUN lun template =Ascii template(asciFile) data Read_ ascii(asciFile, TEMPLATE=template, count yNum) help, data print, data. 0) 23读写二进制文件 二进制数摭文件基本是以一长串的二进制字节存在文件中,这些字节的含义(也就是说, 这些字节如何翻译成特定数据类型和结构的)很难描述的,除非刚开始就知道文件写入的是 IDL屮的文件输入与输出 什么内容。二进制数据比格式化数据紧凑得多,经常用于存储大数据文件。有两种命令读写 进制数据,它们与前面用来读取格式数据文件的 Reade和 Print命令等效。它们是 Ready 和 Write命令 要读取非格式数据文件,简单定义变量,打开文件读取,并用 Ready命令将字节一个 接·个地读入变量中。如果给定了变量的数据类型和组织结构,每个变量按其要求从文件中 读出相应的字节数 (1)读写常规二进制文件 IDL>B= BYTARR(192, 192,/ NOZERO) IDL>: Read the data into b IDL> READU, 1 B iDL> Close the file IDL> CLOSE 1 IDL> Display the image IDL>TV. B (2)读写带头文件的二进制文件 当数据中含有特定的头文件时,读取的时候有时希望直接跳过,此时需要用 Point lun 凶数,该函数支持对文件进行字节定位。 调用格式为PONT_LUN,Unit, Position,其中Unt是文件打开后的lun, Position一般是 需要跳转的字节数。 (3)关联变量读写二进制文件 IDL关联变量是把一个1DL数组或结构变量的组织结构映射到数据文件的内容上。文件 破看作是这些重复单元的一个数组。第一个单元的索引号是0,第二个单元的索引号1等 等。关联变量不象常规变量那样将整个数据组都存储在内存里。而是当一关联变量被引用时 IDL仅对需要的部分数据执行相关的输入或输出请求,这部分数据就是要读入内存的。 有时侯大型的二进制数据文件都由一系列的重复单元组成。一个IDL关联变量通常是处 理这种数据形式的最好方式(有时侯是唯一的方式)。 关联变量有卜面的儿个优点: 冫当该变量被用于表达式时,才产生文件的输入和输出动作。不需要单独的读或写命 令 数据集的大小不受内存容量的限制,因为有时它可处理大型的数据集。对于物理存 储器来说是太大的数据,通过把此数据分成块就能很容易地处理 不必提前声明用」映射该数据的数组或结构的数量。 关联变量是效率最高的1/0形式。 (4)向导式读取函数 READ BINARY FH BINARY TEMPLATE Read Binary是直接读取二进制文件的函数,用法可参考卜面的语句 vHeadData = READ BINARY (FILEPATH(head. dat,$ SUBDIRECTORY=[examples, 'data ]), DATA DIMS=[80, 100, 57) IVOLUME, vHead Data IDL屮的文件输入与输出 (5)综合应用举例 读FY-2的9210AWX文件,FY-2C的卫星黑体亮度温度产品,下血的格式说明是参考国 家卫星气侯中心的《风云二号C卫星业务产品使用于册》 1)第一級文件头记录格式 序号字节序号字节数类型 描述内容 具体数值或字符 1-12 A12 文件名 2 13-14 I:2 整型数的字节顺序 15-16 4 17-18 2222 第一级文件头长度 4 第二级文件头长度 80 19-20 填充段数据长度 1081 5678 21-22 T*2 记录长度 1201 23-24 文件头专用记录数 25-26 *2产品数据专用记录数 1201 27-28 10 31-38 22282 产品类别 3 压缩方式 0 格式明字符串sA204 12 39-40 产品数据质量标证 )第二级文件头记录格式 序号字节序号字节数类型」描述内容其体数值或字符 41-48 卫犀名 FY?C 49-50 格点场要素 19 5 51-52 I*2 格点数据字节 53-54 旱2 格点数据基准值 100 5 55-56 I*2 格点数据比例因子 6 57-58 222222222 I*2 时间范国代码 1(或2、3、4) 0-60 [2 开始年 61-62 I*2 开始月 63-64 [2 开始日 10 65-66 I*2 开始时 6768 I*2 开始分 69-70 [2 结束年 71-72 [:2 结束月 开 73-74 2 I*2 结束日 75-76 2 : 2 结束时 16 7778 2 12 束分 170.802r2网格左上角纬度 6000 18 81-82 2 I: 2 网格左上角经度 4500 19 83-84 2 2网格右上角纬度 6000 0 85-86 I*2 网格右上角经度 16500 IDL屮的文件输入与输出 7=88 格距单位 2 89-90 222 横向咯距 10 91-92 纵向咯距 10 4 33-94 横向格点数 201 95-96 纵向格点数 1201 26 9798 有无陆地判识值 27 99-100 工2 陆地具体判识值 28 101-102 I*2 有无云判识值 103-104 云具体判识值 30 105-106 2有无水体判识值 107-108 水体具体判识值 32109-110 2222222222 容 有无冰体判识值 000000003 3311112 12冰体具体判识值 34 113-114 是否有质量控制 35 115-116 质量控制上限 330 36 117-18 质量控制下限 170 37192022异常点充值 0 PRo test read BinAWX currentPath= sourceroot( file currentPath+ data\FY2C TBB R1 OTG 20061130 AOADAWX Open, file _lun, file, /Get_Lun ;定位到信息部分 lunfile lun. 20 Head Line =inden ( 3) read, file un, HeadLine HeadLine0]数据的头文件长度S ; HeadLine]-文件头文件记录数S Headline[2]-数据的记录数 p nfile lun, 58 定位到信息部分 BeginDate= inden(5);依次为年月山时分 EndDate= ndgen(5);依次为年月日时分 LatLong- ingen(4);依次为左上角纬度经度右下角经度纬度 du, file lun, Begin Date ready. file un EndDate dufile un lator data= bytarr(headLine [2], (HeadLine[od)) 定位到数据部分 point lun, file lun, HeadLine[o Head Line[1 read, file lun, data Free lun lun END IDL屮的文件输入与输出 24读写格式文件 IDL可以读写许多常用文件格式,这些文件格式已在下表中列出。 表|DL支持读写的文件格式 文件格式 读函数 写函数 BMP Read BMP Write BmP 考CDF厍 参老CDF厍 DICOM DlffDICoM对象 DLffDICOM对象 DXE DLffDX F对象 DLffDXF对象 GIF Read giF /rite Gie HDF 参考HDF库 参考HDF库 HDF-EOS 参考HDF库 参考HDF厍 Interfile Read interfile JPEG Read jPeg Write jP EG netcDF 参考 netcDF库 参考 netcDF库 PICT Read pict Write picl Read ppm rite pPM Read PNg Write PNg PostScript PS或打印设备 Sun rasterfiles Write srF SYLK Read SYLK Write SYLK TIFF/GeOTIFF Read tiFF Write TiFF WAVE Read wave Write wave X11-bitmap Read X11 Bitmap GRIB1/GRIB2 参考GRB库 参考GR|B库 Video DLfNVideoread或 READ VIDEO DLffVideowrite或 WRITE VIDEO 25图像文件信息查询 DL中提供了常用图像文件格式的查询程序。这些程序允许在没有真正读取其数据的情 况下,就可以查询图像文件,并可以存取随着图像数据文件一起存储在文件里的元数据(关 于数据的一些信息)。 下面是新的图像查询程序列表: Query BMP Query DICOM Q GIF Query JPEG ● Query PICt Query PNG Query PPM Query SRF lery IDL屮的文件输入与输出 所有这些查询命令都是以同样的方式工作。它们都是返回0或1的函数,通过返回值确 定是否成功地〔返回值为1)读取了图像文件里的元数据。如果它们成功地读取了文件,将 保存文件信息的|DL结构变量作为输出命令返回给用户。用户通过存取这个结构里面的字段 从而获取文什的有关信息、 26PEG文件操作 (1)JPEG读操作 用 Read jPeg命令就可以读取并显示个JPEG文件 假设正在8位显小器上显小24位的图像,应该使用TV命令里的关键字True DL> TV, thisimage, true=1 (2)JPEG写操作 对图形窗∏进行拍照可以用TVRD函数。 IDL> image 3D=TVRD(true=1) 最后,用 Write jPeg命令,将图像用输出为JPEG文作,运行命令 IDL> Write JPEG,test. jpg image3D, true=l, quality=75 (3)举例 PRO test Commonlmg currentPath sourceroot( img File =current Path+data \idl. jpg 文件信息查询 query Status =QUERY IMAGE(img File, imageInfo, type type HELP, imageInfo, /str IF query status EQ 1 THEN BEGIN CASE type OF BMP: BEGIN END JPEG: BEGIN jpgStatus=QUERY_ JPEG(img File, fileinfo IF jpg Status THEN BEGIN HELP filelnfo, / sti READ JPEG, imgFile, data image=TVRD(0, 0, 127, 287, /true Write Jpeg, currentPath+\data\result. jpg, image, true=1, quality=75 ENDIF END ELSE: BEGIN END ENDCASE ENDIF

...展开详情
试读 69P IDL语言2014教材
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
IDL语言2014教材 17积分/C币 立即下载
1/69
IDL语言2014教材第1页
IDL语言2014教材第2页
IDL语言2014教材第3页
IDL语言2014教材第4页
IDL语言2014教材第5页
IDL语言2014教材第6页
IDL语言2014教材第7页
IDL语言2014教材第8页
IDL语言2014教材第9页
IDL语言2014教材第10页
IDL语言2014教材第11页
IDL语言2014教材第12页
IDL语言2014教材第13页
IDL语言2014教材第14页

试读结束, 可继续读6页

17积分/C币 立即下载