張曉楠,任志國,曹一冰
(1.信息工程大學(xué) 地理空間信息學(xué)院,河南 鄭州450052;2.中華測繪服務(wù)公司,北京 100088)
隨著GIS應(yīng)用的不斷深入,除了要求GIS具有空間數(shù)據(jù)管理和圖形處理能力之外,還要求其能夠解決一些復(fù)雜的空間分析、空間模擬及空間決策分析等問題。這些復(fù)雜問題得以解決的最好辦法是依賴于空間分析模型的研究及其與GIS的集成[1,2]。目前,已存在很多空間分析模型和專業(yè)的空間分析軟件包,如地理學(xué)和地質(zhì)學(xué)中具有代表性的Space Stat和GS+.Fischer.Trapletti and Wang的空間相互作用模型軟件包,Getis&Chen的空間點(diǎn)格局統(tǒng)計(jì)軟件包等[3,4]。這些模型及軟件包在與GIS的集成過程中,各有特點(diǎn)和適用性,導(dǎo)致模型的可復(fù)用性和可擴(kuò)展性不強(qiáng)。因此,充分研究空間分析模型與GIS無縫集成從而有效發(fā)揮GIS的優(yōu)勢就顯得尤為重要。
空間分析模型與GIS在功能上的互補(bǔ)是二者集成的驅(qū)動力,它們的有效集成可增強(qiáng)GIS的空間分析功能,進(jìn)一步加深GIS應(yīng)用的深度,同時(shí)拓寬其使用范圍。目前,空間分析模型與GIS的集成方式主要分為3種。
1)外掛式集成:空間分析模型與GIS之間不存在程序上的連通性,各自運(yùn)行基本獨(dú)立,通過在二者之間增加共享數(shù)據(jù)文件來實(shí)現(xiàn),如圖1所示。這種集成方式開發(fā)成本低、易操作,但執(zhí)行效率不高,且非專業(yè)人員較難掌握,僅適用于開發(fā)周期較短的情況。

圖1 空間分析模型與GIS的外掛式集成方式示意圖
2)內(nèi)嵌式集成:空間分析模型與GIS具有共同的操作界面,系統(tǒng)運(yùn)行時(shí)以其中一個(gè)為主,通過共享數(shù)據(jù)文件和存儲空間來實(shí)現(xiàn),如圖2所示。這種集成方式為用戶提供全面有效的應(yīng)用功能,系統(tǒng)界面友好,運(yùn)行高效且穩(wěn)定,但是開發(fā)成本高,周期長。

圖2 空間分析模型與GIS的內(nèi)嵌式集成方式示意圖
3)無縫式集成:以空間分析模型的理論研究及實(shí)踐應(yīng)用均已相對成熟作為前提,在GIS不斷發(fā)展完善的基礎(chǔ)上,將空間分析模型作為專業(yè)的空間分析工具納入GIS環(huán)境,從應(yīng)用上集成二者共同的優(yōu)勢,是二者集成的最高層次。這種集成方式運(yùn)行效率和集成性較高,但需要投入各方面的人力和物力,開發(fā)難度大。
可見,在空間分析模型與GIS的集成過程中,無論采用哪種方式都具有一定的局限性,因此找尋不需要頻繁使用共享數(shù)據(jù)文件、不需要宿主軟件同時(shí)運(yùn)行且不需要大量重復(fù)性開發(fā)勞動的無縫集成方案是空間分析模型與GIS集成應(yīng)用中亟待解決的問題。基于中間件技術(shù)的集成正是這樣一種方案。
中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這類軟件在不同的技術(shù)之間共享資源[5]。它是位于系統(tǒng)軟件與應(yīng)用軟件之間的中間層,是網(wǎng)格計(jì)算的核心[6]。中間件通過封裝多源異構(gòu)環(huán)境,抽象各種各樣的應(yīng)用模型,屏蔽了信息訪問的底層細(xì)節(jié),并向用戶提供公開的標(biāo)準(zhǔn)接口和協(xié)議,保持了用戶應(yīng)用的相對獨(dú)立性。
可見,在空間分析模型和GIS的集成中融入中間件技術(shù),能解決上述集成方式中存在的問題,提高模型的可復(fù)用性,同時(shí)也能解決分布式異構(gòu)環(huán)境下的軟件開發(fā)問題,提高未來GIS系統(tǒng)的開發(fā)效率。
本文主要側(cè)重于將空間分析模型以中間件的方式集成到各類GIS平臺中,這里稱之為空間分析模型中間件。該中間件在設(shè)計(jì)上必須提供統(tǒng)一的異構(gòu)數(shù)據(jù)讀取接口、數(shù)據(jù)信息輸出接口、空間分析接口以及分析結(jié)果輸出接口等。空間分析模型中間件的設(shè)計(jì)原則為:
1)符合需求。充分發(fā)揮中間件的技術(shù)優(yōu)勢,將空間分析模型與GIS平臺分離開來,解決集成過程中的系統(tǒng)異構(gòu)和數(shù)據(jù)源異構(gòu)問題。
2)可移植性。在中間件實(shí)現(xiàn)的內(nèi)部構(gòu)架上,必須提供統(tǒng)一的編程接口,實(shí)現(xiàn)開發(fā)組件的可移植性。
3)可擴(kuò)展性。在中間件的使用周期范圍內(nèi),應(yīng)用系統(tǒng)的層次會不斷升級,必須充分考慮其升級的便捷性,便于進(jìn)行維護(hù)和擴(kuò)展。
根據(jù)層次化設(shè)計(jì)思想,基于以上設(shè)計(jì)原則,空間分析模型中間件的框架設(shè)計(jì)如圖3所示。

圖3 空間分析模型中間件的框架設(shè)計(jì)圖
設(shè)計(jì)上采用3層架構(gòu)體系,中間件層屏蔽了底層GIS平臺的異構(gòu)。當(dāng)用戶需要進(jìn)行某項(xiàng)應(yīng)用操作時(shí),只需注冊中間件后通過接口代理向系統(tǒng)發(fā)出請求,中間件層根據(jù)請求訪問相應(yīng)的數(shù)據(jù)并返回?cái)?shù)據(jù)的拓?fù)湫畔ⅲ虚g件管理引擎調(diào)用相應(yīng)的空間分析模型進(jìn)行分析,并將結(jié)果展示給用戶。這種設(shè)計(jì)模式使得空間分析模型與GIS軟件平臺的集成更加靈活,且不考慮平臺的異構(gòu)性,可提高空間分析模型的復(fù)用率,降低開發(fā)成本。
為了滿足應(yīng)用需求,空間分析模型中間件應(yīng)具備以下功能:
1)中間件注冊:負(fù)責(zé)完成中間件的管理,包括中間件的添加、注冊和卸載等;
2)數(shù)據(jù)讀取:負(fù)責(zé)實(shí)現(xiàn)應(yīng)用程序與數(shù)據(jù)庫的連接,以黑箱的方式讀取不同格式的數(shù)據(jù),返回空間分析需要的數(shù)據(jù)拓?fù)湫畔ⅲ?/p>
3)拓?fù)涮幚恚翰糠指袷降臄?shù)據(jù)不能直接存儲拓?fù)湫畔ⅲ谶M(jìn)行空間分析之前負(fù)責(zé)對部分無拓?fù)湫畔⒌臄?shù)據(jù)進(jìn)行自動處理;
4)空間分析:中間件的核心部分,接收獲得的異構(gòu)數(shù)據(jù)及其拓?fù)湫畔ⅲ瑘?zhí)行需要的空間分析運(yùn)算,返回分析結(jié)果。
虛函數(shù)是VC中一種特殊的函數(shù)類型,如果將一個(gè)類的成員函數(shù)聲明為虛函數(shù)[7],在其派生類中就會有許多不同的實(shí)現(xiàn)。利用虛函數(shù)的原理,程序員可在基類和派生類中利用相同的函數(shù)名和參數(shù)類型分別定義不同的操作,從而為同一個(gè)類繼承結(jié)構(gòu)中所有類的同一種行為提供了一個(gè)統(tǒng)一的接口。多態(tài)體現(xiàn)了一個(gè)類繼承結(jié)構(gòu)中不同類的對象對同一個(gè)消息作出不同響應(yīng)的能力,當(dāng)進(jìn)行消息發(fā)送時(shí),可將同一個(gè)消息發(fā)送至與消息有關(guān)的不同類的對象,同一個(gè)消息被不同類的對象接收以后,通過調(diào)用不同的成員函數(shù)(虛函數(shù))進(jìn)行不同的處理,作出不同的響應(yīng)。因此,利用虛函數(shù)的思想來實(shí)現(xiàn)空間分析模型中間件非常合適,其類結(jié)構(gòu)設(shè)計(jì)如圖4所示。
其中,CGeoFile類為基類,定義了數(shù)據(jù)的讀取接口,可獲得數(shù)據(jù)描述信息和數(shù)據(jù)類型:virtual std::vector
具體實(shí)現(xiàn)過程中,定義中間件管理引擎類CGeoFile Engine,程序運(yùn)行時(shí)將要讀取的文件指針放入一個(gè)CGeoFile的vector鏈表中,得到用戶請求后,循環(huán)此鏈表,用正在讀取的數(shù)據(jù)格式標(biāo)識與鏈表中對象的GetType()返回值比對,一旦遇到格式相同的對象,則使用該對象的GetData()函數(shù)讀取數(shù)據(jù),然后進(jìn)行拓?fù)涮幚砗拖鄳?yīng)的空間分析。

圖4 中間件實(shí)現(xiàn)類圖
最短路徑分析是計(jì)算機(jī)科學(xué)、GIS和運(yùn)籌學(xué)等學(xué)科研究的熱點(diǎn)問題,其根本目的是研究、籌劃一項(xiàng)網(wǎng)絡(luò)工程使其運(yùn)行效果最好,如制定一個(gè)從A地到B地運(yùn)行時(shí)間最短或運(yùn)輸費(fèi)用最低的運(yùn)輸方案等[8]。作為GIS的基本功能,最短路徑分析發(fā)揮著極大的作用,如“智慧城市”中的“智慧交通”以及ITS中的路徑規(guī)劃模塊、調(diào)度系統(tǒng)中的路徑規(guī)劃、手機(jī)地圖中的公交線路查詢等。本文以最短路徑分析模型為例,基于中間件技術(shù)進(jìn)行了與GIS的無縫集成,實(shí)驗(yàn)結(jié)果如圖5所示。

圖5 中間件集成系統(tǒng)界面
其中,中間件注冊模塊(見圖6)負(fù)責(zé)中間件的添加和注冊,不需對原程序進(jìn)行改動,直接將新增模塊以動態(tài)庫的形式添加到中間件鏈表末尾,以供用戶使用。中間件管理模塊(見圖7)實(shí)現(xiàn)對中間件基本信息的顯示和卸載,進(jìn)而實(shí)現(xiàn)對中間件的更新操作。

圖6 中間件注冊模塊截圖

圖7 中間件管理模塊截圖
[1]Goodchild M F. Geographic Information Systems and Science:Today and Tomorrow[J]. Procedia Earth and Planetary Science,2009(1):1 037-1 043
[2]Goodchild M F. Geographical Information Science[J]. International Journal Geographical Information Systems, 1992(6):31-45
[3]王勁峰,李連發(fā),葛詠,等. 地理信息空間分析的理論體系探討[J].地理學(xué)報(bào),2000,55(1):92-103
[4]王勁峰,柏延臣,朱彩美,等. 地理信息系統(tǒng)空間分析能力探討[J].中國圖像圖形學(xué)報(bào),2001,6(9):849-863
[5]奚麗倩,袁國良. 淺析中間件技術(shù)的研究現(xiàn)狀[J].電腦知識與技術(shù),2009,5(4):978-979
[6]李永紅,鄧紅艷. 中間件技術(shù)在GIS中的應(yīng)用[C]. GIS的設(shè)計(jì)開發(fā)與應(yīng)用,北京,2004
[7]王育堅(jiān).Visual C++面向?qū)ο缶幊探坛蘙M].北京:清華大學(xué)出版社,2003
[8]鄔倫,劉瑜,張晶,等. 地理信息系統(tǒng)——原理、方法和應(yīng)用[M].北京:科學(xué)出版社,2001
[9]湯國安,趙牡丹. 地理信息系統(tǒng)[M].北京:科學(xué)出版社,2000
[10]華一新,吳升,趙軍喜. 地理信息系統(tǒng)原理與技術(shù)[M].北京:解放軍出版社,2001