当前您所在的位置:首页>新闻中心>新品发布
新品发布
行业动态
营销活动

IDL:交互式数据处理开发语言|应用程序开发和科学家进行可视化与分析的首选语言!

发布时间:2019/08/02 浏览量:2514

IDL新特性

新增功能

 

自动检查更新

IDL支持在启动时自动检查更新。如果有新版本,IDL将在控制台输出提示。此配置项可以在“窗口”>“首选项”中进行开关,或使用 IDL_UPDATE_CHECK 配置。

 

IDL Tasks

IDL Tasks是面向对象的,可以封装IDL程序。

 

对于用户来说,IDL Tasks 提供了如下技术优势:

 

IDLTask对象包含了所有输入输出参数,能够方便访问

通过IDLQueryTaskCatalogTask可以查询可用的IDLTask;

能够方便了解输入参数及其格式要求;

支持验证输入参数的合理性,包含数据类型、可选项、范围以及其他附加约束。

 

对于开发者来说,IDL Tasks提供了如下技术优势:

 

编写新的程序,允许IDLTask验证输入参数,而不需要自己编写额外代码;

可以方便地将现有的程序转换为IDLTask,只需要创建一个task文件来配置程序;

提供每个参数的信息,如方向(输入或输出)、数据类型、可选项、有效范围等;

IDL Tasks可以被其他编程语言调用。

 

如果有程序在使用IDL Task Engine,并且希望获取task信息,可以使用IDLQueryTaskTask和IDLQueryAllTasksTask。

 

IDL Task Engine

除了引入IDLTask,同时提供了一个IDLTask Engine,支持在命令行模式中运行IDLTasks。可以将IDL功能嵌入到其他语言开发的程序或环境中。这些环境必须能够处理standard streams (stdin, stdout, and stderr)。

 

 

NCDF_PARSE

现在提供了一个新的函数NCDF_PARSE,能够解析NetCDF-3 或 NetCDF-4文件,并返回一个HASH结构,包含了文件的所有信息和数据。

 

 

NCDF_IS_NCDF

现在提供了一个新的函数NCDF_IS_NCDF,能够识别文件是否为NetCDF-3格式。

 

 

全新许可方式

从ENVI5.4/IDL8.6开始,将采用Flexera许可管理技术,用户可以方便的进行许可授权和管理,可根据需要选择使用单机版或者浮动版本,这种许可管理机制比之前的灵活便捷。

 

 

更新内容

C Printf-Style Format Strings

 

当调用IDL的输入输出程序时使用了C printf-style format string,现在可以直接指定字符串,而不需要%符号。例如:

 

PRINT, INDGEN(3), FORMAT = '(%"The values are: %d %d %d")'

 

现在可以这样使用:

PRINT, INDGEN(3), FORMAT = 'The values are: %d %d %d'

 

为了更好地兼容性,新版本仍然可以使用旧的方式。

 

图形字体改进

新版本中可视化函数中的字体默认为DejaVuSans。使得绘制曲线和其他可视化图形时的字体更加漂亮。如果需要,可以使用FONT_NAME属性修改为其他字体,之前的默认字体为Helvetic。可以查看PLOT、TEXT或其他可视化函数中的说明。

 

 

新的TrueType字体

IDL提供了全新的4个字体:DejaVuSans Italic、DejaVuSans Bold、DejaVuSans Bold Italic和一个自定义的DejaVuSymbol字体。DejaVuSymbol字体包含了很多有用的数学符号。这些字体可以被用在直接图形法、对象图形法和新的可视化函数中,同时可以被Embedded Formatting Commands使用。查看IDL帮助中的 "Using TrueType Fonts" 专题查看新的DejaVuSymbol 字体。

 

改进的TeX-like数学符号

TEXT函数使用新的DejaVuSymbol 字体来显示数学符号。

 

Python-to-IDL Bridge错误处理

使用Python-to-IDL bridge,当在IDL命令行中遇到格式错误或程序错误时,新版本将抛出一个IDLError异常,并停止执行python脚本。可以使用标准的 Python try/except block 来获取这些错误。查看IDL帮助中的 "Python to IDL Bridge" 获取详细信息。

 

注:为了使用新的错误处理功能,在导入idlpy到Python时,需要导入所有的module,而不仅仅是IDL class:

 

 

IDL IPython Notebook 支持 Magic Commands

IDL IPython (Jupyter) Notebook支持magic commands,控制notebook行为。可用的命令支持我们嵌入HTML,执行任意的Python代码,从inline切换到windowed graphics。

 

 

编译和恢复代码时支持忽略已存在程序

正常情况下,当我们编译pro代码或restore save文件时,已存在程序将被替换为新加载的程序。这个特性在一些情况下会造成异常错误,比如当ENVI在运行时,而restore进来的程序里包含了旧版代码。现在可以通过使用SKIP_EXISTING关键字来避免覆盖已存在程序。RESTORE、RESOLVE_ROUTINE和RESOLVE_ALL均支持SKIP_EXISTING关键字。

 

 

SYSTIME新增关键字

SYSTIME函数新增ELAPSED关键字,代替了原有的Elapsed Seconds参数。SecondsFlag 和 ElapsedSeconds 参数被废弃,但是旧版本程序依然可用。新编写代码中建议使用SECONDS和ELAPSED关键字。

 

高精度可重复Timer

现在可以创建定时器(timer),并按照精确的循环时间进行重复响应,而不必担心IDL花费在处理timer回调函数的时间。查看Timer.Set中的REPEAT关键字获取详细信息。

 

 

库更新

cURL库更新到7.49.1版本;

cURL中的OpenSSL库版本更新到1.0.2h;

Python Bridge已支持Python 3.5版本。

 

 

北京哲想软件有限公司