【IDL】IDL 8.4新特性介绍

news/2024/10/6 1:35:59/文章来源:https://www.cnblogs.com/gisrs365/p/18271299

IDL 8.4于2014年10月15日正式发布。此版本中新增了许多实用的功能和工具,比如数据读取与可视化、新增数据类型等。而且IDL正向着更加现代化的语言发展,比如函数程序设计(Functional Programming)、静态类和方法等。除此之外,IDL工作台本身也变得更加人性化。主要改进如下:

  • 数据读取
  • 图形可视化
  • 数据分析
  • 数据类型
  • 语言更新

1. 数据读取

  • HDF5 函数库

       更新提供对压缩格式SZIP (v2.1) 的只读支持。

  • 视频读取增强

       在之前版本中,使用 IDL 读取 FFmpeg 时会弹出错误消息,并且 IDLffVideoRead 对象初始化失败。在 IDL 8.4 版本中,如果视频或音频编码不支持时,IDL 将自动忽略并继续打开视频文件。用户可以使用新的 VERBOSE 关键字来强制 IDL 弹出错误消息提示。

  • 支持输出Geospatial PDF

       新增 IDLffGeospatialPDF 类,提供了输出图形为 Geospatial PDF 文件的功能。

2. 图形可视化

  • 新增获取代码方法

       在快速可视化中,新增 GenerateCode 方法,可以获取当前图形可视化显示风格的源代码。比如,我们可以手动修改可视化窗口中的注记、对象属性、字体、颜色、坐标轴等,然后调用 GenerateCode 方法获取当前窗口风格的源代码,从而进行重复使用。可以选择是否保存当前窗口中可视化的数据。

       示例如下,在一个窗口中绘制了一条曲线和一个柱状图。然后调用GenerateCode方法将源码输出到本地pro文件中,使用savedata关键字可保存数据到同名sav文件中。

IDL> p = PLOT(/TEST, THICK=3, COLOR='red', LAYOUT=[2,1,1])
IDL> b = BARPLOT(/TEST, FILL_COLOR='green', LAYOUT=[2,1,2], /CURRENT)
IDL> p.generateCode, 'D:\temp\mycode.pro', /savedata

       自动获取的代码如下:

  • IDLgrAxis 增强

       新增 TICKUNITS = "numeric" 和 TICKUNITS = "scientific" 两种坐标轴显示风格。

  • ERRORPLOT 新增两个属性

       ERRORBAR_LINESTYLE —— 控制 Error Bars 的线型

       ERRORBAR_THICK —— 控制 Error Bars 的线宽

  • 可视化窗口工具条

       新版 IDL 中,快速可视化窗口中新增无工具条的选项。

  • 图形输出更加平滑

       在调用 Save 和 CopyWindow 方法时,IDL 将使用反锯齿得到一个更加平滑的图像结果。

3. 数据分析

  • 新增 ALOG2 函数

       可以计算以2为底的对数。

  • FFT_POWERSPECTRUM 函数

       可以计算输入数组的傅立叶功率谱,并提供了源代码。

  • GAUSSINT 函数增强

       更新后 GAUSSINT 函数可以接收二维数组了。

4. 数据类型

  • Big Integers

       BIGINTEGER 类可以创建和操作任意大小的整型数字(例如大于64-bits的),并且可以和其他数据类型进行简单的数学计算。

IDL> b = BigInteger(2)^1279
IDL> help, b
B BIGINTEGER = 1.0407932194664400...x10^385
  • Booleans

       BOOLEAN 变量只包含了两个值:0和1,分别代表 False 和 True。

IDL> a = [0.0, 1.0, 0.0, 3.0]
IDL> b = BOOLEAN(a)
IDL> print, b
 0 1 0 1
IDL> print, json_serialize(b)
 [false,true,false,true]
  • Attributes

       可以直接所有 IDL 变量来获取其属性,比如DIM、LENGTH、NDIM、TNAME、TYPECODE、TYPENAME等。

IDL> s = findgen(3,4)
IDL> s.DIM
 3 4
IDL> s.NDIM
 2
IDL> s.LENGTH
 12
IDL> s.TYPENAME
 FLOAT
  • 静态方法(Static Method)

       现在可以使用 IDL 变量来调用指定的静态方法,提供了更现代的面向对象编程方法。

       IDL 变量支持的静态方法:

       String 字符串支持的静态方法:

       Number 数值支持的静态方法:

       Integer 整型支持的静态方法:

       Pointer 指针支持的静态方法:

       例如:

IDL> arr = [1.0:5]
IDL> arr
 1.0000000 2.0000000 3.0000000 4.0000000 5.0000000
IDL> arr.Ceil()
 1 2 3 4 5
IDL> arr.Max()
 5.0000000
IDL> arr.Mean()
 3.0000000
IDL> arr.Product()
 120.00000000000000

5. 语言更新

  • 文件夹监视系统

       新增的 FOLDERWATCH 类可以监视文件夹的变化,或当文件夹发生变化时调用用户自定义的回调函数。

这样用户就可以编写一个批处理,使用 FOLDERWATCH 监视一个指定文件夹,当文件夹内发生预想的变化时(如新增文件、文件修改或删除等),继续执行下面的处理。

       如下代码,实现了监视'D:\temp\'文件夹的功能,并使用回调函数MyCallback在IDL工作台打印文件修改状态。

       当我在监视文件夹删除和重命名某个文件时,IDL控制台提示如下:

  • 函数程序设计(Functional Programming)

       IDL 开始支持函数程序设计,类似其他编程语言。现在可以创建简单的 inline routines 用于函数编程。这些 Lambda 程序可以与这些方法搭配使用,如::Filter、::Map、::Reduce;也可以作为单独的函数或过程来调用。

       这里有几个示例:

IDL> ;求var的平方根
IDL> var = [0:4]
IDL> PRINT, var.Map(LAMBDA(n: sqrt(n)))
 0.000000 1.00000 1.41421 1.73205 2.00000
 
IDL> ;利用Filter函数求得区间内的素数
IDL> var = [2:50]
IDL> lam = LAMBDA(n:n le 3 || MIN(n mod [2:FIX(SQRT(n))]))
IDL> newvar = var.Filter(lam)
IDL> PRINT, newvar
 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
  • 代码覆盖范围

       新增 CODE_COVERAGE 函数,可以帮助 IDL 用户高亮显示执行和未执行的代码行。并整合到了IDL 工作台中,比如编辑器和剖析工具(Profiler)中。

       在IDL编辑器中编写如下函数,并保存编译。

       可以使用code_coverage函数获取执行和未执行的行号:

       同时可以打开"窗口 > 剖析工具",单击如下图的按钮,即可在IDL编辑器中使用不同颜色高亮显示代码运行情况,如绿色为执行的代码行。

  • TIMER 类改进

       TIMER 类新增两个方法:Block 和 Unblock。新版 IDL 不会自动中断回调。

  • ARRAY_EQUAL 函数改进

       新增 NOT_EQUAL 关键字,可以逆转结果。

       新增 QUIET 关键字,可以抑制所有数据类型转化时遇到的错误。

  • 新增 NOSAVE编译选项

       如果一个程序被标记了 COMPILE_OPT NOSAVE,那么将不会编译到IDL .sav文件中。

  • HASH、ORDEREDHASH、JSON_PARSE 新增 FOLD_CASE 关键字。
  • IDL_Container 类新增存储指针功能。

  • LIST 数据类型更新

       List::Sort 方法增加一种可选的比较算法进行元素的排序;

       List::Add 方法进行了优化,性能提高。

  • 图形支持Unicode字符,最多8个十六进制数字。
  • ISA 函数新增COMPLEX、FLOAT、INTEGER、STRING关键字。

  • JSON_SERIALIZE 功能改进

       当使用 JSON_SERIALIZE 转换 IDL 结构体时,可以设置 LOWERCASE 关键字,这样可以使得 JSON 字符串结果中的 Tag Names 为小写。

       新版 JSON_SERIALIZE 转换字节型数值为整型时,不会将非0值的字节型全部转换为ture了,保证数据不会丢失。

  • 库更新

       cURL 库更新到版本 7.36.0*

       OpenSSL 库更新到版本 1.0.1g*

       注:IDL 8.4 将是最后一个包含 Live Tools 函数的版本。在 IDL 8.4 之后的版本中将不再提供。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/732204.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁盘离线数据恢复

服务器数据恢复环境: 一台服务器中组建一组raid5磁盘阵列;上层操作系统为linux redhat,部署OA系统,后端数据库为oracle。服务器故障分析检测: raid5中有2块磁盘先后掉线,服务器崩溃。硬盘无明显的物理故障和同步表现。服务器数据恢复过程: 1、将故障服务器中所有硬盘做好…

HP EVA系列存储数据恢复原理

服务器数据恢复环境(EVA系列存储)介绍: EVA系列存储是一套"虚拟"磁盘阵列存储解决方案,其结构不同于基于RAID的普通存储。EVA系列存储常见故障: 1、RSS中多个磁盘掉线,超过冗余保护级别规定的数量。 2、加入新磁盘后迁移数据时,新磁盘存在物理故障。 3、误删除…

DELL PowerEdge服务器数据恢复

服务器数据恢复环境: 一台DELL PowerEdge服务器;6块SCSI硬盘组成RAID5;操作系统是LINUX REDHAT。 服务器故障检测分析: 服务器运行时有一块硬盘离线,另一块硬盘掉线服务器崩溃。如果有两块硬盘离线,RAID5无法通过运算提供完整数据块,阵列便会崩溃。服务器数据恢复过程:…

【IDL】 开发环境(工作台)的语言切换万法

IDL开发环境(工作台)默认会根据系统语言自动设置。一般情况下,我们使用中文操作系统,那么IDL工作台的语言同样默认为中文。但是,有些童鞋更喜欢用英文的开发环境,所以这里将切换方法分享一下。 使用此方法可以在任意语言之间切换。如英文操作系统使用中文IDL、中文操作系…

RAID硬盘离线数据恢复

服务器数据恢复环境: 一台故障服务器,共有16块FC硬盘,容量600G。存储前面板8号和10号硬盘亮黄灯,系统无法启动,数据库无法使用。服务器故障检测分析: 通过连接到服务器上查看当前存储状态,服务器报告逻辑卷状态失败,发现6号盘报告“警告”,8号和10号盘报告“失败”,系…

如何将pdf转换成图片?分享3个方法,快学起来!

日常工作中,我们通常会接受到pdf文件格式的图片,如果我们需要将他们转换成图片,具体需要pdf怎么转换成图片呢?下面我们一起来看看吧。 一、使用在线转换工具 这种方法是最简单、最快捷的方式之一。有很多在线工具都可以免费将PDF转成图片,例如smallpdf中文版、speedpdf、i…

EMC Isilon服务器数据恢复

服务器数据恢复环境: 一台EMC服务器,硬盘接口为SATA硬盘,容量为3T。在一次操作中误删除虚拟机,其中包括数据库、MP4、AS、TS类型数据。服务器数据恢复故障检测分析:需要进行数据恢复的虚拟机恢复。 服务器数据恢复过程: 1.通过文件的Inode进行唯一ID的提取工作。 2.对所有…

OOP第三次Blog作业

前言 知识点 这两次的pta作业对于类之间的设计要求很高,很考验我对于类的设计。在这两次的pta作业中,都以继承作为背景,考察了对于继承中相关概念的理解。例如使用继承来扩展上一次的程序,同时加入一些特有方法和重写父类里面的一些方法;多态的使用,使用多态来调取方法时…

堆栈

堆和栈 JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是: 1:寄存器 2:本地方法区 3:方法区 4:栈 5:堆 1.栈(stack) 基本数据类型、局部变量,对象引用,函数调用的现场都是存放在栈内存中的,用完就消失 2.堆(heap) new创建的实例化对象及数组,是…

【IDL】图形保存图片时文字变黑块的临时解决方法

IDL 8.0版本开始新增了一套快速可视化图形函数,非常易用和美观。 可在IDL帮助中的如下位置找到说明。但是在最近两个版本的IDL中出现了一个奇葩BUG,当把图形内容通过save方法保存为png等图片时,标题和文字全部变成了黑色方块。如下图所示:于是给ENVI技术支持反馈,他们回复…

使用IDL进行氚羽流监测(一)——对研究区和环境进行建模

本系列环境监测示例探讨了 IDL 帮助您表征环境条件、执行分析和创建可视化的方法。 在本例中,我们将查看一个模拟核废料处置场的周围环境。核反应堆的废料氚被堆积在靠近一条主要河流的地下储罐和储水井中。这些储罐或储水井随后发生泄露,现在一股受氚污染的水流正穿过沉积物…

使用IDL进行氚羽流监测(五)—绘制污染物扩散带等值线图

此项部分研究内容是确定氚污染带的当前范围和预测其未来范围。文件 "MonitoringWells.csv" 包含了氚浓度的当前数值(T0)以及使用算法模拟的未来不同时间点的氚浓度数据。在本示例中,使用对应于2030年的污染带范围的 T3 列数据。 使用文件 "MonitoringWells.c…