IDL 入门教程
安徽遥感考古工作站藏书
1
第一章 起步篇 ...........................................................................................................9
本章概述................................................................................................................................9
书写本书的背景....................................................................................................................9
运用本书..............................................................................................................................10
IDL所需的版本 ............................................................................................................................ 10
IDL运行期间所需颜色的数量..................................................................................................... 10
本书的风格习惯............................................................................................................................11
本书中所用的IDL程序和数据文件............................................................................................. 13
获取更多的帮助........................................................................................................................... 15
使用IDL命令.......................................................................................................................15
IDL命令解析 ................................................................................................................................ 15
创建变量....................................................................................................................................... 18
使用IDL图形窗口 ........................................................................................................................ 23
第二章 简单的图形显示 .........................................................................................26
本章概述..............................................................................................................................26
IDL中简单的图形显示.......................................................................................................26
创建线画图..........................................................................................................................26
定制线画图..........................................................................................................................29
改变线条的线型和粗细 ............................................................................................................... 29
用符号代替线条显示数据 ........................................................................................................... 29
用不同的颜色绘制线画图 ........................................................................................................... 32
限定线画图的范围 ....................................................................................................................... 32
改变线画图的风格 ....................................................................................................................... 33
在线画图上绘出多种数据集..............................................................................................34
在多个轴的图上显示数据 ........................................................................................................... 36
创建曲面图..........................................................................................................................36
定制曲面图..........................................................................................................................39
旋转曲面图................................................................................................................................... 39
为曲面赋色................................................................................................................................... 40
修改曲面图外观........................................................................................................................... 41
创建阴影曲面图..................................................................................................................42
改变阴影处理参数 ....................................................................................................................... 42
用其它数据集为阴影处理提供参数 ........................................................................................... 43
创建等值线图......................................................................................................................44
选择等值线数目..................................................................................................................46
修改等值线图......................................................................................................................47
改变等值线图的外观 ................................................................................................................... 48
给等值线图赋色........................................................................................................................... 49
2
创建填充的等值线图..........................................................................................................50
在显示窗口定位图形输出..................................................................................................51
设置图形边缘............................................................................................................................... 52
设置图形位置............................................................................................................................... 53
设置图形区域............................................................................................................................... 54
创建多个图形............................................................................................................................... 54
给图形显示添加文本..........................................................................................................58
找出可用字体的名称 ................................................................................................................... 59
用XYOutS命令添加文本 ............................................................................................................. 59
用矢量字体使用XYOut ............................................................................................................... 60
排列文本....................................................................................................................................... 61
删除文本....................................................................................................................................... 61
改变文本的方向........................................................................................................................... 62
给图形显示添加线和符号..................................................................................................62
图形显示添加色彩..............................................................................................................63
第三章 图像数据处理 .............................................................................................72
本章概要..............................................................................................................................72
图像处理..............................................................................................................................72
显示图像....................................................................................................................................... 72
调整图像数据............................................................................................................................... 74
显示 24 位图像............................................................................................................................. 76
控制图像显示顺序 ....................................................................................................................... 77
改变图像尺寸............................................................................................................................... 77
在显示窗口中定位图像 ............................................................................................................... 78
从显示器中读取图像 ................................................................................................................... 81
IDL中基本的图像处理.......................................................................................................82
直方图均衡化............................................................................................................................... 82
平滑图像....................................................................................................................................... 66
增强图像棱边............................................................................................................................... 68
图像的频域滤波........................................................................................................................... 68
第四章 图形显示技术 .............................................................................................84
本章概要..............................................................................................................................84
IDL的颜色运用...................................................................................................................84
使用索引颜色模式和RGB颜色模式 ........................................................................................... 84
在 24 位显示设备上装载色谱表 ................................................................................................. 89
获得色谱表的拷贝 ....................................................................................................................... 89
修改和创建色谱表 ....................................................................................................................... 90
保存自己的色谱表 ....................................................................................................................... 91
创建自己的轴标注..............................................................................................................92
调整轴刻度间隔........................................................................................................................... 92
3
格式化轴的标注........................................................................................................................... 93
用IDL处理残缺的数据.......................................................................................................96
用IDL建立三维坐标系.......................................................................................................98
建立三维散点图........................................................................................................................... 98
从图形原点定位 3D坐标轴 ........................................................................................................100
组合简单图形显示............................................................................................................101
IDL中的动画数据.............................................................................................................103
建立动画工具..............................................................................................................................104
装载动画缓冲区..........................................................................................................................104
运行动画工具..............................................................................................................................104
动画的控制..................................................................................................................................104
存储动画的像素映射图 ..............................................................................................................105
其它类型图形数据的动画 ..........................................................................................................105
网格化数据以便图形显示................................................................................................106
德洛内三角形法网格化 ..............................................................................................................107
数据的球形网格化 ......................................................................................................................109
第五章 图形显示技巧 ........................................................................................... 111
本章概要............................................................................................................................111
将光标用于图形显示........................................................................................................111
什么时候返回的光标位置? ......................................................................................................111
哪一个鼠标键和光标共同作用呢? ..........................................................................................112
用光标标注图形输出 ..................................................................................................................112
在图像上使用Cursor命令 ...........................................................................................................113
在循环中使用Cursor命令 ...........................................................................................................114
从显示中删除注释............................................................................................................115
删除注释的异或法 ......................................................................................................................115
删除注释的设备拷贝法 ..............................................................................................................117
Z图形缓冲区中的图形显示技巧 .....................................................................................121
Z图形缓冲区的实现....................................................................................................................121
一个Z图形缓冲区实例:两个曲面............................................................................................122
用Z图形缓冲区使图像变形........................................................................................................124
Z图形缓冲区中的透明效果........................................................................................................127
将Z图形缓冲区效果与体数据着色相结合................................................................................128
第六章 在IDL中读写数据 ......................................................................................129
本章概要............................................................................................................................129
打开文件进行读写............................................................................................................130
查找和选择数据文件 ..................................................................................................................130
获取逻辑设备号..........................................................................................................................132
读写格式化数据................................................................................................................133
4
写自由格式文件..........................................................................................................................133
读写自由格式文件的实例 ..........................................................................................................136
用确定的文件格式写入 ..............................................................................................................140
从字符串中读取格式数据 ..........................................................................................................141
读写非格式化数据............................................................................................................141
读取非格式化图像数据文件 ......................................................................................................142
写非格式化图像数据文件 ..........................................................................................................142
非格式化数据文件的一些问题 ..................................................................................................144
用关联变量存取非格式化数据文件 ..........................................................................................144
读写常用文件格式的文件................................................................................................147
创建彩色GIF文件........................................................................................................................147
创建彩色JPEG文件.....................................................................................................................148
查询图像文件信息 ......................................................................................................................150
第七章 图形硬拷贝输出 .........................................................................................151
本章概要............................................................................................................................151
选择图形硬拷贝输出设备................................................................................................151
配置图形硬拷贝输出设备................................................................................................152
常用的Device命令关键字...........................................................................................................153
创建PostScript文件......................................................................................................................154
将图形送到硬拷贝设备中................................................................................................154
打印PostScript文件 ..........................................................................................................155
在运行MacOS系统的计算机上打印PostScript文件..................................................................156
在Windows计算机上打印PostScript文件...................................................................................156
生成封装的PostScript文件输出 ......................................................................................156
封装PostScript图形的预览..........................................................................................................157
生成彩色的PostScript输出 ..............................................................................................157
PostScript中的彩色图像与灰度图像..........................................................................................158
在PostScript设备上创建高质量的输出 ..........................................................................158
显示设备和PostScript设备之间的相同点..................................................................................159
显示设备与PostScript设备之间的不同点..................................................................................159
在横向输出模式中计算PostScript的偏移量 ..................................................................171
用PS_Form配置PostScript设备 ......................................................................................172
配置和使用打印设备........................................................................................................173
用打印设备定位图形 ..................................................................................................................174
第八章 ......................................................................................................IDL编程基础 188
本章概述............................................................................................................................188
编写IDL批处理文件.........................................................................................................188
5
编写IDL主程序.................................................................................................................189
过程和与函数中变量的作用范围 ..............................................................................................191
创建定位参数..............................................................................................................................191
定义可选的或必须的定位参数 ..................................................................................................192
定义关键字..................................................................................................................................193
创建输出型参数..........................................................................................................................196
编写IDL函数.....................................................................................................................198
方括号和函数的调用 ..................................................................................................................200
使用程序控制语句............................................................................................................201
IDL中表达式的真和假 ...............................................................................................................201
将多个语句处理成单个语句 ......................................................................................................201
If…Then…Else控制语句 ............................................................................................................202
条件表达式..................................................................................................................................203
FOR循环控制语句 ......................................................................................................................203
WHILE循环控制语句 .................................................................................................................204
REPEAT...UNTIL 循环控制语句...............................................................................................204
CASE控制语句............................................................................................................................204
GOTO控制语句...........................................................................................................................205
错误处理控制语句 ......................................................................................................................205
编译和执行IDL程序模块.................................................................................................207
程序编译规则:..........................................................................................................................208
程序编译和自动运行规则 ..........................................................................................................208
特殊编译命令..............................................................................................................................209
第九章 .................................................................................................. 编写 IDL 程序 177
本章概述............................................................................................................................177
基本的ImageBar程序.......................................................................................................177
给程序ImageBar增加一个“先擦除”功能...............................................................................181
向ImageBar程序增加颜色敏感功能...........................................................................................181
给ImageBar中的命令传递关键字 ..............................................................................................183
根据窗口大小改变字符大小 ......................................................................................................185
程序ImageBar的最终代码 ..........................................................................................................186
在图形用户界面中包装ImageBar ..............................................................................................187
第十章 .........................................................................................编写简单的组件程序 230
本章概述............................................................................................................................230
组件程序的结构................................................................................................................230
组件程序如何对事件作出反应........................................................................................231
编写组件定义模块............................................................................................................231
定义和创建程序组件 ..................................................................................................................232
在屏幕上实现组件 ......................................................................................................................233
使绘图组件成为当前图形窗口 ..................................................................................................234
6
在绘图组件窗口上显示图形 ......................................................................................................234
保存程序运行时所需要的信息 ..................................................................................................234
创建事件循环和注册程序 ..........................................................................................................235
运行程序......................................................................................................................................236
创建无阻塞组件程序 ..................................................................................................................236
编写事件处理模块............................................................................................................237
事件结构中的公共字段 ..............................................................................................................237
事件处理函数..............................................................................................................................238
将事件处理程序和组件联系起来 ..............................................................................................239
编写Quit按钮的事件处理程序 ...................................................................................................240
编写改变图形窗口大小的事件处理程序 ..................................................................................241
进行小量地修改................................................................................................................242
添加颜色敏感..............................................................................................................................242
采用更高效的内存管理 ..............................................................................................................243
第十一章 .................................................................................................组件编程技巧 210
本章概述............................................................................................................................210
改变颜色表........................................................................................................................210
保护公共块..................................................................................................................................211
一个可选择颜色表的工具 ..........................................................................................................211
指定Group Leader........................................................................................................................214
给组件程序增加Group Leader....................................................................................................215
在 24 位显示器上改变颜色表 ....................................................................................................215
在组件程序中使用指针....................................................................................................217
使用Cleanup过程防止内存泄露.................................................................................................219
使用伪事件进行程序通信................................................................................................220
创建一个具有“记忆功能”的程序 ..........................................................................................221
保护组件程序的颜色........................................................................................................223
通过组件跟踪事件来保护颜色 ..................................................................................................224
通过绘图组件事件来保护颜色 ..................................................................................................225
保存或者发布程序的图形................................................................................................226
第十二章 ..................................................................................................... 对话框程序 247
本章概述............................................................................................................................247
创建模式对话框................................................................................................................247
阻塞的组件程序..........................................................................................................................247
模式组件程序..............................................................................................................................248
编写模式对话框的定义模块 ......................................................................................................248
编写模式对话框的事件处理模块 ..............................................................................................252
测试模式对话框程序 ..................................................................................................................253
创建非模式的对话框........................................................................................................253
7
编写非模式对话框程序 ..............................................................................................................254
编写非模式对话框的事件处理模块 ..........................................................................................256
测试非模态对话程序 ..................................................................................................................257
附录A ..................................................................................................组件的事件结构 258
事件结构的定义................................................................................................................258
公共字段的定义..........................................................................................................................258
基本组件的事件结构........................................................................................................259
base组件.......................................................................................................................................259
按钮组件......................................................................................................................................259
绘图组件......................................................................................................................................259
下拉式列表组件..........................................................................................................................259
标签组件......................................................................................................................................260
列表组件......................................................................................................................................260
滑动条组件..................................................................................................................................260
表单组件......................................................................................................................................260
文本组件......................................................................................................................................262
复合组件的事件结构........................................................................................................262
CW_Animate................................................................................................................................262
CW_Arcball..................................................................................................................................262
CW_BGroup.................................................................................................................................262
CW_Clr_Index .............................................................................................................................263
CW_Color_Sel .............................................................................................................................263
CW_DefROI.................................................................................................................................263
CW_Field .....................................................................................................................................263
CW_Form.....................................................................................................................................263
CW_Flisder ..................................................................................................................................263
CW_Orient ...................................................................................................................................263
CW_PDMenu ...............................................................................................................................264
CW_RGBSlider............................................................................................................................264
CW_Zoom....................................................................................................................................264
组件程序的事件结构........................................................................................................264
Xcolors .........................................................................................................................................264
其他组件的事件结构........................................................................................................264
键盘焦点事件..............................................................................................................................264
组件退出请求事件 ......................................................................................................................265
组建计时器事件..........................................................................................................................265
组件跟踪事件..............................................................................................................................265
附录B.......................................................................................................数据文件描述 266
8