IDL 编程技术
航天星图(北京)有限公司
2006 年 1 月
前 言
IDL(Interactive Data Language)交互式数据语言是进行二维及多维数据可视化分析
及应用开发的理想软件工具。作为面向矩阵、语法简单的第四代可视化语言,IDL 致力于科
学数据的可视化和分析,是跨平台应用开发的最佳选择。它集可视、交互分析、大型商业开
发为一体,为用户提供了完善、灵活、有效的开发环境。
IDL 语言面向矩阵的特性带来了快速分析超大规模数据的能力,它所具有的高级图像处
理能力、交互式二维和三维图形技术、面向对象的编程方式、OpenGL 图形加速功能、集成
数学分析与统计软件包、完善的信号处理和图像处理功能、灵活的数据输入输出方式、跨平
台图形用户界面工具包、连接 ODBC 兼容数据库及多种外部程序连接工具使得该产品已经成
为美国 ITT VIS 公司的旗舰产品。
一直以来,美国 ITT VIS 公司致力于可视化和分析软件的研制与开发。IDL——交互式
数据语言,是数据分析、可视化和跨平台应用开发的最佳选择,其用户函盖 NASA、ESA、 NOAA、
Siemens、 GE Medical、Army Corps of Engineers、MacDonald Dettwiler 等大公司及研
究机构。其中,早在 1982 年,NASA(美国航空航天局)还将其选用为进行火星飞越航空器
研究的开发工具,并且,这一事件列为其四十年来技术发展的里程碑之一。
IDL 为用户提供了可视化数据分析的解决方案,既可以让科学研究人员交互式浏览和分
析数据,又为程序员提供了快速程序原型开发并跨平台发布的高级编程工具。IDL 使科学家
无需写大量的传统程序就可直接研究数据。IDL 还被广泛应用于地球科学、医学影像、图像
处理、软件开发、大学教学、实验室研究、测试技术、天文、信号处理、防御工程、数学分
析、统计等诸多领域。
为方便广大国内用户学习 IDL,快速掌握 IDL 的基础知识和使用技巧,充分利用 IDL 的
强大功能,我们组织了此次培训并编写本教程,希望为广大 IDL 初学者提供启发和帮助。如
在学习过程中存在问题请与我们的技术支持工程师联系,我们将竭诚为您服务。
我们的联系方式:
E_mail: support@imagetekinfo.com
鉴于水平与时间有限,培训教程中不妥乃至错误之处在所难免,恳望学员不吝批评指正。
航天星图科技(北京)有限公司
I
目 录
第一章 起 步 篇........................................................................... 1
本章概述 ............................................................................................................................... 1
撰写本书的背景 ................................................................................................................... 1
如何使用本书 ....................................................................................................................... 2
所需的IDL版本...............................................................................................................................2
IDL运行期间所需颜色的数量 .......................................................................................................2
少于 150 种颜色该怎样? ....................................................................................................2
多于 256 种颜色该怎样? ....................................................................................................3
创建IDL的启动文件..............................................................................................................3
本书的风格习惯..............................................................................................................................3
大写........................................................................................................................................4
注释........................................................................................................................................4
续行符....................................................................................................................................5
本书中所用的IDL程序和数据文件 ...............................................................................................5
安装程序和数据文件 ............................................................................................................5
获取IDL的主目录和当前目录..............................................................................................5
下载本书所用的程序和数据文件 ........................................................................................5
确保Coyote目录在IDL的搜索路径内 ..................................................................................6
拷贝数据文件 ........................................................................................................................6
获取更多的帮助..............................................................................................................................6
使用IDL命令 ........................................................................................................................ 7
IDL命令解析...................................................................................................................................7
位置参数 ................................................................................................................................7
关键字参数 ............................................................................................................................8
IDL过程和函数 .....................................................................................................................8
用IDL命令帮助 .....................................................................................................................9
创建命令日志 ........................................................................................................................9
创建变量..........................................................................................................................................9
动态改变变量的属性 ..........................................................................................................10
注意整型变量 ......................................................................................................................11
使用矢量和数组 ..................................................................................................................12
创建矢量 ..............................................................................................................................12
数组下标的应用 ..................................................................................................................13
数组的建立 ..........................................................................................................................13
数组中元素的存取 ..............................................................................................................14
矢量和子数组的提取 ..........................................................................................................14
使用IDL图形窗口 .........................................................................................................................14
图形窗口的建立 ..................................................................................................................15
确定当前图形窗口 ..............................................................................................................15
使图形窗口成为当前窗口 ..................................................................................................15
删除图形窗口 ......................................................................................................................16
航天星图科技(北京)有限公司
II
图形窗口的位置和尺寸 ......................................................................................................16
将图形窗口设置到显示器最前面 ......................................................................................16
在图形窗口上设置标题 ......................................................................................................17
清除图形窗口内容 ..............................................................................................................17
第二章 简单的图形显示............................................................. 17
本章概述 ............................................................................................................................. 17
IDL中简单的图形显示 ...................................................................................................... 17
创建线画图 ......................................................................................................................... 18
定制线画图 ......................................................................................................................... 20
改变线条的线型和粗细................................................................................................................20
用符号代替线条表示数据............................................................................................................21
用线条和符号来显示数据 ..................................................................................................22
创建自己的图形符号 ..........................................................................................................22
用不同的颜色绘制线画图............................................................................................................23
限定线画图的范围........................................................................................................................23
改变线画图的风格........................................................................................................................24
在线画图上绘出多种数据集 ............................................................................................. 26
在多个轴的图上显示数据............................................................................................................27
创建曲面图 ......................................................................................................................... 27
定制曲面图 ......................................................................................................................... 29
旋转曲面图....................................................................................................................................30
为曲面赋色....................................................................................................................................30
修改曲面图外观............................................................................................................................31
创建阴影曲面图 ................................................................................................................. 32
改变阴影处理参数........................................................................................................................32
用其他数据集为阴影处理提供参数............................................................................................33
创建等值线图 ..................................................................................................................... 34
选择等值线数目 ................................................................................................................. 35
修改等值线图 ..................................................................................................................... 36
改变等值线图的外观....................................................................................................................37
给等值线图赋色............................................................................................................................38
创建填充的等值线图 ......................................................................................................... 39
在显示窗口定位图形输出 ................................................................................................. 40
设置图形边缘................................................................................................................................41
设置图形位置................................................................................................................................42
设置图形区域................................................................................................................................43
创建多个图形................................................................................................................................43
给单一窗口的多幅图形留下标题空间 ..............................................................................44
使用!P.Multi变量创建不对称的排列 .................................................................................45
航天星图科技(北京)有限公司
III
给图形显示添加文本 ......................................................................................................... 46
列出可用字体的名称....................................................................................................................47
用XYOutS命令添加文本..............................................................................................................48
用XYOut加注矢量字体................................................................................................................49
排列文本........................................................................................................................................50
删除文本........................................................................................................................................50
改变文本的方向............................................................................................................................50
给图形显示添加线和符号 ................................................................................................. 50
图形显示添加色彩 ............................................................................................................. 52
第三章 图像数据处理................................................................. 54
本章概要 ............................................................................................................................. 54
图像处理 ............................................................................................................................. 54
显示图像........................................................................................................................................54
调整图像数据................................................................................................................................56
用颜色表分段表示图像 ......................................................................................................57
在 24 位显示器上用不同的颜色表显示图像.....................................................................58
显示 24 位图像..............................................................................................................................58
在 24 位显示器上显示 24 位图像 ......................................................................................58
在 24 位显示器上显示 8 位图像 ........................................................................................59
控制图像显示顺序........................................................................................................................59
改变图像尺寸................................................................................................................................59
在PostScript设备上改变图像大小......................................................................................60
在显示窗口中定位图像................................................................................................................60
用归一化的坐标来定位图像 ..............................................................................................62
从显示器中读取图像....................................................................................................................63
在 24 位显示器上抓屏 ........................................................................................................64
读取显示图像的一部分 ......................................................................................................64
IDL中基本的图像处理 ...................................................................................................... 64
直方图均衡化................................................................................................................................64
平滑图像........................................................................................................................................66
消除图像噪声 ......................................................................................................................67
增强图像边缘................................................................................................................................68
图像的频域滤波............................................................................................................................68
创建图像滤波器 ..................................................................................................................69
第四章 图形显示技术................................................................. 70
本章概要 ............................................................................................................................. 70
IDL的颜色运用 .................................................................................................................. 71
使用索引颜色模式和RGB颜色模式............................................................................................71
静态与动态颜色视觉 ..........................................................................................................72
在 8 位显示器上指定颜色 ..................................................................................................72
航天星图科技(北京)有限公司
IV
在 24 位显示器上指定分解后的颜色 ................................................................................73
在 24 位显示设备上指定没有分解过的颜色.....................................................................74
决定颜色分解的开与关 ......................................................................................................75
在 24 位显示设备上装载颜色表..................................................................................................75
获得颜色表的拷贝........................................................................................................................75
修改和创建颜色表........................................................................................................................76
保存自己的颜色表........................................................................................................................77
创建自己的轴标注 ............................................................................................................. 78
调整轴刻度间隔............................................................................................................................78
格式化轴的标注............................................................................................................................79
编写刻度格式函数 ..............................................................................................................79
用IDL处理残缺的数据 ...................................................................................................... 82
用IDL建立三维坐标系 ...................................................................................................... 84
建立三维散点图............................................................................................................................84
从图形原点定位 3D坐标轴..........................................................................................................85
组合简单图形显示 ............................................................................................................. 86
IDL中的动画图形 .............................................................................................................. 88
建立动画工具................................................................................................................................89
装载动画缓冲区............................................................................................................................89
运行动画工具................................................................................................................................89
动画的控制....................................................................................................................................89
存储动画的像素映射图................................................................................................................90
其他类型图形数据的动画............................................................................................................90
数据网格化及显示 ............................................................................................................. 91
德洛内三角形法网格化................................................................................................................91
数据的球形网格化........................................................................................................................94
第五章 图形显示技巧................................................................. 95
本章概要 ............................................................................................................................. 95
将光标用于图形显示 ......................................................................................................... 95
什么时候返回的光标位置?........................................................................................................95
哪一个鼠标键和光标共同作用呢?............................................................................................96
用光标标注图形输出....................................................................................................................96
画方框..................................................................................................................................96
在图像上使用Cursor命令.............................................................................................................97
在循环中使用Cursor命令.............................................................................................................98
从显示中删除注释 ............................................................................................................. 99
删除注释的异或法........................................................................................................................99
删除注释的设备拷贝法..............................................................................................................101
画一个橡皮筋方框 ............................................................................................................103
图形窗口的滚动 ................................................................................................................104
航天星图科技(北京)有限公司
V
Z图形缓冲区中的图形显示技巧..................................................................................... 105
Z图形缓冲区的实现 ...................................................................................................................105
一个Z图形缓冲区实例:两个曲面 ...........................................................................................106
使Z图形缓冲区成为当前设备..........................................................................................106
配置Z图形缓冲区..............................................................................................................107
将物体装入到Z图形缓冲区中..........................................................................................107
对投影面进行拍照 ............................................................................................................107
在显示设备上显示结果 ....................................................................................................107
Z图形缓冲区的一些奇怪特点..........................................................................................108
用Z图形缓冲区使图像变形 .......................................................................................................108
Z图形缓冲区中的透明效果 .......................................................................................................110
将Z图形缓冲区效果与体数据着色相结合................................................................................ 111
第六章 在IDL中读写数据.......................................................... 113
本章概要 ............................................................................................................................113
打开文件进行读写 ............................................................................................................113
查找和选择数据文件..................................................................................................................114
选择文件名 ........................................................................................................................114
选择目录名 ........................................................................................................................114
寻找文件 ............................................................................................................................115
构造文件名 ........................................................................................................................115
获取逻辑设备号..........................................................................................................................115
直接使用逻辑设备号 ........................................................................................................116
让IDL管理逻辑设备号......................................................................................................116
判断哪些文件和哪些逻辑设备号相连 ............................................................................116
读写格式化数据 ................................................................................................................117
写自由格式文件..........................................................................................................................117
读自由格式文件 ................................................................................................................118
读取自由格式文件的规则 ................................................................................................118
读写自由格式文件的实例..........................................................................................................120
读一个简单数据文件 ........................................................................................................120
写列格式数据文件 ............................................................................................................121
读列格式数据文件 ............................................................................................................121
创建读列格式数据的模板 ................................................................................................123
用确定的文件格式写入..............................................................................................................123
一些共有的格式说明符 ....................................................................................................123
写用逗号分隔的确定格式数据文件 ................................................................................124
读出用逗号分隔的确定格式文件 ....................................................................................124
从字符串中读取格式数据..........................................................................................................125
读写二进制数据 ............................................................................................................... 125
读取二进制图像数据文件..........................................................................................................125
写二进制图像数据文件..............................................................................................................126
读取带有文件头的二进制数据文件 ................................................................................127
二进制数据文件的一些问题......................................................................................................127
航天星图科技(北京)有限公司
VI
用关联变量存取二进制数据文件..............................................................................................128
关联变量的一些优点 ........................................................................................................128
定义关联变量 ....................................................................................................................129
读写常用文件格式的文件 ............................................................................................... 130
创建彩色GIF文件 .......................................................................................................................130
写GIF文件..........................................................................................................................131
读GIF文件..........................................................................................................................131
创建彩色JPEG文件.....................................................................................................................132
写JPEG文件.......................................................................................................................132
读取JPEG文件...................................................................................................................133
查询图像文件信息......................................................................................................................133
第七章 图形硬拷贝输出............................................................. 134
本章概要 ........................................................................................................................... 134
选择图形硬拷贝输出设备 ............................................................................................... 135
配置图形硬拷贝输出设备 ............................................................................................... 135
常用的Device命令关键字 ..........................................................................................................136
创建PostScript文件 .....................................................................................................................137
将图形送到硬拷贝设备中 ............................................................................................... 137
打印PostScript文件 ......................................................................................................... 139
在运行MacOS系统的计算机上打印PostScript文件 .................................................................139
在Windows计算机上打印PostScript文件 ..................................................................................139
生成封装的PostScript文件输出 ..................................................................................... 140
封装PostScript图形的预览 .........................................................................................................140
生成彩色的PostScript输出 ............................................................................................. 140
PostScript中的彩色图像与灰度图像 .........................................................................................141
真彩图像 ............................................................................................................................141
在PostScript设备上创建高质量的输出 ......................................................................... 142
显示设备和PostScript设备之间的相同点..................................................................................142
显示设备与PostScript设备之间的不同点..................................................................................142
问题:PostScript窗口可能会有不同的纵横比例 ............................................................143
解决方法:让图形窗口的纵横比保持不变.....................................................................143
问题:PostScript设备有更高的显示分辨率 ....................................................................144
解决方法:不用设备坐标来定位图形 ............................................................................144
问题:PostScript设备能使用不同的显示字体 ................................................................145
解决方案:仔细设计和定位文字 ....................................................................................145
问题: PostScript设备使用背景颜色和绘图颜色时的不同 ..........................................147
解决方法:理解PostScript如何处理背景颜色和绘图颜色 ............................................147
问题:PostScript设备的颜色数目多于显示设备 ............................................................148
解决方法:在PostScript输出中确保恰当地缩放数据 ....................................................149
问题:PostScript设备显示图像时的不同 ........................................................................150
解决方法:使用TV命令设置图像大小 ...........................................................................152
航天星图科技(北京)有限公司
VII