




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ENVI的二次开发介绍,邓书斌,主要内容,1、菜单的定制与自定义坐标系 2、波段运算与批处理 3、ENVI函数 4、ENVI/IDL与ArcGIS一体化集成方案,ENVI的菜单文件,ENVI的菜单文件保存在HOMEITTIDLxxproductsenvixxmenu文件夹下,有三个文件: display.men:显示窗口菜单文件 display_shortcut.men:显示窗口右键快捷菜单 envi.men:主菜单文件 每个菜单项有三部分组成: LEVEL BUTTON NAME UVALUE EVENT HANDLER PROCEDURE separator LEVEL是菜单按钮的级别,从0开始的整数表示,必选项 BUTTON NAME 菜单名称,必选项。 UVALUE分定义了为菜单项所赋给的用户值。用户值在同一用户函数处理多个菜单项时非常有用,可以区别那个菜单项被选中。 EVENT HANDLER PROCEDURE 事件名称,可选项 separator 菜单“横线”标示关键字。,菜单定制练习,在用记事本打开envi.men文件,在文件的最后添加以下语句: 0 MyFunctions 1 Basic File Info not used file_info 启动ENVI+IDL环境。 在IDL环境下新建一个源文件,编写以下代码, PRO file_info, event ENVI_SELECT, title=choose a file, fid=in_fid IF (in_fid eq -1L) THEN return ENVI_FILE_QUERY, in_fid, ns=ns, nl=nl, nb=nb, fname=fname OpenR, unit, fname, /Get_LUN info = FSTAT(unit) Free_LUN, unit print, you selected ,fname print, number of samples = ,ns print, number of lines = ,nl print, number of bands = ,nb print, file size in bytes = ,info.size END 保存为file_,保存在save_add目录下。 重启ENVI+IDL环境,可以看到在ENVI最末端新增一个菜单MyFunctions,点击运行。,坐标系原理,地理坐标系是以经纬度为单位的地球坐标系统,地理坐标系中有2个重要部分,即地球椭球体(spheroid)和大地基准面(datum)。 大地基准面指目前参考椭球与WGS84参考椭球间的相对位置关系(3个平移,3个旋转,1个缩放),可以用其中3个、4个或者7个参数来描述它们之间的关系,每个椭球体都对应一个或多个大地基准面。 投影坐标系是利用一定的数学法则把地球表面上的经纬线网表示到平面上,属于平面坐标系。数学法则指的是投影类型,目前我国普遍采用的是高斯克吕格投影,在英美国家称为横轴墨卡托投影(Transverse Mercator)。,北京54与西安80坐标系,都是投影直角坐标系 北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。,ENVI中自定义坐标系,ENVI中的坐标定义文件存放在HOME ITTIDLxxproductsenvixx map_proj 文件夹下,三个文件记录了坐标信息: ellipse.txt 椭球体参数文件 datum.txt 基准面参数文件 map_proj.txt 坐标系参数文件 在ENVI中自定义坐标系分三步:定义椭球体、基准面和定义坐标参数,定义椭球体,语法为 ,。这里将“Krasovsky,6378245.0,6356863.0”和“IAG-75,6378140.0,6356755.3”加入ellipse.txt末端。 注:ellipse.txt文件中已经有了克拉索夫斯基椭球,由于翻译原因,这里的英文名称是Krassovsky,为了让其他软件平台识别,这里新建一个Krasovsky椭球体。,添加基准面与定义坐标系,坐标系定义练习,利用自定义坐标系将一幅北京54坐标系转化为西安80坐标系。 试验的栅格数据情况为:一幅北京坐标系的栅格数据,投影参数如下: 投影类型:Transverse Mercator 椭球:Krasovsky 基准面:Krasovsky(自定义) 中央经线:117 东向偏移:500000m,波段运算,波段运算工具用来定义输入的波段或文件,并调用用户编写的函数,最后将结果输出到文件或是内存中。 例如表达式: (float(b1)+float(b2)+float(b3)/3.0,基于IDL的波段运算,由于 ENVI 为你提供对 IDL 性能的访问,你可以使用内置的 IDL 功能的能力、IDL 用户函数,或书写你自己的程序执行自定义的操作。有两种方式使用IDL用户函数: 将编写好的.pro或者.sav 文件放在 save_add 目录下,启动ENVI。 当你保存的是 .pro 文件时候,必须启动 ENVI + IDL模式, 单击主菜单-File- Compile IDL Module; 如果你只有单独的ENVI,你必须提供,编译好的 sav文件。,一个简单的练习,下面的程序文本可以在一个文本编辑器中输入,并用文件名 user_ 来保存放到save_add文件夹下: 实例: FUNCTION user_bm1, b1, b2 RETURN, b1+b2 END 启动ENVI,单击主菜单-File-Open Image File打开一个多波段文件。 单击主菜单- Basic Tools-Band Math,在Enter an expression field中键入user_bm1(b1, b2)。 单击OK,为b1和b2选择对应的波段。,批处理,批处理模式的ENVI和正常模式下没有什么区别,只是通过一系列特定的函数库来执行ENVI的功能。 ENVI 功能函数分散在大约50个小的IDL save文件中,这些二进制的文件包括数据和编译后的程序。这些save文件存放在ENVI安装路径下的Save目录下。ENVI核心save文件包括ENVI的基本功能函数,动态运行函数以及ENVI运行所需的内部变量。在典型的Windows PC上这些文件存放在:C:rsiidlxxproductsenvixxsave 目录下。,批处理例子,一个简单的ENVI批处理程序 pro bt_init envi,/restore_base_save_files ;恢复ENVI sav文件 envi_batch_init,log_file=batch.log ;开始批处理模式 ;Batch processing would go here ; 编写批处理过程 envi_batch_exit ;结束批处理模式 end,ENVI函数,ENVI提供了大量处理函数供程序员使用,这些函数封装了交互式ENVI程序所提供的绝大多数的功能。每个处理程序都是IDL的程序或是函数,并可以被任何其它的IDL程序所调用。可以通过ENVI的帮助Working with ENVI - ENVI Reference Guide - ENVI Routines查看这些函数的使用说明和例子。,开发独立于ENVI界面的系统,全国旱情遥感监测系统 中科院遥感所,ENVI/IDL与ArcGIS一体化集成方案,数据互操作与共享 平台间无缝链接 系统一体化集成,ENVI/IDL与ArcGIS数据互操作与共享,ENVI完全支持Geodatabase读写 File Based Geodatabase Personal Geodatabase Enterprise(SDE)Geodatabase ENVI支持E00和ShapeFile文件格式 ArcGIS支持ENVI的文件格式 ENVI支持ArcGIS的企业级服务,ArcGIS (Including Desktop, Server, Image Server),ENVI/IDL,Geo Database,ENVI/IDL与ArcGIS Desktop,ENVI/IDL与其它语言集成开发,实现技术手段: Callable 技术 IDLDrawWidget ActiveX 对象输出助手,Callable IDL技术,IDL可以作为动态链接库被外部程序调用,称之为Callable IDL技术。 外部程序可以像IDL环境一样使用相关的程序或函数。,VC调用ENVI/IDL,实例在VC调用ENVI函数: 首先在建立一个VC的MFC工程,然后ITTIDL70externalinclude目录下拷贝idl_export.h头文件,并添加到VC工程中 工程设置连接 中的对象/库模块 中 添加idl.lib 工具选项目录 中的Library files 添加安装路径ITTIDL70BINBIN.X86 我的电脑右键属性 高级环境变量 系统变量 path中添加;安装路径ITTIDL70BINBIN.X86 IDL_Win32Init(0,handle,NULL,0); IDL初始化 IDL_ExecuteStr(“restore,satstretch.sav”); 执行IDL命令行 IDL_Cleanup(true);清除IDL,IDLDrawWidget ActiveX,实例在C#调用ENVI/IDL函数: 首先在建立一windows应用程序。在工具箱上右键选择项COM组建选中IDLDrawWidget Control 3.0 拖动 控件到窗体上 axIDLDrawWidget1.IdlPath 设定IDL库文件目录 n = axIDLDrawWidget1.InitIDL(int)this.Handle); 初始化IDL控件 axIDLDrawWidget1.ExecuteStr(“”);执行IDL命令,对象输出助手,可以将IDL的数据可视化与分析的功能添加到其他应用软件中 能够很容易地将IDL对象输出到Java和COM环境 自动化处理和直接缩短接口开发时间,将IDL对象输出为COM,定义IDL类(_ define) 我的电脑右键属性 高级环境变量 系统变量 path中添加; C:Program FilesMicrosoft Visual Studio 8Common7IDE 在IDL命令行中输入IDLEXBR_ASSISTANT 回车打开对象输出助手 File New Project COM选择要输出的* _ 文件打开将文件加载进输出助手 设置对象要输出的过程、函数及其参数 File Save project保存工程 Build Build object 编译输出对象 生成*.dl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校电炒锅管理制度
- 学生俱乐部管理制度
- 安全办部门管理制度
- 安哥拉卫生管理制度
- 宝贝王卫生管理制度
- 实训室物资管理制度
- 客房部员工管理制度
- 客运车公司管理制度
- 家具厂培训管理制度
- 家政流程及管理制度
- 2024-2030年中国电船行业前景展望及投资战略分析报告
- 2025版国家开放大学法学本科《知识产权法》期末纸质考试第三大题名词解释题库
- 保安反恐防暴培训
- 《无人机测绘技术》项目2任务1无人机航测任务规划
- 新能源汽车充电桩项目可行性研究报告模板及范文
- 电力市场概论张利课后参考答案
- 2024版首诊负责制度课件
- 人工智能在教育行业的创新应用研究
- 常州大学《工程热力学》2022-2023学年第一学期期末试卷
- 高考物理一轮复习考点精讲精练第34讲 光电效应 波粒二象性(解析版)
- 新能源行业光伏发电技术操作指南
评论
0/150
提交评论