遥感图像处理及ENVI IDL操作实践.

上传人:我** 文档编号:115667690 上传时间:2019-11-14 格式:DOC 页数:26 大小:728KB
返回 下载 相关 举报
遥感图像处理及ENVI IDL操作实践._第1页
第1页 / 共26页
遥感图像处理及ENVI IDL操作实践._第2页
第2页 / 共26页
遥感图像处理及ENVI IDL操作实践._第3页
第3页 / 共26页
遥感图像处理及ENVI IDL操作实践._第4页
第4页 / 共26页
遥感图像处理及ENVI IDL操作实践._第5页
第5页 / 共26页
点击查看更多>>
资源描述

《遥感图像处理及ENVI IDL操作实践.》由会员分享,可在线阅读,更多相关《遥感图像处理及ENVI IDL操作实践.(26页珍藏版)》请在金锄头文库上搜索。

1、1 IDL 基本操作介绍 课题名称: 遥感图像处理及 ENVIIDL 操作实践 任课教师: 2 目录目录 一、一、IDL 简介简介.3 1.IDL特殊符号说明.3 1.1.大写.3 1.2.注释符.3 1.3.续航符.3 2.IDL 语法基础3 2.1.变量.3 2.2.数组.5 3.IDL 编程基础6 3.1.定义和编译程序6 3.2.命名和编译源文件7 3.3.程序控制语句.7 二、二、IDL 基本操作介绍基本操作介绍9 1.题目及要求9 2.解决方案9 2.1数据说明.9 2.2二进制文件读取10 2.3各像元的线性变化趋势及显著性概率计算12 2.4有效物候区返青期平均变化趋势统计14

2、 2.5制图输出线性变化趋势17 三、三、总结总结.26 3 一一、 IDL 简简介介 IDL(Interactive Data Language)交互式数据语言是进行二维及多维数据可 视化分析及应用开发的理想软件工具。作为面向矩阵、语法简单的第四代可视 化语言,IDL 致力于科学数据的可视化和分析,是跨平台应用开发的最佳选择。 它集可视、交互分析、大型商业开发为一体,为用户提供了完善、灵活、有效 的开发环境。IDL 为用户提供了可视化数据分析的解决方案,既可以让科学研 究人员交互式浏览和分析数据,又为程序员提供了快速程序原型开发并跨平台 发布的高级编程工具。IDL 使科学家无需写大量的传统程

3、序就可直接研究数据。 IDL 被广泛应用于地球科学、医学影像、图像处理、软件开发、大学教学、实 验室研究、测试技术、天文、信号处理、防御工程、数学分析、统计等诸多领 域。 1. IDL 特殊符号说明特殊符号说明 在 IDL 程序中,当在命令行中输入命令时,IDL 将会识别大量的特殊字符。 下面介绍几种较为重要的特殊符号。 1.1. 大大写写 IDL 对字母的大小写并不敏感,但与操作系统打交道的命令(例如:UNIX 操作系统对 IDL 所打开的文件名的大小写敏感)和执行字符串比较命令时除 外。 1.2. 注注释释符符 在 IDL 命令中,分号 “;”(英文半角符号)表示注释内容的开始,分号右边

4、的任何文本都被视为是注释,IDL 解释器将忽略它。例如: pro test ;A simple program print,“Hello World !“,$ “LYT“;This line prints a message end 1.3. 续续航航符符 IDL 中的续行符是表示美元的符号“$” 。这表示 IDL 语句延续到下一语句 行(见上例)。 2. IDL 语法基础语法基础 4 变变量量 IDL 提供了灵活的数据类型定义方法,在任何时候,IDL 都允许用户创建 新的变量,或重新定义已有的变量。 变量名必须以字母开头。它们可以包括其他字母、数字、下划线、美元符 号。一个变量名最长可达 2

5、55 个字符。 变量有两个重要属性: 数据类型和组织结构。 数据类型指出属于数据类型中 的哪一种。IDL 提供了非常丰富的数据类型,用户可以实际需求经行选择。表 1 显示了每一种数据类型及其描述,每种类型创建的变量的字节大小、变量创 建方式、数据类型之间强制转换的 IDL 函数名称。除了数据类型外,每一个 变量有一个组织结构。有效的组织结构有标量(例如单个数值) 、矢量(真正 的一维数组) 、数组(最高可达八维)和 IDL 结构(能包含各种数据类型的 变量和组织结构,结构中独立的组成部分称为字段)。 表表 1 IDL 基本数据类型基本数据类型 数字类型变量数字类型变量 数据类型描述字节数创建变

6、量数据类型函数 byte字节型1Var=0BthisVar=Byte(variable) int16 位有符 号整型 2Var=0thisVar=Fix(variable) long32 位有符 号长整型 4Var=0LthisVar=Long(variable) long6464 位有符 号整型 8Var=0LLthisVar=Long64(variable) uint16 位无符 号整型 2Var=0UthisVar=UInt(variable) ulong32 位无符 号长整型 4Var=0ULthisVar=ULong(variable) ulong6464 位无符 号整型 8Var=

7、0ULLthisVar=Ulong64(variable) float浮点型4Var=0.0thisVar=Float(variable) double双精度浮 点型 8Var=0.0DthisVar=Double(variable) complex复数8Var=Complex(0.0,0.0)thisVar=Complex(variable) dcomplex双精度复 数 16Var=Dcomplex(0.0D,00D)thisVar=DComplex(variable) 非数字类型变量非数字类型变量 数据类型描述字节数创建变量数据类型函数 string字符串0-32767Var=或 Var

8、=”thisVar=String(variable) pointer指针4Var=Ptr_New()None 5 objref对象4Var=Obj_New()None stuct结构体 2.2. 数数组组 IDL 中可以为任何 IDL 数据类型创建 18 维的数组。数组操作的运行速度 往往优于循环操作,且语法更为精炼。 在 IDL 中利用方括号“ ”创建数组。创建多维数组时可以使用嵌套的方括 号。值的注意的是,IDL 中数组元素的存储是按列进行的。按列存储的方式意 味着连续的数组元素也将按顺序被存储,而且数组的第一维(列)变化的最快。 下标的顺序先是列标,后是行标。IDL 的数组下标是从零开始

9、的正值。数组的 下标可以是标量也可以是矢量。进行下标操作时,如果下标超过了范围,则该 下标被转换为在允许范围内的最小或最大的下标值。例如,创建一维数组 vector 和多为数组 array: ; 创建一维数组 vector IDL vector=1,2,3 IDL help,vector VECTOR INT = Array3 IDL print,vector ; 输出 IDL 输出窗口中将会如下所示: 1 2 3 ; 创建多维数组array IDL array=1,2,3,4,5,6 IDL help,array ARRAY INT = Array3, 2 IDL print, array

10、1 2 3 4 5 6 IDL 的内建函数允许用户按指定的类型创建数组,同时数组中的每个元素 都被初始化为灵活索引值(下标值)。创建和初始化零数组和索引数组的函数 见表 2 所示。 表表 2 创建和初始化零数组和索引数组的函数创建和初始化零数组和索引数组的函数 数据类型零数组索引数组 bytebytarr( )bindgen( ) intintarr( )indgen( ) longlonarr( )lindgen( ) long64lon64arr( )l64indgen( ) uintuintarr( )uindgen( ) 6 ulongulonarr( )ulindgen( ) ulo

11、ng64ulon64arr( )ul64indgen( ) floatfltarr( )findgen( ) doubledblarr( )dindgen( ) complexComplex arr( )cindgen( ) dcomplexDcomplex arr( )dcindgen( ) stringstrarr( )sindgen( ) 例如,创建一个七元素的整型零数组和一个六元素的浮点型索引数组: IDL zeros=intarr(7) ; 创建一个七元素的整型零数组 IDL index=findgen(6) ; 创建一个六元素的浮点型索引数组 IDL print,zeros,ind

12、ex 0 0 0 0 0 0 0 0.000000 1.00000 2.00000 3.00000 4.00000 5.00000 3. IDL 编程基础编程基础 结构化程序设计是 E.W.Dijikstra 在 1965 年提出的。它的主要观点是采用 自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何 程序都可由顺序、选择、重复三种基本控制结构构造。编写 IDL 程序也需要 对 IDL 中的相关控制语句进行简单介绍。 定定义义和和编编译译程程序序 IDL 程序包括过程和函数两种: (1). 过程(pro) 过程一般将几个相关的操作加到一个程序模块中。过程以 pro 开头,e

13、nd 结 束。例如: ;过程名 test1, 参数 para1,para2, propro testtest1 1,para1,para2,. 过程语句块 endend (2). 函数(function) 函数一般将一个操作加载到一个程序模块中,并返回结果函数以 function 开 头,end 结束,并包括一个 return 语句返回结果。例如: ;函数名 test2,参数 para1,para2,,返回值 para1 functionfunction test2test2,para1,para2,. 过程语句块 7 returnreturn ,para1 endend IDL 命令要么是过

14、程,要么是函数。过程和函数的区别在于:在过程命令 中,参数和关键字仅排列在一个命令行上;在函数命令中,位置参数和关键字 参数放在一对圆括号中的。 但是,最重要的区别是 IDL 函数会返回一个值,等号左边的一个变量用于 返回该值。这是 IDL 中函数命令和过程命令根本的区别。 函数命令总是返回 一个值,这个数值必须赋给一个变量。函数返回值可能是任何一种 IDL 变量, 包括数值、数组或结构。 3.2. 命命名名和和编编译译源源文文件件 命名一个 IDL 源文件的标志形式是在过程或函数名称后加上扩展名.pro 过程和函数都可以通过“.compile”命令进行手动编译或是通过 IDL IDE 环境进

15、 行编译。 当需要时,过程和函数会在运行时自动编译,如果 IDL 调用的过程或函数 之前未被编译过,则 IDL 会搜索路径下所有的文件夹以搜索源文件的名称。 3.3. 程程序序控控制制语语句句 3.3.1. 条条件件语语句句 (1). IF 语句 当特定的条件为真时,if 语句执行单个语句或单个语句模块: IF 条件 THEN 语句 IF 条件 THEN BEGIN 语句 ENDIF IF 条件 THEN 语句 ELSE 语句 IF 条件 THEN BEGIN 语句 ENDIF ELSE BEGIN 语句 ENDELSE 8 在以上的所有行驶中,“条件”是一个标量表达式,其值为真或假。在前 两

16、种形式中,当条件为真时,执行单个语句或语句模块;在后面两种行驶中, 当条件为假时,“else”语句将执行单个的语句或语句模块。 (2). CASE 语句 CASE 语句根据一个标量的表达式来选择某个语句或语句块运行。 CASE 表达式 OF 情况 1: 情况 2:语句 情况 3:BEGIN 语句 END ELSE: 语句 ENDCASE 当表达式和其中的某个情况匹配,相应的语句被执行, case 语句结束, 如果没有匹配的情况,那么执行 else 下的语句,如果没有 else 语句,将会发 生错误,建议在 case 语句中都加上 else。 (3). SWITCH 语句 SWITCH 跟 CASE 类似,但与 CASE 的不同在于它能执行到底。 3.3.2. 跳跳转转语语句句 (1). BREAK BREAK 提供了一个从循环中(FOR,WHILE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号