IDL简介
交互式数据处理开发语言IDL(Interactive Data Language)一直是应用程序开发和科学家进行可视化与分析的开发语言,因为它功能强大,简单易学,很少的几行代码就能实现其他语言很难实现的功能。它使用户的数据处理、科学研究和商业开发真正的做到快捷有效。其用户涵盖NASA、ESA、NOAA、Siemens、GE Medical、Army Corps of Engineers、MacDonald Dettwiler等众多知名研究机构和公司;广泛应用于:海洋科学、气象、遥感工程、医学、空间物理、地球科学、测试技术、信号处理、科研教育、天文学、商业等众多领域。
IDL的背景
IDL最初的原型为美国航空航天局(NASA)的一个可视化项目,由于其灵活和强大的数据分析和可视化性能,受到NASA的科学家和工程师的喜爱,进而发展成为一门独立的可视化语言。IDL的辉煌历程:
1977,IDL商业版本正式发布,NASA成为IDL的第一批用户。
1981,为VAX/VMS平台使用FORTRAN重写了IDL,不久后美国顶级的研究所和主要的大学都使用IDL来进行数据分析和可视化。
1986,IDL被用来处理哈雷彗星的影像。
1987,为UNIX平台使用C重新编写了IDL,扩展了IDL的跨平台应用。
1991,IDL用于修复哈勃望远镜,并用于修复后的数据处理。
1994,使用IDL编写的遥感软件ENVI正式发布。
1995,NASA在太空飞船中使用IDL研究紫外线放射现象,同时IDL也广泛用于地球科学、医学影像、图像处理等领域。
1998,因为帮助NASA科学家做出了重大发现,IDL被誉为NASA最近40年的“里程碑技术”。
2003,IDL6.0发布,在新版本的IDL中,提供了IDL虚拟机。用户可以使用IDL虚拟机进行免费的程序发布。同时提供了全新设计的智能工具iTools,为用户进行数据分析和可视化提供了更加方便的工具。
2004,参与火星探测计划中的测试和传感器设计,JPL的科学家利用IDL对“勇气号”和“机遇号”的数据进行分析和处理。
2005,IDL6.2发布,新增加的影像分块技术使得IDL对于大影像的处理更加得心应手。
2006,IDL6.3发布,新增加的对象导出功能,可将IDL编写的对象导出为Java/COM对象,IDL与其它语言的结合更加紧密。
2007,IDL6.4发布,提供了强大的、崭新的可视化和分析功能,并能使数据分析人员和开发者在多种软件环境下充分发挥IDL的功能。
2008,IDL7.0发布,全中文界面显示、Eclipse的强大支持、具有强大的可扩展和广阔的发展前景。7.0版本创建了全新的快速开发的平台环境,系统开发从此变得更加简单、快捷。
2010,IDL8.0发布,简化了数据分析和可视化的操作流程,编写代码和程序开发得心应手。
2012,IDL8.2发布,增加了BigTIFF的读写支持,多种视频格式文件的输出;改进了曲线渲染效果,优化了多个可视化函数;工作台支持检测源码文件的同名;同时新增ENVI扩展向导。
2013,IDL8.3发布,可以直接打印变量、获取系统剪贴板信息、支持静态方法和属性等。更新了一些函数和对象,如新增IDLUNIT类,改进KRIG2D和GRIDDATA运算效率等。图形可视化方面增加了动态交互等功能。并且简化了IDL和ESE(ENVI Services Engine)的任务构建流程。
2014,IDL8.4发布,新增数据读取与可视化函数,新增数据类型。IDL编程语言更加现代化,提供函数程序设计(Functional Programming)、静态类和方法、文件系统监视等功能支持。IDL工作台同样得到了改进,可以进行更便捷的程序调试,直观查看代码运行状态。IDL 8.4.1中,主要新增了ESE API for IDL,可以方便地在IDL中调用ENVI Services Engine的服务。
2015,IDL8.5发布,主要新增了IDL与Python的无缝桥梁,支持IDL与Python的互相调用;增加了一些全新功能的函数(如颜色选择对话框等),并对已有部分函数进行了改进。新增动态方法调用功能。快速可视化功能改进。
2016,IDL8.6发布,主要新增了面向对象的IDL Tasks,可以封装IDL程序;提供IDL Task Engine,可以将IDL功能嵌入到其他语言开发的程序或环境中。
2018,IDL8.7/IDL8.7.1发布,新增一个异步作业类(Asynchronous Job Classes),允许用户将任务在IDL主进程之外进行异步执行。新增ROUTINE_DIR函数,可以直接获取程序所在文件夹路径。增加GOES-16数据的读取与显示示例代码,WIDGET_DRAW新增滚动条事件,IDLTask版本更新等。新增了机器学习框架——IDL Machine Learning framework。新增程序包管理器(IDL Package Manager,IPM),提供创建、安装、更新和移除IDL程序包的功能。
2019,IDL8.7.2发布,新增WIDGET_BROWSER 函数,支持创建一个 Web 浏览器组件,支持HTML5、JavaScript、视频和 WebGL等。新增 FILLPLOT 函数,支持绘制两条线,并填充两条线间的区域。增加IMSL帮助文档。以及其他库更新。
2020年,IDL8.8发布,改进IDL工作台,可以切换不同主题风格;支持更多的数据格式;更新一些支持库版本。
2021年,IDL8.8.1发布,支持Macintosh M1平台,更新一些支持库版本。
IDL功能概述
IDL是面向矩阵的编程语言,完全支持对数组的直接操作,具有快速分析超大规模数据的能力,速度比传统语言如C、C++等有很大的提升。它包括了高级图像处理能力、交互式二维和三维图形技术、面向对象的编程、图形化智能工具(iTools)、OpenGL硬件图形加速功能、专业数学分析与统计工具、完善的信号分析和图像处理功能、灵活的数据输入输出方式、跨平台的图形用户界面工具包、连接ODBC兼容数据库、支持远程服务器访问数据以及具有多种外部程序连接方式,已成为数据分析和可视化的首选工具。
IDL主要功能
- 多种标准格式和自定义格式输入和输出
- 数组矩阵运算函数库
- 时间与日期处理函数库
- 错误异常处理机制
- 支持静态类与属性
- 支持函数程序设计
- 文件监视系统
- 数据远程访问
- 多线程运算
- 可视化开发环境IDE
- 用户界面构建组件库
- 信号处理与图像处理软件包
- 地图投影及转换软件包
- 小波分析工具包
- OPENGL及仿真库
- 直接图形法函数库
- 快速可视化图形函数库
- 对象图形法函数库
- 支持JSON文件创建与编辑
- 交互图形化智能工具iTools
- C,FORTRAN 等多语言标准接口
- 支持与Python的无缝互相调用
- COM兼容的ActiveX 控件和容器
- COM/JAVA对象导出模块
- 跨平台大型应用开发
- 虚拟机VM发布环境
- 功能丰富的DEMO库
- 数据库连接与管理功能
- 数值分析与统计工具包
- 支持调用ENVI Services Engine服务
IDL可扩充的工具包有:
- 数学分析与统计扩展工具包(IDL Advanced)——全面的数学分析与统计工具,集成了 IMSL(国际数学和统计学函数库)中的数百个专业的数学和统计分析函数。
- 数据库接口扩展工具包(IDL DataMiner)——数据库访问和操纵独立的API,利用它可以完成对数据库的大部分操作。
IDL的优势
IDL具有以下优势:
(1)科学数据分析及可视化
拥有IDL,用户无需编写传统程序就可以进行快速科学数据分析和可视化。这大大减少了花费在程序编写上的时间,可以将大量的精力放在数据分析上。
(2)项目申请及项目快速实施
项目应用IDL可以直接利用本身提供的丰富的处理函数,从而节省大量时间,IDL编写的程序不受平台限制,可以随意移植和共享。使用传统的语言需要数天或数周的项目,使用IDL可以在数小时内完成。
(3)商业软件开发
IDL是高效的快速程序开发语言,是开发数字图像处理和三维交互式程序的最佳选择。提供了便捷的软件发布与部署方法,支持跨平台的系统发布。
IDL工程化应用
IDL能够满足从数据访问、分析、可视化到开发、集成、共享一系列的工程化要求:
- 访问 —— 灵活的数据输入、输出方式
在科学研究中,将会使用大量不同格式的数据。IDL基本上支持各种数据格式,并提供了大量的数据读写工具,免除数据读写的烦恼,可以将大量的精力放在数据分析上。
- 分析 —— 强大的数据分析、数据统计、图像处理、信号处理分析能力
IDL集成了完善的数据分析、数据统计、图像处理和信号处理软件包。项目应用IDL可以节省大量时间。使用传统的C或者FORTRAN语言需要数天或数周的项目,使用IDL可以在数小时内完成。
IDL Advanced工具包使IDL具有了全面的数学分析并集成交互式数据分析和可视化工具,集成了 IMSL(国际数学和统计学函数库)中的数百个专业的数学和统计分析程序。每一个函数都经过了严格测试。
- 可视化 —— 先进的图形技术和OpenGL图形加速技术的二维和三维数据交互可视化能力
从简单的二维绘图、多维绘图、体积可视化、图像显示、动画,到利用OpenGL硬件加速功能进行交互式的三维图形浏览,以及支持多处理器快速进行体数据渲染,使用IDL您可以轻松获得丰富的可视化效果。
- 开发 —— 强大的多平台支持、跨平台的本地化的用户界面、全新的开发环境、提供了有效的数据管理手段
可以运行在Windows、Macintosh和UNIX等多种操作系统上,从而可以很方便地进行跨平台开发应用程序。
IDL提供一套完整的、跨平台的本地化用户界面,可以很方便地进行跨平台开发,构建符合本地平台风格的用户界面。
IDL工作台提供了Eclipse的强大支持、全中文界面显示、强大的代码管理开发和调试工具。快速构建原型应用程序,IDL的是一种解释语言,可以在个别问题上看到立竿见影的结果,同时IDL的降低了设计、编译、测试的周期。
IDL DataMiner是一个开放数据库连接( ODBC )接口,借助它IDL用户可快速访问、查询并管理ODBC兼容数据库,支持Oracle、Informix、Sybase、MS SQL Server等大型商用数据库。
- 集成 —— 灵活的外部语言接口
IDL是一个灵活的、可扩展的用于可视化、分析和开发的工具,能够轻松的与其他的软件工具集成。IDL能够将其他编程语言的代码和函数导入,也可以将IDL实现的功能集成到其他语言编写的应用程序中去。
- 共享 —— 灵活多样的程序发布方式和轻松的成果共享
你能够很容易快捷的共享IDL应用程序。IDL虚拟机(Virtual Machine),为IDL用户和软件开发人员提供了IDL应用程序发布的便捷工具。DL VM适用于所有IDL支持的平台,可以将IDL程序进行跨平台的发布。
同时针对大型的商业应用程序,IDL Runtime是一种高性价比的IDL软件发布方法,它不仅可以发布IDL程序,而且可以发布其他语言与IDL混编的软件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界