茹彥翔 王棟 陳恒 臧文乾
摘 要: 研究了WCF原理及其優(yōu)勢(shì),設(shè)計(jì)并實(shí)現(xiàn)了一種基于WCF技術(shù)的遙感影像高效處理平臺(tái)。利用WCF技術(shù),將系統(tǒng)的表示層、影像處理層和數(shù)據(jù)訪問(wèn)層相分離,并通過(guò)WCF調(diào)度服務(wù)器進(jìn)行消息總控。平臺(tái)層間松耦合、層內(nèi)高內(nèi)聚,邏輯功能清晰。實(shí)驗(yàn)及實(shí)際應(yīng)用表明,該平臺(tái)有效提高了遙感影像處理效率,具有更高的魯棒性,且易于控制和便于二次開(kāi)發(fā)。
關(guān)鍵詞: 遙感影像處理; WCF; 松耦合; 高內(nèi)聚
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2016)11-01-04
A WCF technology based efficient remote sensing image processing platform
Ru Yanxiang1,2, Wang Dong2, Chen Heng1,2, Zang Wenqian2
(1. School of Computer and Information Engineering Henan University, Kaifeng, Henan 475004, China;
2. Institute of Remote Sensing and Digital Earth Chinese Academy of Sciences)
Abstract: The principle and advantages of WCF(Windows Communication Foundation)are studied, and a WCF technology based remote sensing image processing platform with high efficient is designed and implemented. By using WCF technology, the system's presentation layer, image processing layer and data access layer are separated, and the message is always controlled by WCF scheduling server. The platform system has the properties of loose coupling between the layers, high cohesion within the layer and clear logic function of the layer. Experiments and practical applications show that the platform can effectively improve the efficiency of remote sensing image processing, is more robust and easy to control, and facilitates the secondary development.
Key words: remote sensing image processing; WCF; loose coupling; high cohesion
0 引言
遙感影像處理是對(duì)遙感圖像進(jìn)行輻射校正和幾何糾正、圖像整飾、投影變換、鑲嵌、特征提取、分類以及各種專題處理等一系列操作,以求達(dá)到預(yù)期目標(biāo)的技術(shù)[1]。隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,社會(huì)經(jīng)濟(jì)形態(tài)已經(jīng)從產(chǎn)品經(jīng)濟(jì)時(shí)代、服務(wù)經(jīng)濟(jì)時(shí)代逐步演變?yōu)橐泽w驗(yàn)為重要指標(biāo)的感官時(shí)代[2-3]。用戶所認(rèn)可的遙感影像處理軟件,需要對(duì)影像具有多種處理能力,更快的處理速度,較簡(jiǎn)潔的操作,以及更佳的用戶體驗(yàn)。為了滿足用戶的這種需求,就需要我們?cè)O(shè)計(jì)并開(kāi)發(fā)一種涵蓋圖像預(yù)處理,圖像后處理以及展示的高效的一體化平臺(tái)。
本文基于WCF技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)遙感影像處理平臺(tái),該平臺(tái)在完成基本的圖像處理功能的同時(shí),具有處理速度快,操作便捷,易于擴(kuò)展等特點(diǎn),且對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一的組織分發(fā)管理并保障了數(shù)據(jù)的安全性。
1 WCF相關(guān)技術(shù)概述
1.1 面向服務(wù)架構(gòu)
SOA(service-oriented architecture)面向服務(wù)架構(gòu)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)[4]。SOA伴隨著無(wú)處不在的標(biāo)準(zhǔn),為企業(yè)的現(xiàn)有資產(chǎn)或投資帶來(lái)了更好的重用性[5]。
1.2 Windows通訊接口
WCF(Windows Communication Foundation)是由微軟開(kāi)發(fā)的基于SOA的一系列支持?jǐn)?shù)據(jù)通信的應(yīng)用程序框架,整合了原有的windows通訊的.net Remoting,WebService,Socket的機(jī)制,并融合有HTTP和FTP的相關(guān)技術(shù)[6]。概括地說(shuō),WCF具有統(tǒng)一性,互操作性,安全與可信賴,兼容性四大優(yōu)勢(shì)[7]。是Windows平臺(tái)上開(kāi)發(fā)分布式應(yīng)用最佳的實(shí)踐方式。
2 問(wèn)題分析與整體架構(gòu)設(shè)計(jì)
2.1 問(wèn)題分析
為了滿足用戶日益提升的功能需求,在原有基礎(chǔ)上對(duì)平臺(tái)進(jìn)行改進(jìn),在此期間遇到若干問(wèn)題使得項(xiàng)目進(jìn)展遇到瓶頸,問(wèn)題如下。
⑴ 原始遙感影像數(shù)據(jù)有單體數(shù)據(jù)量大的特點(diǎn),下載影像較耗時(shí)。用戶通常想看到的是處理后影像,不是原始數(shù)據(jù),所以并非必須下載原始數(shù)據(jù)。
⑵ 普通計(jì)算機(jī)配置不適合做遙感大數(shù)據(jù)處理。通常在用戶機(jī)上執(zhí)行圖像處理算法速度慢,并占了用戶機(jī)大量CPU資源。
⑶ 遙感影像數(shù)據(jù)有效利用率低。往往用戶感興趣區(qū)域只是整張影像中的一部分,處理整張影像效率低,耗時(shí)長(zhǎng)。
⑷ 數(shù)據(jù)安全性得不到保障。遙感影像數(shù)據(jù)具有較高的研究?jī)r(jià)值,若被不法分子得到原始數(shù)據(jù),有可能損害國(guó)家利益。
⑸ 缺少公共處理平臺(tái)對(duì)數(shù)據(jù)、產(chǎn)品進(jìn)行統(tǒng)一的分發(fā)和管理。隨著時(shí)間的推進(jìn),平臺(tái)所需要管理的遙感影像數(shù)據(jù)會(huì)越來(lái)越多,用于管理數(shù)據(jù)所付出的代價(jià)會(huì)越來(lái)越高。
2.2 整體架構(gòu)設(shè)計(jì)
為了解決上述問(wèn)題,可以使用WCF技術(shù)將系統(tǒng)表示層、影像處理層和數(shù)據(jù)訪問(wèn)層相分離,從而跨過(guò)項(xiàng)目開(kāi)發(fā)瓶頸。平臺(tái)的整體架構(gòu)圖如圖1所示。
前臺(tái)展示模塊,即用戶看到的遙感影像處理平臺(tái),是用戶的操作界面,負(fù)責(zé)向WCF調(diào)度服務(wù)器發(fā)送圖像處理請(qǐng)求,給用戶提供遙感影像在數(shù)字地球上的瀏覽、展示等功能。
WCF調(diào)度服務(wù)器負(fù)責(zé)各個(gè)模塊之間的通信,對(duì)平臺(tái)進(jìn)行統(tǒng)一調(diào)度管控。負(fù)責(zé)接收用戶請(qǐng)求,通知數(shù)據(jù)中心準(zhǔn)備數(shù)據(jù),向生產(chǎn)集群請(qǐng)求圖像處理,接收或轉(zhuǎn)發(fā)各個(gè)模塊的反饋信息。實(shí)現(xiàn)了原始影像無(wú)需下載,解決了數(shù)據(jù)安全問(wèn)題。
生產(chǎn)集群模塊負(fù)責(zé)執(zhí)行用戶請(qǐng)求的圖像處理程序,如幾何校正,圖像融合,目標(biāo)識(shí)別,圖像切分等算法程序。解決了影像處理緩慢問(wèn)題和影像利用率低的問(wèn)題。
數(shù)據(jù)中心模塊負(fù)責(zé)向圖像處理算法提供數(shù)據(jù)支撐,并向用戶提供處理后影像的下載服務(wù),在保障數(shù)據(jù)安全的基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)共享,以及對(duì)海量的遙感影像數(shù)據(jù)進(jìn)行組織管理。解決了隨著遙感影像數(shù)據(jù)的增加導(dǎo)致的數(shù)據(jù)分發(fā)管理代價(jià)過(guò)高的問(wèn)題。
3 系統(tǒng)實(shí)現(xiàn)
3.1 客戶端實(shí)現(xiàn)
客戶端即前臺(tái)展示模塊,具有處理用戶I/O操作,與服務(wù)端交互以及瀏覽和展示影像數(shù)據(jù)等功能。其具體實(shí)現(xiàn)如下。
步驟1:客戶端調(diào)用檢索遙感影像原始數(shù)據(jù)的WCF契約接口,獲得原始數(shù)據(jù)列表,選擇影像,接口示例如下:
[OperationContract]
List
//fileInfo是查找條件字符串,包括最大最小經(jīng)緯度,時(shí)間,圖像格式等
步驟2:客戶端根據(jù)用戶選擇是否只對(duì)感興趣區(qū)域進(jìn)行處理決定是否需要調(diào)用圖像切分程序的WCF契約接口。
步驟3:客戶端調(diào)用圖像處理程序的WCF契約接口,接口示例如下(以幾何校正為例):
[OperationContract(IsOneWay=true)]
void RunMatCorrection(string matArgument, string resultPath);
//matArgument是參數(shù)字符串,resultPath是輸出路徑
步驟4:接收服務(wù)器反饋的處理進(jìn)度,并顯示進(jìn)度信息,客戶端以進(jìn)度條的形式呈現(xiàn)給用戶。
步驟5:處理完成后,客戶端根據(jù)用戶選擇是否需要展示處理結(jié)果決定是否需要向服務(wù)端發(fā)送下載請(qǐng)求。
3.2 服務(wù)端實(shí)現(xiàn)
服務(wù)端即WCF調(diào)度服務(wù)器,與客戶端,數(shù)據(jù)中心及生產(chǎn)集群三個(gè)模塊交互,是整個(gè)系統(tǒng)的中心,負(fù)責(zé)各個(gè)模塊程序有序穩(wěn)定的執(zhí)行。其具體實(shí)現(xiàn)如下。
步驟1:WCF的服務(wù)不能孤立地存在,需要寄宿于一個(gè)運(yùn)行著的進(jìn)程中,既通常所說(shuō)的宿主,服務(wù)寄宿就是為服務(wù)指定一個(gè)宿主的過(guò)程[8]。WCF是一個(gè)基于消息的通信框架,采用基于終結(jié)點(diǎn)(Endpoint)的通信手段。終結(jié)點(diǎn)由地址(Address)、綁定(Binding)和契約(Contract)三要素組成[9]。本平臺(tái)用一個(gè)窗體程序作為所創(chuàng)建的一系列WCF服務(wù)的宿主,啟動(dòng)服務(wù)器監(jiān)聽(tīng)客戶端請(qǐng)求。其主要代碼如下:
ServiceHost host=new ServiceHost(typeof(CalculatorService));
//WCF服務(wù)節(jié)點(diǎn)
NetTcpBinding binding=new NetTcpBinding();
//綁定TCP/IP協(xié)議
binding.Security.Mode=SecurityMode.None;
host.AddServiceEndpoint("Contracts.ICalculator",
binding, "net.tcp://" + path + ":8889");
// Contracts.ICalculator為契約接口,path為服務(wù)地址
步驟2:服務(wù)器監(jiān)聽(tīng)到客戶端請(qǐng)求,調(diào)用檢索遙感影像原始數(shù)據(jù)WCF服務(wù),向數(shù)據(jù)中心發(fā)送請(qǐng)求,將數(shù)據(jù)列表反饋給客戶端。
步驟3:服務(wù)器若監(jiān)聽(tīng)到圖像切分請(qǐng)求,調(diào)用圖像切分WCF服務(wù),向生產(chǎn)集群發(fā)送請(qǐng)求,運(yùn)行算法服務(wù)器上的切分程序。此處切分不進(jìn)行降采樣,只切出一層的用戶感興趣區(qū)域。
步驟4:服務(wù)器通過(guò)匹配到對(duì)應(yīng)契約,調(diào)用對(duì)應(yīng)的WCF算法服務(wù),處理的影像是用戶根據(jù)數(shù)據(jù)列表選擇的影像或切出的感興趣區(qū)域,數(shù)據(jù)中心將影像通過(guò)局域網(wǎng)傳輸?shù)剿惴ǚ?wù)器處理,用戶無(wú)需下載原始影像。WCF服務(wù)偽代碼如下(以幾何校正為例):
public void RunMatCorrection(string matArgument,
string resultPath)
{ 解析參數(shù)字符串matArgument;
傳參到生產(chǎn)集群,運(yùn)行幾何校正算法;
}
步驟5:接收計(jì)算服務(wù)器反饋回的進(jìn)度信息,轉(zhuǎn)發(fā)給客戶端,進(jìn)度信息為百分制形式。
步驟6:算法運(yùn)算完成后,若監(jiān)聽(tīng)到客戶端發(fā)來(lái)展示處理后影像的請(qǐng)求,服務(wù)器再次調(diào)用WCF切分服務(wù)。此處切分將圖像按金字塔模型切成多層,用于展示。