《ENVI的二次开发》PPT课件.ppt

上传人:san****019 文档编号:7345273 上传时间:2020-03-20 格式:PPT 页数:28 大小:1.32MB
返回 下载 相关 举报
《ENVI的二次开发》PPT课件.ppt_第1页
第1页 / 共28页
《ENVI的二次开发》PPT课件.ppt_第2页
第2页 / 共28页
《ENVI的二次开发》PPT课件.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
ENVI的二次开发介绍 邓书斌 主要内容 1 菜单的定制与自定义坐标系2 波段运算与批处理3 ENVI函数4 ENVI IDL与ArcGIS一体化集成方案 ENVI的菜单文件 ENVI的菜单文件保存在HOME ITT IDLxx products envixx menu文件夹下 有三个文件 display men 显示窗口菜单文件display shortcut men 显示窗口右键快捷菜单envi men 主菜单文件每个菜单项有三部分组成 LEVEL BUTTONNAME UVALUE EVENTHANDLERPROCEDURE separator LEVEL是菜单按钮的级别 从0开始的整数表示 必选项 BUTTONNAME 菜单名称 必选项 UVALUE 分定义了为菜单项所赋给的用户值 用户值在同一用户函数处理多个菜单项时非常有用 可以区别那个菜单项被选中 EVENTHANDLERPROCEDURE 事件名称 可选项 separator 菜单 横线 标示关键字 菜单定制练习 在用记事本打开envi men文件 在文件的最后添加以下语句 0 MyFunctions 1 BasicFileInfo notused file info 启动ENVI IDL环境 在IDL环境下新建一个源文件 编写以下代码 PROfile info eventENVI SELECT title chooseafile fid in fidIF in fideq 1L THENreturnENVI FILE QUERY in fid ns ns nl nl nb nb fname fnameOpenR unit fname Get LUNinfo FSTAT unit Free LUN unitprint youselected fnameprint numberofsamples nsprint numberoflines nlprint numberofbands nbprint filesizeinbytes info sizeEND保存为file info pro 保存在save add目录下 重启ENVI IDL环境 可以看到在ENVI最末端新增一个菜单MyFunctions 点击运行 坐标系原理 地理坐标系是以经纬度为单位的地球坐标系统 地理坐标系中有2个重要部分 即地球椭球体 spheroid 和大地基准面 datum 大地基准面指目前参考椭球与WGS84参考椭球间的相对位置关系 3个平移 3个旋转 1个缩放 可以用其中3个 4个或者7个参数来描述它们之间的关系 每个椭球体都对应一个或多个大地基准面 投影坐标系是利用一定的数学法则把地球表面上的经纬线网表示到平面上 属于平面坐标系 数学法则指的是投影类型 目前我国普遍采用的是高斯 克吕格投影 在英美国家称为横轴墨卡托投影 TransverseMercator 北京54与西安80坐标系 都是投影直角坐标系北京54坐标系 西安80坐标系实际上指的是我国的两个大地基准面 ENVI中自定义坐标系 ENVI中的坐标定义文件存放在HOME ITT IDLxx products envixx 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 和 Xi an 80 IAG 75 0 0 0 加入datum txt末端 注 有的时候为了与其他软件平台兼容 基准面的名称直接写成所用的椭球体名称 在ENVI任何用到投影坐标的功能模块中都可以新建坐标系 在任何地图投影选择对话框中 点击 New 按钮 或者直接选择主菜单 Map CustomizeMapProjection 坐标系定义练习 利用自定义坐标系将一幅北京54坐标系转化为西安80坐标系 试验的栅格数据情况为 一幅北京坐标系的栅格数据 投影参数如下 投影类型 TransverseMercator椭球 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 CompileIDLModule 如果你只有单独的ENVI 你必须提供 编译好的sav文件 一个简单的练习 下面的程序文本可以在一个文本编辑器中输入 并用文件名user bm1 pro来保存放到save add文件夹下 实例 FUNCTIONuser bm1 b1 b2RETURN b1 b2END启动ENVI 单击主菜单 File OpenImageFile打开一个多波段文件 单击主菜单 BasicTools BandMath 在Enteranexpressionfield中键入user bm1 b1 b2 单击OK 为b1和b2选择对应的波段 批处理 批处理模式的ENVI和正常模式下没有什么区别 只是通过一系列特定的函数库来执行ENVI的功能 ENVI功能函数分散在大约50个小的IDLsave文件中 这些二进制的文件包括数据和编译后的程序 这些save文件存放在ENVI安装路径下的Save目录下 ENVI核心save文件包括ENVI的基本功能函数 动态运行函数以及ENVI运行所需的内部变量 在典型的WindowsPC上这些文件存放在 C rsi idlxx products envixx save目录下 批处理例子 一个简单的ENVI批处理程序probt initenvi restore base save files 恢复ENVIsav文件envi batch init log file batch log 开始批处理模式 Batchprocessingwouldgohere 编写批处理过程envi batch exit 结束批处理模式end ENVI函数 ENVI提供了大量处理函数供程序员使用 这些函数封装了交互式ENVI程序所提供的绝大多数的功能 每个处理程序都是IDL的程序或是函数 并可以被任何其它的IDL程序所调用 可以通过ENVI的帮助WorkingwithENVI ENVIReferenceGuide ENVIRoutines查看这些函数的使用说明和例子 开发独立于ENVI界面的系统 全国旱情遥感监测系统 中科院遥感所 ENVI IDL与ArcGIS一体化集成方案 数据互操作与共享平台间无缝链接系统一体化集成 ENVI IDL与ArcGIS数据互操作与共享 ENVI完全支持Geodatabase读写FileBasedGeodatabasePersonalGeodatabaseEnterprise SDE GeodatabaseENVI支持E00和ShapeFile文件格式ArcGIS支持ENVI的文件格式ENVI支持ArcGIS的企业级服务 ArcGIS IncludingDesktop Server ImageServer ENVI IDL GeoDatabase ENVI IDL与ArcGISDesktop ENVI IDL与其它语言集成开发 实现技术手段 Callable技术IDLDrawWidgetActiveX对象输出助手 CallableIDL技术 IDL可以作为动态链接库被外部程序调用 称之为CallableIDL技术 外部程序可以像IDL环境一样使用相关的程序或函数 VC调用ENVI IDL 实例在VC调用ENVI函数 首先在建立一个VC的MFC工程 然后 ITT IDL70 external include目录下拷贝idl export h头文件 并添加到VC工程中工程 设置 连接中的对象 库模块中添加idl lib工具 选项 目录中的Libraryfiles添加安装路径 ITT IDL70 BIN BIN X86我的电脑右键属性高级 环境变量 系统变量path中添加 安装路径 ITT IDL70 BIN BIN X86IDL Win32Init 0 handle NULL 0 IDL初始化IDL ExecuteStr restore satstretch sav 执行IDL命令行IDL Cleanup true 清除IDL IDLDrawWidgetActiveX 实例在C 调用ENVI IDL函数 首先在建立一windows应用程序 在工具箱上右键 选择项 COM组建选中IDLDrawWidgetControl3 0拖动控件到窗体上axIDLDrawWidget1 IdlPath设定IDL库文件目录n axIDLDrawWidget1 InitIDL int this Handle 初始化IDL控件axIDLDrawWidget1 ExecuteStr 执行IDL命令 对象输出助手 可以将IDL的数据可视化与分析的功能添加到其他应用软件中能够很容易地将IDL对象输出到Java和COM环境自动化处理和直接缩短接口开发时间 将IDL对象输出为COM 定义IDL类 define 我的电脑右键属性高级 环境变量 系统变量path中添加 C ProgramFiles MicrosoftVisualStudio8 Common7 IDE在IDL命令行中输入IDLEXBR ASSISTANT回车打开对象输出助手File NewProject COM选择要输出的 define pro文件打开将文件加载进输出助手设置对象要输出的过程 函数及其参数File Saveproject保存工程Build Buildobject编译输出对象生成 dll和 tlb文件 或 ocx和 tlb 在运行中用regsvr32对dll ocx 注册 ENVI IDL与ArcGISEngine集成 构建自己的GIS与RS一体化平台 高级语言 C java ArcGISEngine ENVI IDL 1 快速搭建系统原型2 有效解决了大数据量 数据浏览 栅格矢量叠加 矢量编辑 渲染 专题制图以及空间分析 3 强大的图像处理引擎 4 大大减少了代码开发量 以及程序的开发周期 5 您只需要关注于业务流
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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