IDL9.1新功能

文摘   2024-10-22 08:31   北京  

IDL 9.1版本具有以下新增功能和更新:

新增功能:

  • Windows 小部件的深色模式

  • 球谐变换

  • GAUSS_QUAD_LEGENDRE 功能

  • 读取和转换 float16/binary16 半精度浮点数

  • 命令行进度条

  • IDL_HASHVAR 功能

  • 新的 SVG 图标

  • RENDER_SVG 功能

  • RENDER_ICON 功能

  • SVG_ICON_BROWSER 例程

更新功能:

  • VS Code 的 IDL 扩展

  • HDF5 可以处理空数组

  • HttpRequest 进度条

  • IDL_String::替换新的 Count 参数

  • 对 NaN 和 Infinity 值的 JSON 支持

  • LEGEND 填充颜色

  • MapContinents Shapefile

  • 多行工具提示

  • PRINT/PRINTF 新的 NEWLINE 关键字

  • Shapefile 增强

  • TS_SMOOTH新的 NAN 关键字

  • WIDGET_BROWSER 支持

  • WIDGET_LABEL 和 WIDGET_TEXT 文本和背景颜色

  • WIDGET_PROPERTYSHEET Top Header 关键字

  • WIDGET_TEXT 对齐关键字

  • WIDGET_TEXT FRAME = 0

  • WRITE_PNG 压缩关键字

  • Dataminer 安装


新功能


No.1

Windows小部件的深色模式

在 Windows 上,IDL 小部件现在支持深色模式主题。您可以使用新的 IDL 首选项IDL_THEME 更改小部件主题,该首选项可以设置为 0 表示浅色模式(默认),设置为 1 表示深色模式。可以使用 IDL Workbench 中的首选项对话框或使用 PREF_SET 例程来设置主题首选项。新的只读系统变量 !THEME允许您确定首选项的当前值。

一些一般说明:
  • 在Windows 上,所有 IDL 小部件应用程序(包括ENVI)都将遵循主题设置。

  • 如果您更改主题,则必须重新启动 IDL 才能使更改生效。

  • IDL 小组件主题独立于 Windows 系统主题设置。

  • IDL Workbench 有自己的主题设置,与此设置无关。

  • 直接图形窗口和对象图形窗口中的图形不受影响。

  • Linux和 Mac 平台将默认忽略主题首选项,并始终使用浅色模式。

No.2

球谐变换

IDL 现在具有用于执行正向和逆向球谐变换的内置函数。

SPHERE_HARM_FORWARD 函数使用 Gauss-Legendre 算法来计算球面坐标网格上二维输入数组的正向球面谐波变换。SPHERE_HARM_INVERSE 函数计算逆向球谐变换,并在球面坐标网格上返回结果。正向变换和逆向变换都是用 C 代码编写的,并且是多线程的,以实现最佳性能。

球谐变换是在全球数据集上分析波型的有用工具,广泛用于气象学和海洋学,以及地磁场和太阳磁场的研究。正向和逆向变换对于应用频谱滤波器也很有用。在这种情况下,执行正向变换,然后对频谱系数应用滤波函数,之后执行逆变换。

除了转换函数之外,IDL 现在还有两个新例程:SPHERE_HARM_FILTER 和 SPHERE_HARM_KERNEL。这些例程可用于对球面数据集进行光谱过滤,以保持波数长于特定阈值。

例如,这里我们加载一些 1884 年12 月 1 日的气温数据,然后计算 T63 截断:

restore, filepath('reanl20v3_1dec1884_512x256dbl.sav', $  subdir=['examples', 'data'])T63 = sphere_harm_filter(A, 63)im = image(A, rgb_table = 75, layout=[1, 2, 1], $  dim=[550, 580], min = -30, max = 30)  im = image(T63, rgb_table = 75, /current, $  layout=[122])
这些例程基于 Mark Miesch、Marc DeRosa 和 Gilbert P. Compo 编写的原始变换和过滤例程,并经许可使用。有关更详细的示例以及数据来源和参考,请参阅 SPHERE_HARM_FORWARD。

No.3

GAUSS_QUAD_LEGENDRE 功能

新的 GAUSS_QUAD_LEGENDRE 函数计算高斯正交积分的 x 值(横坐标)和加权系数,其中 x 值是 N 阶勒让德多项式(Legendre polynomial)的根。GAUSS_QUAD_LEGENDRE基于剑桥大学出版社出版的 Numerical Recipes in C: The Art of Scientific Computing(第二版)第 4.5节中描述的gauleg例程,并经许可使用。

No.4

读取和转换 float16/binary16 半精度浮点数

半精度浮点数的长度为 16 位,而单精度浮点数的长度为 32 位,双精度浮点数的长度为 64 位。这些数字的标准格式称为 float16(或 binary16),基于 IEEE 754 标准。尽管 IDL 没有原生支持16 位浮点数,但 IDL 现在可以读取和转换 float16 数字。READ_BINARY 函数有一个新的 FLOAT16 关键字,它会自动从文件中读取 float16 数字并将其转换为 32 位浮点数。此外,您还可以使用新的 FLOAT16_DECODE 和 FLOAT16_ENCODE 函数将 16 位无符号整数(float16 格式)与 32 位浮点数相互转换。

例如:
a = uint([0, 1, 0x8001, 0x3ff, 0x3c00, 0xbc00, 0x7bff, 0x7c00, 0xfc00, 0x7fff])b = float16_decode(a)help, bprint, b
IDL 打印:
B    FLOAT  =  Array[10]0.00000   5.96046e-08   -5.96046e-08   6.09756e-05   1.00000   -1.00000   65504.0   Inf   -Inf   NaN

现在转换回来:

c = float16_encode(b)help, cprint, c, format='(10z)'

IDL 打印:
C    UINT  =  Array[10]0   1   8001   3ff   3c00   bc00   7bff   7c00   fc00 7fff
有关详细信息,请参阅 FLOAT16_DECODE、FLOAT16_ENCODE 和 READ_BINARY。

No.5

命令行进度条

新的 CLI_Progress 类在 IDL Workbench 控制台中或在终端中运行 IDL 时实现命令行进度条。例如:
length = 1000 ; for example, file length in bytescli_progress.initialize, title = 'Download', maximum = length, /remainingfor i=0,length do begin & $  cli_progress.update, i & $  wait,0.01 & $endfor

在这里,进度条将从 0% 缓慢前进到100%,类似于:
Download  46% [##################----------------------] 6m:27s
CLI_Progress 类具有用于控制条宽、字符、剩余时间以及标题和文本消息的选项。您还可以构建一个“乒乓”选取框进度条,其中进度指示器沿进度条来回弹跳。例如:
CLI_Progress.Initialize, ping_pong = !true, complete_char = "<IDL>"for i = 0,114 do begin & $  CLI_Progress.Update & $  wait, 0.02 & $endfor

这个词来回跳动:
[-----------------------------------<IDL>-----]

有关更多信息,请参阅 CLI_Progress 或访问 CLI_Progress 示例页面。

No.6

IDL_HASHVAR 功能

IDL 有一个新的 IDL_HASHVAR 函数,该函数接受任何 IDL 变量并返回表示该值的标量 32 位哈希代码。IDL_HASHVAR 函数用于创建简单的哈希码值,可用于将任意值转换为具有均匀分布的 32 位(四字节)哈希码。它还可以用于确定两个字符串是否相同,因为字符串中的微小差异(例如单个字符)将产生完全不同的哈希值。有关更多详细信息,请参阅 IDL_HASHVAR。

No.7

新的 SVG 图标

IDL 现在附带了 Font Awesome 项目中的 2000 多个新图标。这些图标可以在 IDL 发行版的以下目录中找到:

/resource/bitmaps/svg/brands
/resource/bitmaps/svg/regular
/resource/bitmaps/svg/solid
您可以使用新SVG_ICON_BROWSER显示所有图标,也可以使用新的 RENDER_ICON 和 RENDER_SVG 函数来访问它们。所有这些图标均根据 Creative Commons Attribution 4.0 International License 分发,可以在您自己的应用程序中自由使用。

No.8

RENDER_SVG 功能

IDL 具有一个新的 RENDER_SVG 函数,该函数可以将 SVG 文件渲染为具有可选输出大小、背景色和前景色的位图图像。例如:

file = filepath('folder-open.svg', subdir=['resource', 'bitmaps', 'svg', 'regular'])img = RENDER_SVG(file, width=128, height=128, background=0xCCCCCC, foreground=0xFF0000)help, imgi = image(img)
IDL 打印:
IMG BYTE = Array[128, 128, 3]

No.9

RENDER_ICON 功能

IDL 具有一个新的 RENDER_ICON 函数,可从 IDL 中的 SVG 文件创建图标。例如:

w = widget_base(/row)icon = RENDER_ICON("folder-open")w1 = widget_base(w)wb = widget_button(w1, value=icon, /bitmap)icon = RENDER_ICON("folder-open", width=32, height=32)w1 = widget_base(w)wb = widget_button(w1, value=icon, /bitmap)icon = RENDER_ICON("folder-open", width=64, height=64)w1 = widget_base(w)wb = widget_button(w1, value=icon, /bitmap)widget_control, w, /realize

No.10

SVG_ICON_BROWSER 例程

IDL 增加了一个新的 SVG_ICON_BROWSER 例程,用于显示 IDL 附带的所有 2000+ 图标的缩略图。浏览器有一个过滤器,还会显示各个图标的示例代码,以及快速查看该图标在各种窗口小部件类型中的显示方式。有关详细信息,请参阅 SVG_ICON_BROWSER。



功能更新


No.1

VS Code 的 IDL 扩展

IDL 现在拥有了一个新的现代化开发环境,可在 Visual Studio Code 中免费使用。可以从 VS Code 扩展页面轻松下载和安装 VSCode 扩展的 IDL。该扩展具有以下功能:

  • 功能齐全的IDL 代码编辑器,具有变量类型检测、自动完成、色彩编码、问题报告和代码格式化功能。

  • 带有断点的集成调试器,或在 VS Code 终端中运行命令行 IDL。

  • 支持 IDL Notebook 风格的界面,带有嵌入式图形并保存为 PDF。

  • 可定制的主题和颜色。

  • 悬停帮助包含完整的 IDL 文档,包括代码示例。

  • 为 SAVE 文件或 DLM 中的例程创建例程定义文档。

  • 原生多语言支持。

有关详细信息,请访问 VSCode 的 IDL 页面。

No.2

HDF5 可以处理空数组

H5D_READ 和 H5_GETDATA 例程现在可以处理具有零长度数组的 H5T_VLEN 数据类型。在这些情况下,结果是指向 !NULL 变量。

No.3

HttpRequest 进度条

HttpRequest 类(在 IDL 9.0 中引入)现在在 ::Get、::Post 和 ::Put方法上有一个可选的进度条。此进度条使用上述新CLI_Progress条。有关详细信息,请参阅 HttpRequest::Get、HttpRequest::Post 和 HttpRequest::Put。

No.4

IDL_String::替换新的 Count 参数

IDL_String Replace 方法现在具有新的可选 Count 参数。该参数允许您指定要替换的匹配项数量。默认值是替换所有匹配项。例如:
IDL> str = '.......'IDL> print, str.replace('.', '*', 3)***....
还可以指定一个负计数,从字符串的末尾开始:
IDL> str = '.......'IDL> print, str.replace('.', '*', -3)....***
有关更多详细信息,请参阅 IDL_String::Replace。

No.5

对 NaN 和 Infinity 值的 JSON 支持

IDL 的 JSON_PARSE 函数现在支持数组中的末尾逗号以及特殊的NaN、Inf 和 Infinity(不带引号)值。这些都是对 JSON 规范的非标准补充,但提供了与 Python 和其他生成 JSON 工具更好的互操作性。

此外,JSON_SERIALIZE 现在有一个新的 NANINF_LITERAL 关键字。默认行为是将 NaN 和 Infinity 值输出为带引号的字符串,这遵循 JSON 规范,但不允许将它们转换回浮点值。设置 NANINF_LITERAL 关键字将输出这些值,但不带引号。这允许JSON_PARSE 和其他工具(如 Python)理解这些值并返回浮点 NaN 和 Infinity 值。

No.6

LEGEND 填充颜色

现在可以指定 LEGEND 图形函数的填充颜色:
p = plot(/test)l = legend(target=p, fill_color='yellow')
有关详细信息,请参阅 LEGEND。

No.7

MapContinents Shapefile

MapContinents 图形功能已更新,包含适用于各大洲、国家/地区、湖泊、岛屿和河流的更多最新 shapefile,包括适用于各大洲、湖泊和河流的新高分辨率版本。例如:
m0 = Map('Geographic', limit=[41, -93, 50, -83], margin=[0.1, 0.1, 0.1, 0.05])m0.mapgrid.label_position = 0m0.mapgrid.linestyle = "none"m0.mapgrid.grid_longitude = 2m0.mapgrid.grid_latitude = 2m1 = MapContinents(/hires, fill_color="light green")m2 = MapContinents(/lakes, /hires, fill_color='light blue', linestyle=0)m3 = MapContinents(/islands, fill_color='green')m4 = MapContinents(/rivers, /hires, color='blue', thick = 2)

No.8

多行工具提示

IDL 小组件现在支持跨多行的工具提示。要创建多行工具提示,只需在设置 TOOLTIP 关键字时嵌入换行符 \n 即可。有关详细信息,请参阅 WIDGET_BUTTON、WIDGET_DRAW 或 WIDGET_TREE 上的 TOOLTIP 关键字。

No.9

PRINT/PRINTF 新的 NEWLINE 关键字

PRINT 和 PRINTF 过程具有新的 NEWLINE 关键字。默认值为 1,与以前一样在输出末尾输出换行符(\n)。设置 NEWLINE=0 将隐藏换行符,并允许您多次调用 PRINT 并使所有输出都出现在同一行上。

No.10

Shapefile 增强

IDLffShape 类使用的 Shapefile 库已更新到最新版本。此外,IDLffShape 现在可以处理 Date 和 Logical 属性类型。您还可以使用新属性检索所有属性的 Shapefile 类型。有关详细信息,请参阅 IDLffShape。

No.11

TS_SMOOTH新的 NAN 关键字

TS_SMOOTH 函数具有新的 NAN 关键字。设置此关键字可使例程检查输入数据中是否出现 IEEE 浮点值 NaN 或Infinity。值为 NaN 或 Infinity 的元素被视为缺失数据。因此,例程会将这些缺失的元素替换为平滑窗口内有效点的平滑值(使用简单的 Boxcar 平滑)。

No.12

WIDGET_BROWSER 支持

WIDGET_BROWSER 已更新为包含对 macOS 的支持。

No.13

WIDGET_LABEL 和 WIDGET_TEXT 文本和背景颜色

WIDGET_LABEL 和 WIDGET_TEXT 现在支持 FOREGROUND_COLOR 和 BACKGROUND_COLOR 关键字,这些关键字允许您设置文本颜色和背景文本框颜色。您还可以使用 WIDGET_CONTROL 动态更改这些属性。例如,保存并运行以下代码:
pro widtext_ex_change, ev  common _widtext, w1, w2  widget_control, w1, foreground_color=bytscl(randomu(s,3)), background_color=bytscl(randomu(s,3))  widget_control, w2, foreground_color=bytscl(randomu(s,3)), background_color=bytscl(randomu(s,3))endpro widtext_ex  common _widtext, w1, w2  w = widget_base(xsize = 200, /column)  w0 = widget_base(w, /row)  f = 'Segoe*24'  w1 = widget_label(w0, value='Label', foreground_color=[0,200,0], background_color=[255,255,0], font=f, scr_xsize=100)  w2 = widget_text(w0, value='My Text', /editable, foreground_color=[200,0,0], background_color=[0,255,255], font=f)  w0 = widget_base(w, /row)  wbutton = widget_button(w0, value='Change', event_pro = 'widtext_ex_change', font=f)  widget_control, w, /realize  xmanager,'widtext_ex', w, /no_blockend

No.14

WIDGET_PROPERTYSHEET Top Header 关键字

WIDGET_PROPERTYSHEET 有一个新的 TOP_HEADER 关键字,当该关键字设置为 0 时,将隐藏顶部(列)标题。

No.15

WIDGET_TEXT 对齐关键字

WIDGET_TEXT 有 6 个新的对齐关键词:

  • ALIGN_BOTTOM、ALIGN_CENTER、ALIGN_LEFT、ALIGN_RIGHT 和 ALIGN_TOP 关键字控制小部件在其父部件中的位置。这些关键字在所有平台上都是允许的。默认值为 ALIGN_CENTER。

  • 新的ALIGNMENT 关键字允许您设置文本对齐方式。此关键字可用于Windows平台,但在其他平台上将被静默忽略。

No.16

WIDGET_TEXT FRAME = 0

在 Windows 上,WIDGET_TEXT现在可以设置 FRAME=0 以删除文本构件周围的边框。在其他平台上,文本小部件始终具有框架,设置FRAME=0 将不起作用。

No.17

WRITE_PNG 压缩关键字

WRITE_PNG 函数具有一个新的 COMPRESSION 关键字,该关键字允许您控制 PNG 输出的压缩量。该值必须在 0 到 9 的范围内。值为 0 表示无压缩。较高的值将提供较小的文件,但写入和读取的速度会变慢。默认值为 6,这在压缩和速度之间提供了良好的平衡。

No.18

Dataminer 安装

Dataminer 模块现在默认与 IDL 一起安装。它仍然需要许可证才能使用。Dataminer 支持读取和连接到 Microsoft Excel、PostgreSQL 和许多其他数据库管理系统。


库更新


第三方库已更新到以下版本:

  • ArmPL 24.04

  • CEF 121.3.7 for Windows and Mac. To support Red Hat-based systems (Fedora, CentOS, and Rocky Linux). Linux uses CEF 99.2.14.

  • antlr 2.7.7

  • curl 8.9.0

  • Eclipse CVS Client 1.4.2000.v20211124-1800

  • eclipse-egit-plugin 6.7.0.202309050840-r

  • eclipse-platform 4.29.0.v20230903-1000

  • Eclipse Temurin JDK 21.0.2

  • Eclipse Temurin JRE 21.0.2

  • HDF5 1.14.3

  • Inno Setup 6.2.2(u)

  • jackson-json-processor 2.15.2

  • ibtiff 4.6.0t

  • Libxml2 2.13.3

  • microsoft-vcredist 14.40.33810

  • mongo-c-driver 1.27.0

  • mongo-cxx-driver 3.10.1

  • nghttp2 1.62.1

  • NumPy 1.24.4

  • NumPy 1.26.4

  • OpenSSL 3.3.1

  • P4Eclipse 2023.1.2516406

  • poco 1.13.3

  • Python 3.12.4

  • shapelib 1.6.0

  • SQLite 3.46.0

  • x11-dev-tools 1.0.2

  • X PixMap Library 3.5.17

  • xerces-c 3.2.5

  • zlib 1.3.1

添加了以下第三方库:

  • Eclipse  JGit 6.7.0.202309050840-r

  • libtirpc 1.3.4

  • LunaSVG 2.3.9

以下第三方库已被删除:

  • HASP Sentinel-LDK_SDK

ENVI技术殿堂
ENVI官方公众号。分享光学与雷达遥感技术,以及ENVI/IDL/ESE/SARscape系列产品最新技术、相关培训、市场活动等信息。【主页:envi.geoscene.cn】
 最新文章