1.ENVI功能擴展
1)自定義函式
自定義函式是用IDL編寫的用以實現某一功能的代碼,該函式可以在波段和波譜運算、基於專家知識的決策分類器、波譜分析等工具中使用。例如,以下函式的功能是將指定像元值變成0和1的掩膜。
2)自定義功能
自定義功能也稱ENVI擴展補丁,它是嵌在ENVI上的功能模組,具備互動式操作界面和相應處理功能的函式,以完成某一方面的功能。當然,ENVI功能擴展範圍比較廣,這兩個是比較常用的方式。
2.ENVI二次開發
ENVI二次開發是在ENVI已有的API之上,藉助IDL開發獨立於ENVI界面的業務化平台。大部分ENVI平台的
圖像處理功能都以函提供,IDL可以很方便地調用這些函式;同時,ID本身具有開發GUI的功能。這樣我們就可以很方便地基於ENVI+IDL開發一個業務很高的平台,完全“扔掉”ENVI的界面和操作方式。
3.集成開發
集成開發是用IDL 與其他開發語言混合編程,可以充分發揮各自的優點。例如,伽利略系統仿真設施(GSSF) 就是將IDL編寫的數據可視化組件嵌人.net 開發環境中。有時為了降低開發風險、減少開發量、提高開發效率,選擇兩個二次開發平台,如ArGIS與ENVI IDL,實現系統體化集成開發,實現真正的GIS 與遙感的一體化集成。為了實現與其他語言的集成開發,IDL擁有以下幾個技術:
1) 調用外部程式
IDL 調用其他語言功能的最簡單的方法就是調用外部程式,即使用SPAWN方式。SPAWN產生一個子進程來執行一個命令或一系列的命令調用時可以根據需要添加一系列關鍵字,
2) 調用COM組件
IDL可以調用微軟的組件對象模型(COM)和ActiveX控制項,通過這種方式可對IDL進行功能擴展。具體實現是通過DL.comIDispatch類實現.com組件的調用,通過IDL.comActiveX類實現ActiveX控制項的調用。
3)調用Java類對象
通過IDLJavabridge 方法可以直接訪問Java對象,可參考IDLProgrammer’sGuidesImporingintoIDL。
4)CALL_EXTERNAL方法
在CALL_EXTERNAL方法是調用其他語言創建的動態庫,需要先創建動態庫,在IDL中創建與VC函式中定義的數據結構相匹配的數據結構;利用過程MAKE..DLL編譯VC的函式和程式。生成在1DL中可以使用的動態連線庫DLL;最後利用函效CALEXTERNAL通過動態連線庫調用VC的函式。
5)DLM方式
DLM是IDL的功能擴展,DLM是通過C、C++等編譯器建立的一個動態庫(DLL)和一個DLM的ASCII檔案。IDL啟動時可自動載入並記錄該ASCII檔案中進行函式或類的調用定義方式,這種方式的調用跟調用IDL自身的功能函式一樣。該方式比普通的DLL動態庫調用更靈活方便,可以與IDL進行無縫集成。
6)Callable技術
ENVI/IDL函式可以作為動態程式庫被外部程式調用啟動,稱之為CallableIDL技術。使用allbleIDL技術,外部程式可以像在IDL環境中一樣執行IDL的代碼。
7)DLDrawWidget和COM_IDL_Bridge技術
這兩個方式都是甚於COM組件的,使用與Clble類似技術,其中IDLDawWidget可以在其他語言框架下創建IDL的顯示Draw組件,使得該技術非常適合用於在框架下進行ENVI/IDL的可視化展示,而COMIDLbageg是非帶完善的提供了ENVI/IDL現有功能調用的支持。
8)對象導出嚮導
使用對象導出嚮導可以將ENVI或IDL的功能添加到其他套用軟體中,該種模式能夠很容易地將ENVI或IDL對象輸出到Java和COM環境,進而直接縮短接口開發時間。