首页 > 软件开发 > 三种路径进行ENVI二次开发

快速发布【软件开发】相关需求,专业顾问为您服务 快速发布

用此手机号发布,您还可以点击 更换

发布需求
请输入正确的手机号
请输入正确的验证码

您是不是要找:

  • 专家问诊,提供专业建议
  • 急速响应,体验省心
  • 根据需求灵活定制解决方案

三种路径进行ENVI二次开发

标签:ENVI二次开发 2017-7-24 作者:唐明霞

  

  在ENVI中,用户可以很方便的通过IDL语言以及ENVI提供的二次开发工具对ENVI的功能进行扩展,添加新的功能函数,甚至开发独立ENVI界面的全新系统,也可以与第三方主流开发语言集成开发,如C++,.NET和Java。下面就是小编收集的三种途径进行ENVI二次开发。


  1.ENVI二次开发——ENVI功能扩展


  1)自定义函数


  自定义函数是用IDL编写以实现某一个功能的代码,该函数可以在波段和波谱运算、基于专家知识决策分类器、波谱分析等工具中使用。


  2)自定义功能


  自定义功能也称为ENVI扩展补丁,它是嵌在ENVI上的功能模块,具备交互式操作界面和相应处理功能的函数,以完成某一方面的功能。


envi二次开发一

添加自定义程序


  2.ENVI二次开发


  ENVI二次开发是在ENVI已有的API之上,借助IDL开发独立于ENVI界面的业务化平台。大部分ENVI平台的图像处理功能都以函数方式(ENVI Routines)提供,IDL可以很方便的调用这些函数,同时IDL本身具有开发GUI的功能。这样我们就可以很方便的基于ENVI+IDL开发一个业务程度很高的平***全“扔掉”ENVI的界面和操作方式。


envi二次开发二

二次开发与遥感业务化平台


  3.ENVI二次开发——集成开发


  集成开发是将IDL与其他开发语言混合编程,可以充分发挥各自的优点。如伽利略系统仿真设施(GSSF),就是将IDL编写的数据可视化组件嵌入.net开发环境中。有时候为了降低开发风险、减少开发量、提高开发效率,选择两个二次开发平台,如ArcGIS与ENVI/IDL,实现系统一体化集成开发,实现真正的GIS与遥感的一体化集成。


  为了实现与其他语言的集成开发,IDL拥有以下几个技术:


  1) 调用外部程序


  IDL调用其他语言功能的最简单的方法就是调用外部程序,即使用SPAWN方式。SPAWN产生一个子进程来执行一个命令或一系列的命令,调用时可以根据需要添加一系列关键字。


  2)调用COM组件


  IDL可以调用微软的组件对象模型(COM)和ActiveX控件,通过这种方式可对IDL进行功能扩展。具体实现是通过IDLcomIDispatch类实现com组件的调用,通过IDLcomActiveX类实现ActiveX控件的调用。


  3) 调用Java类对象


  通过IDL-Java bridge方法可以直接访问Java对象。


  4)CALL_EXTERNAL方法


  CALL_EXTERNAL方法是调用其他语言创建的动态库,需要先创建动态库,在IDL中创建与VC函数中定义的数据结构相匹配的数据结构;利用过程MAKE_DLL编译VC的函数和程序,生成在IDL中可以使用的动态连接库DLL;最后利用函数CALL_EXTERNAL通过动态连接库调用VC的函数。


  5) DLM方式


  DLM是IDL的功能扩展,DLM是通过C、C++等编译器建立的一个动态库(DLL)和一个DLM的ASCII文件。IDL启动时可自动加载并记录该ASCII文件中进行函数或类的调用定义方式,这种方式的调用跟调用IDL自身的功能函数一样。该方式比普通的DLL动态库调用更灵活方便,可以与IDL进行无缝集成。


  6) Callable技术


  ENVI/IDL函数可以作为动态链接库被外部程序调用启动,称之为Callable IDL技术。使用Callable IDL技术,外部程序可以像在IDL环境中一样执行IDL的代码。


  7)IDLDrawWidget和COM_IDL_Bridge技术


  这两个方式都是基于COM组件的,使用跟Callable技术类似,其中IDLDrawWidget可以在其他语言框架下创建IDL的显示Draw组件,使得该技术非常适合用于在框架下进行ENVI/IDL 的可视化展示;而COM_IDL_Bridge则是非常完善的提供了ENVI/IDL 现有功能调用的支持。


      以上就是小编介绍三种envi二次开发的途径,你学会了吗?

最新文章推荐

软件开发暂无最新文章查看全部推荐文章>

推荐人才