浏览器不支持图片格式

IDL新特性

新增功能

自动检查更新

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

IDL Tasks

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

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

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

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

查看"Custom Tasks"专题,获取更详细的帮助内容

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'

为了更好地兼容性,新版本仍然可以使用旧的方式。查看IDL帮助中的"Using Formatted Input and Output"专题,以获取更详细信息。

图形字体改进

新版本中可视化函数中的字体默认为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。查看"IDL Notebook Kernel"专题获取详细信息。

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

正常情况下,当我们编译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版本。