ENVI的二次开发课件

上传人:沈*** 文档编号:181900358 上传时间:2023-01-18 格式:PPT 页数:28 大小:1.13MB
返回 下载 相关 举报
ENVI的二次开发课件_第1页
第1页 / 共28页
ENVI的二次开发课件_第2页
第2页 / 共28页
ENVI的二次开发课件_第3页
第3页 / 共28页
点击查看更多>>
资源描述
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_info.pro,保存在保存在save_add目录下。目录下。重启重启ENVI+IDL环境,可以看到在环境,可以看到在ENVI最末端新增一个菜单最末端新增一个菜单MyFunctions,点击运行。,点击运行。坐标系原理 地理坐标系是以经纬度为单位的地球坐标系统,地理坐标地理坐标系是以经纬度为单位的地球坐标系统,地理坐标系中有系中有2个重要部分,即地球椭球体(个重要部分,即地球椭球体(spheroid)和大地)和大地基准面(基准面(datum)。)。大地基准面指目前参考椭球与大地基准面指目前参考椭球与WGS84参考椭球间的相对位置关系参考椭球间的相对位置关系(3个平移,个平移,3个旋转,个旋转,1个缩放),可以用其中个缩放),可以用其中3个、个、4个或者个或者7个个参数来描述它们之间的关系,每个椭球体都对应一个或多个大地参数来描述它们之间的关系,每个椭球体都对应一个或多个大地基准面。基准面。投影坐标系是利用一定的数学法则把地球表面上的经纬线投影坐标系是利用一定的数学法则把地球表面上的经纬线网表示到平面上,属于平面坐标系。数学法则指的是投影网表示到平面上,属于平面坐标系。数学法则指的是投影类型,目前我国普遍采用的是高斯类型,目前我国普遍采用的是高斯克吕格投影,在英克吕格投影,在英美国家称为横轴墨卡托投影(美国家称为横轴墨卡托投影(Transverse Mercator)。)。北京54与西安80坐标系 都是投影直角坐标系都是投影直角坐标系 北京北京54坐标系、西安坐标系、西安80坐标系实际上指的是我国的两个坐标系实际上指的是我国的两个大地基准面。大地基准面。坐标名称投影类型椭球体基准面北京54Gauss Kruger(Transverse Mercator)Krasovsky北京54西安80Gauss Kruger(Transverse Mercator)IAG75西安80椭球体名称年代长半轴(米)短半轴(米)扁率WGS8419846378137.06356752.31:298.257克拉索夫斯基(Krasovsky)19406378245.06356863.01:298.3IAG-7519756378140.06356755.31:298.257ENVI中自定义坐标系 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椭球体。椭球体。添加基准面与定义坐标系 语法为语法为,。这里。这里将将“Beijing-54,Krasovsky,-12,-113,-41”和和“Xian-80,IAG-75,0,0,0”加入加入datum.txt 末端。末端。注:有的时候为了与其他软件平台兼容,基准面的名称直注:有的时候为了与其他软件平台兼容,基准面的名称直接写成所用的椭球体名称。接写成所用的椭球体名称。在在ENVI任何用到投影坐标的功能模块中都可以新建坐标任何用到投影坐标的功能模块中都可以新建坐标系系(在任何地图投影选择对话框中,点击在任何地图投影选择对话框中,点击“New”按钮。按钮。),或者直接选择主菜单或者直接选择主菜单-Map-Customize Map Projection坐标系定义练习 利用自定义坐标系将一幅北京利用自定义坐标系将一幅北京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_bm1.pro 来保存放到来保存放到save_add文件夹下:文件夹下:实例:实例:FUNCTION user_bm1,b1,b2RETURN,b1+b2END 启动启动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/IDLGeoDatabaseENVI/IDL与ArcGIS DesktopENVI/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控件1.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选择要输出的*_ define.pro文件打开将文件加载进输出助手设置对象要输出的过程、函数及其参数File Save project保存工程Build Build object 编译输出对象生成*.dll 和*.tlb文件(或*.ocx和*.tlb)在运行中用regsvr32 对dll(ocx)注册ENVI/IDL与ArcGISEngine集成构建自己的GIS与RS一体化平台高级语言(高级语言(C#、java)+ArcGIS Engine+ENVI/IDL1、快速搭建系统原型2、有效解决了大数据量、数据浏览、栅格矢量叠加、矢量编辑、渲染、专题制图以及空间分析。3、强大的图像处理引擎。4、大大减少了代码开发量、以及程序的开发周期。5、您只需要关注于业务流。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!