1、 和一个老乡聊天,她在做什么?答曰处理数据。无心地问了一句,你们用什么处理数据呢,答曰: IDL、 MatLab. 出于职业地敏感,我详细地问了一下 IDL 的一些情况,不问不知道,一问吓一跳,或许是咕噜寡闻,或许是隔行如隔山,如此强大的软件,我竟然不知道了。实在惭愧!(以前觉得,在数据处理方面,SARS, SPSS, Matlab, Mathematic,Maple,Fortran 几乎可以打遍天下!)从网上找了些 IDL 的资料,恶补一下。1、IDL 是什么?美国 RSI 公司(现并入 ittvis编者注)的旗舰产品IDL(Interactive Data Language)交互式数据语言
2、是进行二维及多维数据可视化表现、分析及应用开发的理想软件工具。作为面向矩阵、语法简单的第四代可视化语言,IDL 致力于科学数据的可视化和分析,是跨平台应用开发的最佳选择。早在 1982 年 NASA 的火星飞越航空器的开发就使用IDL 软件,到现在 IDL 已经被列为国外许多大学的标准课程,IDL 使科研人员无须编写传统程序就可直接研究数据IDL(Interface Definition Language)即接口定义语言,是 CORBA 规范的一部分,是跨平台开发的基础。IDL 提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数据类型。可变化 IDL 基本类型 整数类型 OMG IDL
3、 摒弃 int 类型在不同平台上取值范围不同带来的多义性的问题。常数定义常数可以是整数、字符、浮点数、字符串、Boolean、octet 或枚举型,不能是 any 类型或用户定义的类型。OMG IDL 数组类型 IDL array 和 sequence,可以轻易地被映射到实现语言中。序列可以包含所有类型的元素,不管是基本类型还是用户定义的类型。2、IDL 语言是什么?简单的说,IDL 是 VC、VB、JAVA、FORTRAN、MATLAB、OPENGL 等语言的集成。 IDL 语言与大型图形和 GIS 应用软件相距近,应用 IDL 可以快速的开发出功能强大的三维图形图像处理软件和三维 GIS
4、应用系统。从本质上讲,OMG IDL 接口定义语言不是作为程序设计语言体现在 CORBA 体系结构中的,而是用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。OMG IDL 文件描述数据类型和方法框架,而服务对象则为一个指定的对象实现提供上述数据和方法。 OMG IDL 文件描述了服务器提供的服务功能,客户机可以根据该接口文件描述的方法向服务器提出业务请求。在大多数 CORBA 产品中都提供 IDL 到相关编程语言的编译器。程序设计人员只需将定义的接口文件输入编译器,设定编译选项后,就可以得到与程序设计语言相关的接口框架文件和辅助文件。IDL 文件应用过程如图 1 所示。 图 1
5、OMG IDL 文件编译过程3、IDL 语言能干什么?由于其强大的功能和独特的特点,IDL 语言可以应用于任何领域的三维数据可视化、数值计算、三维图形建模、科学数据读取等功能中。概括说来,在地球科学(包括气象、水文、海洋、土壤、地质、地下水等)、医学影像、图像处理、GIS 系统、软件开发,大学教学,实验室,测试技术,天文,航空航天、信号处理,防御工程,数学统计及分析,环境工程等很多领域,IDL 语言都可以得到广泛而又深远的应用。采用 OMG IDL 这样的说明性语言,其目的在于克服特定编程语言在软件系统集成及互操作方面的限制,这正是 CORBA 的诱人之处,同样也体现出采用 CORBA 构造分
6、布式应用程序在网络时代的强大生命力。OMG IDL 已经为 C、C+、Java 等主要高级程序设计语言制定了IDL 到高级编程语言的映射标准。项目开发人员可以根据需要选择自己最熟悉的编程语言来独立开发基于 CORBA 的应用,而对软件系统的互操作能力不产生影响。4、IDL 已干出了什么?目前应用 IDL 语言,已经开发出了 ENVI、IMAGIS、RiverTools、医学等成熟产品。具体的应用实例也非常多,如在 2000 年澳大利亚悉尼奥运会综合预报系统、美国国家环境卫星数据和信息服务中心的厄尔尼诺现象分析等工作中得到了成功的应用。作为面向矩阵、语法简单的第四代可视化语言,IDL 致力于科学
7、数据的可视化和分析,是跨平台应用开发的最佳选择。它集可视化、交互分析、大型商业开发为一体,为用户提供完善、灵活、有效地开发环境。OMG IDL 的语法规则 1. OMG IDL 文件举例 module Compute typedef double radius; typedef long times; interface PI double getResult( in radius aRadius, in times time); 上述接口定义文件主要用于客户端向服务对象提出请求:计算 值。因此,模块中定义了一个方法 getResult(),以圆的直径(aRadius)和迭代次数(times)
8、作为该方法的输入参数。 2. OMG IDL 词法规则 OMG IDL 采用 ASCII 字符集构成接口定义的所有标识符。标识符由字母、数字和下划线的任意组合构成,但第一个字符必须是 ASCII 字母。IDL 认为大写字母和小写字母具有相同的含义,例如 anExample 和 AnExample 是相同的。 与 C+和 Java 类似,采用以“/*”开始,以“*/”结束来注释一段代码,以“/”开始注释从“/”开始直至行尾的所有内容。 另外,IDL 保留了 47 个关键字,程序设计人员不能将关键字用作变量或方法名。需要注意的是关键字的大小写,例如: typedef double context;
9、 /错误:定义的变量 context 是关键字 typedef double CONTEXT; /错误:CONTEXT 与关键字 context 冲突3,接口(interface) 接口作为服务对象功能的详细描述,封装了服务对象提供服务方法的全部信息,客户对象利用该接口获取服务对象的属性、访问服务对象中的方法。 接口用关键字 interface 声明,其中包含的属性和方法对所有提出服务请求的客户对象是公开的,如下例: interface JobManager readonly attribute string FirstName; attribute string status; string
10、 QueryJobStatus( in long Number, out string property); 5、 IDL 在数字信号与图像处理的优势: 1.高级的智能工具箱 iTools(intelligent tools)的出现是 IDL6.0 向易用性和易扩展性迈出的重要一步。iTools 是由一批工具箱组成,其中包括 iPlot、iSurface、iContour、iImage、iVolume 等等。IDL 使用者可以通过鼠标进行拖放即可完成数据的可视化以及分析工作。 2.极高的运算效率 IDL 采用面向矩阵的技术,具有高效编程特点的同时,自动支持多 CPUs 机制,可以大大提高计算速
11、度。另外,由于 IDL 对于数据类型的要求比较灵活,可以避免 Matlab 中强制 64Bit 参与计算的瓶颈,使得 IDL 更加适用于工程计算和相关软件的开发。 3.支持海量数据随着计算机应用水品的不断提高,人们数据量的要求也在不断提高。一些朋友反映说好像 IDL 对于开辟矩阵的大小有些置疑,这里我需要补充一下。大部分朋友是受了硬件厂商的错觉,硬件厂商宣称自己的计算机能够有多大的内存,实际上是指内存的管理而不是说明能够一次开辟这么大的矩阵。并且,还有一些操作系统方面的限制。举例说明,Windows 系列都是 32 位的操作系统,一次性最大开辟内存是 2G,除了系统本身占用资源外,最多能够开到
12、 1.21.5G就非常不错了,因此,由此看来,IDL 在利用内存上还是不错的。如果在 64 位的操作系统上,问题就会得到缓解。有人曾经在 Linux 上测试,利用 IDL 开辟 4G 的矩阵没有问题。由此完全客服了数据量的瓶颈限制和分块读取的麻烦。 4.灵活的外部语言接口做为高级的语言工具,IDL 提供丰富而灵活的语言接口。可以与 C、C、Fortran、VB、 Java、VC 等商业开发平台进行相互调用,尤其是 IDL 中 Java Bridge 技术,可以在 IDL 编程环境中直接创建和管理 Jave 的对象。与此同时,IDL 还可以直接调用 IMS 以及 Lapack 等算法库,使得科学
13、计算与分析更为方便快捷。同时,IDL 还提供数据库的标准接口,可以对各种大型商业数据进行管理以及的高级应用开发。IDL 语言数据类型有什么?(1)基本数据类型:OMG IDL 基本数据类型包括 short、long 和相应的无符号(unsigned)类型,表示的字长分别为 16、32 位。 (2)浮点数类型:OMG IDL 浮点数类型包括 float、double 和 long double 类型。其中 float 表示单精度浮点数,double 表示双精度浮点数,long double 表示扩展的双精度浮点数。 (3)字符和超大字符类型:OMG IDL 定义字符类型 char 为面向字节的码
14、集中编码的单字节字符; 定义类型 wchar 为从任意字符集中编码的超大字符。 (4)逻辑类型:用 boolean 关键字定义的一个变量,取值只有 true 和 false。 (5)八进制类型:用 octet 关键字定义,在网络传输过程中不进行高低位转换的位元序列。 octet 是 8 位类型。因为保证了 octet 在地址空间之间传送时不会有任何表示更改,因此这就使它变成了一种非常重要的类型。这就表示您可以发送二进制数据,并且知道当将它打包时,它的形式仍然相同。其它每种 IDL 类型在传输时都有表示变化。例如,根据 IOR 代码集信息的指示,char 数组会经历代码集转换。而 octet 数
15、组却不会。(6)any 数据类型:引入该类型用于表示 OMG IDL 中任意数据类型。 (7) 常量 OMG IDL 用 const 关键字声明一个常量,用于模块(module)或接口(interface)中定义保持不变的量,如: const double PI = 3.1415926; 在 IDL 中,可以定义 long、unsigned long、unsigned short、char、boolean、float、double、string 类型的常量。(8)结构类型: typedef long GoodsNumber; struct GoodsNumber number; string
16、name; float price; (9)联合类型: union stockIn switch( short ) case 1: stocker : long; case 2: goodsName1 : string; case 3: goodsName2 : string; (10)枚举类型: enum GoodsStatus GOODS_SALED, GOODS_INSTOCK; (11) 数组类型 OMG IDL 的数组类型提供了多维定长、统一数据格式的数据存储方式数组。每一维的长度必须在定义时给定,所有数据单元必须存储相同类型的元素。如下例定义一个长度为 20100 的整数数组: t
17、ypedef long aDimension20100; (12)模板(template)类型 OMG IDL 提供两种类型的模板: (13)序列(sequence)类型: 用该方法定义长度可变的任意数值类型的存储序列,通常在定义时可以指定长度,也可以不指定,如: typedef sequence aSequence; /长度定义为 80 typedef sequence anotherSequence; /长度不定 字符串(string)序列: 同样对于字符串序列类型,也有两种定义方式: typedef string aName; /长度定义为 80 typedef string anoth
18、erName; /长度不定附:以下来自 CSDN 博客:http:/ IDL-Interactive Data LanguageIDL 是一种数据分析和图像化应用程序及编程语言,先由美国 ITT 公司所有。最初在七十年代后期用于帮助科学家分析火星探险卫星发回的数据,将浩瀚的数据转换为图形。从此后,IDL 得到广泛运用,使用者日众,呈几何级别增长。IDL 使用者可以迅速且方便地运用此软件将数据转换为图象,促进分析和理解。通过软件转化的图像既可以是简单色彩,也可以是全色三维图像和模型。一。 IDL 开发环境IDLDE 是用户快速编写、测试并调试代码的最佳环境,用户可以在该环境中方便地进行应用开发。
19、IDLDE 具有完善的代码编译、调试环境。IDLGUIBuilder 可以迅速开发跨平台的用户图形界面(GUI),而无需熟悉 IDL 控件编程知识。用户可以拖放式建立图形用户界面 GUI,非常灵活、快速地产生应用程序的界面。IDL GUIBuilder 已被集成到 Idl 开发环境中(IDLDE)。用户还可方便地输出 project,生成可执行文件。二。 灵活的数据输入和输出IDL 是完全面向矩阵的,因此它具有快速分析超大规模数据的能力。IDL 可以通过灵活方便的 I/O 分析任何数据。可以读取和输出任意有格式或者无格式的数据类型,支持通用文本及图形数据,并且支持在 NASA、TPT、NOAA
20、 等机构中大量使用的 HDF、CDF 及 netCDF等科学数据格式,以及医学扫描设备的 DICOM 标准格式。IDL 还支持字符、字节、16 位整型、长整型、浮点、双精度、复数等多种数据类型。从 IDL5.5 起还可以支持 MrSID 压缩数据格式。三。 IDL快速实现可视化IDL 支持 OpenGL 软件或硬件加速,可加速交互式的 2D 及 3D 数据分析、图像处理及可视化,除了保留传统的直接图形法外,IDL 还采用了先进的面向对象技术;可以实现曲面的旋转和飞行; 用多光源进行阴影或照明处理;可观察实体(Volume)内部复杂的细节;一旦创建对象后,可从各个不同的视角对对象进行可视分析,而
21、不用费时地反复重画。IDL具有强大的数据分析能力,从 IDL5.5 起支持多进程运算,IDL 带有完善的数学分析和统计软件包,提供强大的科学计算模型,支持 IMSL 函数库。它的图像处理软件包提供了大量方便的分析工具、地图投影变换软件包,使您开发 GIS 易如反掌。IDL 提供了可缩放的 TrueType 字体,可以注记中文;能将结果存为标准图像格式或PostScript 格式,并尽可能地使图像质量最优化。例如: 2D 绘图等直线分析四。外部语言接口IDL 支持 COM/ActiveX 组件,可将您的 IDL 应用开发集成到与 COM 兼容的环境中。从Visual Basic、Visual C
22、+等访问 IDL,还可以通过动态连接库和 COM 组件方式在 IDL 程序里调用 C 、Fortran 等程序。用 IDL DataMiner 可快速访问、查询并管理与 ODBC 兼容的数据库,支持 Oracle, Informix, Sybase, MS SQL 等数据库。可以创建、删除、查询表格,执行任意的 SQL 命令,读取/设置/查询/增加/删除记录等操作。例如:图像和信号处理3D、4D 曲线和曲面分析三维体数据分析IDL 的小波变换工具包,主要用于信号处理和图像处理、去除噪声、图像压缩、特征提取、提取图像细节、其信息量损失比 FFT 小得多。五。应用领域IDL 为用户提供了可视数据分
23、析的解决方案,早在 1982 年 NASA 火星飞越航空器的开发就使用了 IDL 软件。IDL 使科学家无须写传统程序就可直接研究数据。IDL 还被广泛应用于地球科学、医学影像、图像处理、软件开发、大学教学、实验室研究、测试技术、天文、信号处理、防御工程、数学分析、统计等诸多领域。六。 广泛的支持平台:Microsoft Windows 95/98/2000Microsoft Windows NT(x86/Alpha)Open VMSSunOSSolarisSolaris X86AIXDigital UNIXHP-UXIRIXLinux(Intel x86)MacOS2。 接口定义语言(Int
24、erface Definition Language)的缩写,使用 Java(TM)编写的 API 提供基于标准的和 CORBA 的交互性和连接性。Used to describe “interfaces“similar to RPC .x fileLike a contractDefines protocol to access objectsBuilds on OOP principle of encapsulationClear boundary between implementation and interfaceWell-specified, Language-independen
25、tinterface specifies names and methods that clients can use (invoke)same lexical rules as C+ syntaxIDL modules logical grouping of interface and type definitions defines naming scopeIDL interface methods that are available in CORBA objects implementing the interface inheritance using : for example i
26、nterface Z inherits interfaces A and B interface Z:A,B ;IDL methods specify signatures parameters are labeled as in, out and inout one way indicates that client will not be blocked when invoking this methodthese methods use maybe invocation semantics raises: user-defined exceptions以下来自 http:/ 语言是什么?
27、IDL 语言的英文全称是 Interactive Data Language。简单的说,IDL 是 VC、VB、JAVA、FORTRAN、MATLAB、OPENGL 等语言的集成。1、IDL VC 本文来 GIS 公园从菜单的定制、消息的传递、类的定义与继承等方面来说,IDL 如同 VC 一样具备了强大的功能。2、IDLVB从可视化界面的设计、语言的通俗易懂、编程的入门等方面来说,IDL 如同 VB 一样,让初学者心旷神怡。3、IDLJAVA GIS 公园-GIS 专业网站从跨平台的移植来说,IDL 的功能与 JAVA 一样强大。应用 IDL 开发的产品,只要微不足道的工作就可以在各平台之间任
28、逍遥。4、IDLFORTRAN FORTRAN 语言是科学计算领域一门最普遍的语言,是科学家最为广泛应用的语言。从函数、子程序的调用、数据传递、语言风格、语言组织等来说,IDL 语言与 FORTRAN 则是如此的相像,见到了 IDL,你就会想起 FORTRAN 语言。 本文来 GIS 公园5、IDLMATLAB 本文来 GIS 公园IDL 语言象 MATLAB 一样,提供了大量封装和参数化了的数学函数,为科学计算插上了强大的翅膀。6、IDLOPENGLIDL 的提供了丰富的二维、三维图形图像类,其功能可与 OPENGL 媲美,而且其封装好的图形函数类的编程功能远超过 OPENGL 函数库。同时
29、 IDL 又是如此完美的 ActiveX 控件,在 VB、VC 中通过 ActiveX 控件技术能完整的再现 IDL 的丰富而又巨大的功能。此外,从另一种意义上说,IDL 语言与大型图形和 GIS 应用软件相距又是如此之近。应用 IDL 可以快速的开发出功能强大的三维图形图像处理软件和三维 GIS 应用系统。 本文来 GIS 公园二、IDL 语言能干什么?由于其强大的功能和独特的特点,IDL 语言可以应用于任何领域的三维数据可视化、数值计算、三维图形建模、科学数据读取等功能中。概括说来,在地球科学(包括气象、水文、海洋、土壤、地质、地下水等)、医学影像、图像处理、GIS 系统、软件开发,大学教
30、学,实验室,测试技术,天文,航空航天、信号处理,防御工程,数学统计及分析,环境工程等很多领域,IDL 语言都可以得到广泛而又深远的应用。三、IDL 已干出了什么?目前应用 IDL 语言,已经开发出了 ENVI、IMAGIS、RiverTools、医学等成熟产品。具体的应用实例也非常多,如在 2000 年澳大利亚悉尼奥运会综合预报系统、美国国家环境卫星数据和信息服务中心的厄尔尼诺现象分析等工作中得到了成功的应用。我们的团队应用 IDL 语言,已开发了功能非常强大的真三维地质分析系统 AutoDig,能够直接对简单的地质数据,或其它带层次性的数据实现科学的、完整的三维建模;同时也提供真三维显示功能,不仅能对三维体实现任意的旋转、放大、缩小,而且也能实现交互式的真三维切割功能。本文引用地址: http:/