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