作者:朱金燦
來源:http://www.cnblogs.com/clever101
前言:前天我聽了一個ERDAS Imagine銷售人員對ERDAS Imagine新版本的介紹,得知ERDAS也準備做軟體增值服務。由此引發了我對幾大遙感軟體的二次開發方式的瞭解和一些思考。
目前GIS軟體的二次開發技術發展得如火如荼,從提供傳統的C語言API介面到組件、外掛程式、構件的開發方式,從傳統的C/S系統到SOA架構,流行的軟體開發技術在GIS軟體的二次開發基本上都可以看到身影。反觀遙感軟體的二次開發,我不由得感歎:和流行的開發方式距離頗大!下面我簡單介紹一下ERDAS、PCI和ENVI三大遙感軟體的二次開發方式及由此我得出的結論。
一.ERDAS的二次開發簡介
ERDAS的二次開發方式採用提供一系列的客戶化工具,具體是基於SPATIAL MODELER(空間建模工具)和C Developer’s Toolkit(簡稱C Toolkit)的EML語言客戶化Erdas Image圖形化使用者介面。
空間建模工具是ERDAS下的一個模組,是一個面向目標的模型語言環境。由空間建模語言(SML)、模型產生器(Model Maker)提供了23類共200多個函數和操作運算元,可以操作柵格資料、向量資料、矩陣、表格及分級資料。使用者只需要在視窗中繪出模型的流程圖,指定流程的意義和所有參數、矩陣,即可完成模型的設計。
在定義好模型後,可以將其轉換為指令碼形式,就可用下面介紹的EML語言為其編寫介面,實現功能客戶化。
C Toolkit是為ERDAS IMAGINE使用者提供的一個C函數庫和相關文本,以方便使用者修改軟體的版本或者開發一個完整的應用模組,從而擴充軟體功能滿足其特定項目需要。它包括了有經驗編程者期望的一套C語言應用編程介面API,是軟體開發人員在ERDAS IMAGINE軟體環境中建立客戶化應用的一個完整開發包,主要用於高水平的軟體客戶化與功能庫擴充。
上面的檔案是引自論文《ERDAS Imageine二次開發與客戶化方法》,在這裡你可以看到ERDAS的二次開發的一些劣勢:進行它的二次開發,你需要學習它的空間建模語言SML和宏語言EML,增加了二次開發難度;其次不支援流行語言的開發,如Java、C#;三是據我所知運行二次開發程式需要同時運行Erdas imagine。
另外我在網上也沒搜到基於Erdas Imageine的二次開發的應用系統,只搜到一些相關論文。
二.PCI的二次開發簡介
關於Erdas Imageine二次開發的資料本來就少,沒想到PCI的二次開發的資料網上更少。實際上PCI之前的二次開發方式和Erdas Imageine的二次開發方式頗為類似,提供一個C/C++ SDK來提供底層介面,使用自身的EASI指令碼語言來讓使用者可以方便的創造、編輯和運行使用者定製的所有SPANS和EASI/PACE所提供功能的圖形程式。
在最新的PCI的二次開發包ProSDK中我們見到了一些新東西:ProSDK為使用者提供了用C++、Java及Python等程式設計語言對Geomatica軟體組件以應用程式的方式進行應用或擴充的能力。ProSDK V1.2進一步提供了擁有更多功能的靈活開發環境。ProSDK V 1.2發布了Windows XP和Linux(Red Hat企業工作站5和SUSE Linux 10.1),併兼容 Microsoft Visual Studio .NET/C++ 2003、gcc3.3、Python 2.4,以及Java 1.5。Python和Java開始支援了。
但是和Erdas Imageine類似,我同樣在網上沒有找到基於ProSDK的二次開發的應用系統
三.ENVI的二次開發
ENVI是一個另類的遙感平台,因為它不是由傳統的開發語言如C/C++開發的,而是由它的二次開發語言IDL開發的。以至於我的一個同事在一次會上對我們說:“我們要糾正這樣一個認識,IDL不是ENVI的IDL,IDL和ENVI是不同的兩樣東西!”這個有點像我們不能把VC和C++對等起來一樣。
但是IDL並不等同於ERDAS Imageine的EML和PCI的EASI指令碼語言。有人在網上列出了IDL的種種優點:
IDL語言的英文全稱是Interactive Data Language。
簡單的說,IDL是VC、VB、JAVA、FORTRAN、MATLAB、OPENGL等語言的整合。
1、IDL =VC
從菜單的定製、訊息的傳遞、類的定義與繼承等方面來說,IDL如同VC一樣具備了強大的功能。
2、IDL=VB
從可視化介面的設計、語言的通俗易懂、編程的入門等方面來說,IDL如同VB一樣,讓初學者心曠神怡。
3、IDL=JAVA
從跨平台的移植來說,IDL的功能與JAVA一樣強大。應用IDL開發的產品,只要微不足道的工作就可以在各平台之間任逍遙。
4、IDL=FORTRAN
FORTRAN語言是科學計算領域一門最普遍的語言,是科學家最為廣泛應用的語言。從函數、子程式的調用、資料傳遞、語言風格、語言群組織等來說,IDL語言與FORTRAN則是如此的相像,見到了IDL,你就會想起FORTRAN語言。
5、IDL=MATLAB
IDL語言象MATLAB一樣,提供了大量封裝和參數化了的數學函數,為科學計算插上了強大的翅膀。
6、IDL=OPENGL
IDL的提供了豐富的二維、三維圖形映像類,其功能可與OPENGL媲美,而且其封裝好的圖形函數類的編程功能遠超過OPENGL函數庫。
另外IDL的一個突出優點是能以ActiveX控制項和COM組件的方式嵌入到C++、C#等常規語言開發的系統。
目前應用IDL語言,已經開發出了ENVI、IMAGIS、RiverTools、醫學等成熟產品。
由於IDL的優點,使得ENVI二次開發變得頗為流行,網上的資料也頗為豐富。但是我們也應看到,儘管IDL具備許多優點,畢竟也不能將其用於大型應用系統的開發。
四.結論
即使ENVI的基於IDL二次開發在業內小有名氣,相對GIS軟體的福士,小眾的RS軟體似乎不太重視二次開發,覺得使用者只需要使用軟體就行。但是我們應該看到3S行業的一個發展趨勢是行業軟體,就是3S軟體必須允許使用者定製系統,必須滿足使用者工作流程的需要。這就是俗語所說的:過去使用者需要的是毛坯房,現在使用者需要的精裝房。通過瞭解業界的幾大廠商的大動作:Leica收購ERDAS,ESRI倡導的ENVI/IDL與ArcGIS為遙感和GIS的一體化整合提供了一個最佳的解決方案,超圖軟體正式成為PCI以影像為核心的解決方案產品ProSDK & ProPack在中國地區的代理商,我們可以清晰看到:GIS和RS結合的趨勢越來越明顯,3S軟體商正從單一的提供軟體到為使用者提供整套解決方案和軟體服務。也因為如此,遙感軟體惟有學習GIS軟體,採用更加靈活的架構,支援主流的開發方式,才能滿足使用者的個人化需要。
參考文獻:
<1> 《ERDAS Imageine二次開發與客戶化方法》,作者劉俊傑,賈永紅,柯美忠。
<2> PCI Geomatics ProSDK (V 1.2) 技術說明書。
<3> 《IDL語言簡介》,(一堂之見/陳樹銘)。