,, ,,,6
(1.新疆農業大學林業研究所,烏魯木齊 830000;2.滁州學院 計算機與信息工程學院,安徽 滁州 239000;3.滁州學院 地理信息與旅游學院,安徽 滁州 239000;4.新疆衛星應用中心,烏魯木齊 830000;5.中國科學院遙感與數字地球研究所,北京 100101;6.河南大學 計算機與信息工程學院,河南 開封 475004)
GIS已廣泛應用在農、林、水利、交通等各行各業,其基礎理論不斷被完善,GIS軟件的功能也從最初簡單的顯示、輸出,到具備高級的統計分析、空間分析等功能,再到與網絡、遙感、VR等各種新技術相結合,功能越來越強大。與此同時,遙感技術也取得了長足的進步,除了作為GIS應用更新數據的重要來源之一,對于遙感數據自身處理分析算法的應用研究也越來越多,能從影像中提取出了更多的信息,廣泛應用于資源普查、環境監測等方面。遙感與GIS各有優勢且互補性強,兩者的結合是發展的必然趨勢[1-3]。
遙感與GIS的結合,多體現在數據的使用層面。用遙感數據提取出來的信息,進行GIS分析和應用,是最常見的結合方式。在系統軟件方面,遙感與GIS系統的集成方案還不夠完善,既有專門處理遙感數據的遙感軟件如:ENVI、ERDAS等,也有專業的GIS軟件如:ArcGIS、SuperMap等,各軟件之間單獨存在,且各成體系。即使ArcGIS與ENVI之間的集成,也只是體現在數據互操作、平臺之間以及系統一體化集成開發這三個方面。其集成開發的方式,也只是ENVI/IDL與ArcGIS桌面定制,或者是與ArcGIS Engine/ArcGIS Server進行集成。這種傳統GIS軟件的集成方式,多使用代碼將遙感算法固定在系統中。此類方案在后期的系統維護和功能擴展中的弊端便顯露出來,修改或增加一個功能算法,需要重新編碼,編譯生成新程序,出現“牽一發而動全身”的局面,從而導致系統的可維護性不高。利用插件技術成為提高軟件的可擴展性和可重用性的重要技術手段之一[4-5],然而插件仍需實現眾多接口,編寫大量代碼。
借鑒其他行業的經驗,如朱穎芳,謝建全[6]采用XML來描述界面上組件的信息,通過解析XML來動態的生成界面,實現了界面的重用以及界面與系統的分離。胡貞[7]通過XML實現地理信息系統表示層、應用層、數據層之間的數據交換,并用 ArcGIS Engine 組件和 VB.NET 進行二次開發,完成了某市信息管網地理信息系統建設。盧學鶴等[8]使用插件技術實現了森林資源地理信息系統的開發,降低了系統功能的耦合度。然而在GIS與遙感相結合方面,進行的應用研究較少,如何將遙感算法快速靈活地與GIS系統集成,提高代碼重用率,降低維護難度,并將算法的實現代碼與系統平臺相分離[9],成為了GIS與遙感結合急需解決的問題之一。
結合插件動態加載程序模塊的思想與XML技術,本文提出一種面向遙感的GIS專題應用算法模塊動態集成框架,在分析遙感算法運行特點和需求的基礎上,搭建GIS算法集成框架,將算法界面、算法的實現代碼與系統平臺分離出來,使用XML描述文件作為遙感算法與系統平臺溝通的橋梁,構建GIS專題應用系統,為GIS系統和遙感算法結合提供新的思路與方法。
遙感數據覆蓋范圍廣、獲取速度快的特點使之成為了眾多行業重要的數據來源,對遙感數據處理和分析研究的算法也不斷涌現出來,如各種分類算法、分割算法、反演算法、融合算法等。應用在不同領域,產生了更多更具有針對性的算法,如林業應用中的森林生物量估算算法、森林結構信息提取算法;農業中地表溫度反演算法、作物估產模型等。
無論何種算法模型,其基本模式可抽象成:參數→模型→執行(見圖1),參數按其類型,可分為值類型與文件類型,值類型一般是模型中對應各種參數因子的值,而文件類型一般是指需要傳入模型的文件的物理路徑,或輸出文件的物理路徑等。模型算法既可以通過代碼的形式,內置在需要集成的軟件中,也可以封裝成單獨的文件,如可執行文件(EXE)、動態鏈接庫文件(DLL)、IDL編寫的PRO或SAV文件等,這類單獨的文件,在進行系統建設時可單獨調用,降低了系統與具體算法之間的耦合度。故可將算法所需參數,通過XML文件進行描述,在系統調用某一算法時,可將XML文件作為參數傳入,由算法內部解析,參與運算。

圖1 運行模式圖
常用的商業軟件,如ArcGIS、MapGIS、SuperMap等,功能強大、內容豐富,但在行業或專業領域應用時,系統不具有針對性,絕大多數功能會被閑置,造成系統資源浪費。在實際應用中,常利用一些GIS軟件提供的資源包,進行二次開發、或利用開源GIS軟件,將常用功能提取出來,構建具有基本功能、可定制的專題GIS系統平臺,然而很多功能會在開發時固定在程序中,后期修改、維護困難。因此,可采用一種新的方式來解決功能添加刪除的問題,除常用功能外,其他功能通過配置文件的形式,動態地添加進系統中。減少資源浪費,使系統更具有針對性和可擴展性。系統框架如圖2所示。

圖2 系統平臺框架
框架總體上可分為兩部分,一部分為GIS基本功能,包括數據的加載顯示、地圖圖層的管理、基本的空間分析和整飾輸出等功能。另一部分是專題應用算法模塊,包括模型配置文件、界面控件庫、參數交換文件。為實現系統具有動態加載算法的功能,和更具有可擴展性,降低系統維護難度,用戶只需要調整設計模型配置文件中的內容即可。系統在初始化時讀取配置文件,根據配置文件中的內容,實例化控件并添加至系統中。
模型配置文件是在本系統中,用于對算法等信息進行描述的文件。為使算法能與GIS系統靈活、方便地集成,將需要集成的算法進行結構化的描述,分為四個層次:“系統”、“模型”、“算法”、“參數”。并使用XML對算法進行組織。編寫XML文件的過程,也就是為待集成的算法,搭建系統界面的過程[6]。下面對這四個層次進行詳細的描述。
1.3.1 系統(System)
System是對將要構建系統總體的描述。有兩部分內容,第一部分是系統名稱(SysName),通過該節點,設置所構建系統的名稱,根據該節點中的內容,系統在啟動時,便能讀取該節點中的值,并將節點中的內容,作為系統窗體的名稱進行顯示,實現了動態更改系統名稱的功能。第二部分是模型(Model),是一系列算法的集合,所有屬于同一模型的算法,將被包含在同一個Model中。一個System節點下,可以放置多個Model平行節點,系統會根據Model節點的不同和數量,實例化多個不同數量的算法集合。
1.3.2 模型(Model)
Model是一系列算法的集合。一個完整系統需要集成的算法,在類型上可能不止一種,我們把相似或為實現同一目標的算法歸為一類,稱為一個模型(Model)。一個Model中又包含了兩部分,第一部分是名稱屬性(Name),是對這類算法進行總體的描述。第二部分是算法(Algorithm),該節點是對算法進行描述的模塊,一個模型中,也可以包含多個算法。
1.3.3 算法(Algorithm)
Algorithm是具體算法的描述模塊。該模塊包含了以下幾類屬性:算法名稱(Name)、簡稱(ShortName)、圖標(PicPath)、文件執行路徑(Process)、描述信息(Description)、參數(Arg),通過這些屬性,可將算法的主要信息進行詳細的描述。此時算法執行文件,已經被打包成DLL、exe、SAV等可供程序調用的文件形式,通過在算法節點中指定算法執行文件的物理位置,在需要時,可更新位于該位置的算法文件,無需重新更改系統源代碼,實現了算法代碼與系統代碼分離,降低了與系統之間的耦合性。
1.3.4 參數(Arg)
Arg是算法所需參數的描述模塊。該模塊包括參數名稱(Name)、參數標題(Title)、參數描述(Description)、文件類型參數(Process)、值類型參數(Value)等信息。在編寫具體算法時,需預先約定好參數的個數、類型、以及順序等信息,當實例化完成各個參數后,可將這些參數,按照事先約定的參數個數、類型及順序,將參數傳入待執行算法,參與算法運行。
在模型配置文件中存儲算法執行文件的物理路徑,而算法執行文件以exe、pro、sav、dll等形式獨立存在,減少了與GIS系統平臺之間的關聯性。XML格式的模型配置文件,能夠清晰地表達各個層次之間包含與被包含的關系,下面是一段模型配置文件的例子。
傳統的開發方式會根據算法需要,為每一個算法功能添加不同的窗口和控件,并進行布局,以及設置各個控件的屬性,編程實現對應的功能。然而這種方式,界面重用性差、界面與功能代碼耦合性高,后期維護困難[10]。為此可將一些共性的控件進行抽象,并實現相應的代碼功能。根據模型配置文件的描述,動態實例化模型配置文件中要求的不同類型和數量的控件,同時根據描述文件中的內容,設置與控件相關的其他屬性,以簡化工作,提高程序的可擴展性。
根據模型配置文件中定義的各個節點,本文設計了對應的控件,這些控件有:參數控件,包括值類型和文件類型;值類型的參數控件,是針對值類型的參數而設計的控件,如可供運行的閾值、文本等信息;文件類型的參數控件,針對文件類型的參數設計的控件,可以用來選擇計算機中存儲的文件,或者系統中已經加載的圖層等;同時還需要設計參數設置面板,用于放置參數控件的面板;模型運行面板,用于判斷參數是否合理,以及設置保存路徑;結果查看面板,是算法運行結果的查看面板(見圖3)。

圖3 參數準備界面
參數交換文件是根據遙感算法的特點而設計的XML格式文件。當算法參數控件實例化完成后,用戶可以根據需要,在界面上填入各種所需參數信息,系統會將這些參數序列化為一個XML格式的參數交換文件。在運行算法時,系統會開啟新的線程,調用原先在模型配置文件中存儲的算法文件,并將XML格式的參數交換文件作為參數傳入算法,此時該算法需要在其內部進行解析,獲得其運行所需參數,參與運算。由于篇幅關系,現只把主要節點進行描述,參數交換文件的主要描述如下。
文件描述了算法運行中所需的各種參數,主要節點為InputParameters節點和Outputparameters節點。InputParameters中包含了用戶在界面中填寫輸入的各類參數的名稱以及值。參數節點的名稱及參數的個數,隨模型配置文件中名稱和個數的變化而變化。Outputparameters節點包含了文件輸出路徑(OutDir)以及用于判斷算法運行狀態的進度文件(ProgressFile)、異常文件信息(ExceptionFile)。進度文件和異常文件由具體算法內部控制。算法在運行期間會不斷地向進度文件輸出進度信息,進度信息的數值為0至100,系統平臺會讀取其中的值,并進行顯示。異常文件則用來判斷當前算法的執行進度和運行狀態,若算法運行異常,系統會將異常信息保存到該文件中,以便后期查看及維護。
為了驗證本文設計的集成框架的高效性和實用性,以新疆高分綜合應用示范管理服務平臺系統為例進行說明。
系統目的是在具有基本GIS功能的條件下,將項目所需的各種遙感模型算法集成在同一個系統中。由于這些算法并不是同一個單位進行研發,故形式多樣。使用傳統開發方案,為每一個新算法增加新界面、集成新算法等操作都較為繁瑣,耗時耗力。且隨著項目進度不同,不能同時進行系統集成工作,為新增加算法而需不斷修改源代碼,以適應新增內容。按照本文提出的設計方式,搭建GIS系統平臺,構建通用算法控件,將算法的各種描述信息寫進XML格式的模型配置文件,通過添加、修改XML文件中相應的節點,更改界面顯示效果,增加新功能,并通過修改模型配置文件中,算法節點下的執行文件路徑,實現對系統中算法的更新。由于篇幅關系,先以一種算法的添加為例進行說明。
新疆高分綜合應用示范管理服務平臺系統:
為把對高分影像數據進行監督分類的算法進行集成,按照上述方式修改模型配置文件系統名稱為“新疆高分綜合應用示范管理服務平臺”、模型名稱為“森林資源”、算法名稱為“林果分類模型”以及所需的參數,包括感興趣區域文件參數、待分類影像參數及其他屬性信息,文件內容如下所示。
需要注意的是,在文件中配置的執行算法運行程序、算法圖標等信息,使用了相對位置,需要放置在系統啟動目錄中約定的文件夾下,程序會按照約定內容,解析相對位置,找到文件存放的絕對位置。
根據上節模型配置文件中的內容,程序在啟動時,根據模型配置文件中包含的節點信息,實例化相應數量和種類的控件,并添加至系統中,并根據節點中的屬性信息,設置控件的屬性。在系統中設置好各項參數以后,點擊程序中的運行按鈕,程序便會調用模型配置文件中,算法節點下所對應的算法執行文件,并將設置好的參數傳入,運行算法。效果顯示如圖4~5所示。

圖4 參數面板
新疆高分綜合應用示范管理服務平臺的主要功能如下圖6所示,包括任務設定、數據分析、專題信息提取、信息綜合表現與制圖、簡報成果發布、系統設置。

圖5 結果查看

圖6 系統主要功能
2.3.1 任務設定
主要是用來確定需要進行操作的數據空間范圍,和所需數據的時間范圍。
2.3.2 數據分析
集合了常用的空間分析功能,以及地圖操作工具,包括緩沖區分析、疊加分析;面積量算、距離量算、角度量算;平移、放大、縮小等操作。
2.3.3 專題信息提取
是程序用于集成各類算法的模塊,在本實例中,集成了森林資源分類算法,算法信息通過模型配置文件描述,程序經過解析文件、實例化相應的控件添加至程序中,該算法以影像數據和感興趣區域為參數,用于遙感影像的數據分類。
2.3.4 信息綜合表現與制圖
在數據處理完成之后,利用該模塊中的功能,可以實現地圖等數據的整飾輸出。包括添加比例尺、圖例、指北針、圖名、文本信息等地圖要素,以及設置輸出地圖的分辨率、尺寸大小等。
2.3.5 簡報成果發布
該模塊提供管理各種文檔資料的功能,包括文件的增刪改查,復制下載等操作。可為項目各種資料,提供簡單易用的管理功能。
為將遙感算法與GIS系統靈活動態集成,本文提出了一種面向遙感算法的GIS系統動態集成框架,為遙感算法與GIS系統的集成,提供新的思路,并在實際中應用,取得了良好的效果,具有以下優點:
1)將遙感算法的實現代碼與系統分離,系統只負責調用配置文件中指定位置的算法文件,降低了系統與算法之間的耦合度,提高了系統的可維護性。
2)通過修改模型配置文件中的節點,不需重新編碼和編譯,便能增加和修改算法,更新系統界面,使得界面設計與系統平臺分離,方便了后期功能的增刪等操作。