協(xié)同顯示系統(tǒng)實現(xiàn)GIS的超高分辨率顯示
圖3例舉了一個由四個從節(jié)點顯示終端所組成的超分辨率顯示系統(tǒng)。主節(jié)點控制模塊是控制核心,第一步,按照行優(yōu)先,從左到右的順序,為每個從節(jié)點賦予了一個唯一的編號。
由這個唯一的編號可以查找到對應(yīng)的從節(jié)點的地址、端口、可用狀態(tài)等,為通信模塊做好通信準(zhǔn)備。第二步,要計算出每個從節(jié)點所需顯示的區(qū)域的地理范圍。由圖我們可以看出,整個大視景顯示區(qū)域由若干局部區(qū)域拼接而成,各從節(jié)點的編號決定了它們所要顯示的局部區(qū)域。具體實現(xiàn)是,將主節(jié)點的顯示屏幕分割成與從節(jié)點顯示矩陣成相似形的若干區(qū)塊,每個屏幕區(qū)塊和一個從節(jié)點對應(yīng)。GIS平臺提供了將屏幕坐標(biāo)轉(zhuǎn)化為地理坐標(biāo)的接口,因此每個屏幕區(qū)塊的地理坐標(biāo)都可以計算出來。地理坐標(biāo)計算出來之后,由編號值查找對應(yīng)從節(jié)點的地址和端口,并將地理坐標(biāo)信息傳送給該從節(jié)點。到這里,主節(jié)點控制模塊將從節(jié)點的編號和它所要顯示的內(nèi)容緊密地結(jié)合在了一起。圖3右側(cè)是系統(tǒng)顯示的戰(zhàn)場推演圖。
系統(tǒng)通信模塊基于ICE平臺而開發(fā),支持分布式對象通信,主節(jié)點端系統(tǒng)通信模塊主要負(fù)責(zé):
一、向各個從節(jié)點發(fā)送消息或者數(shù)據(jù),包括命令消息、地理坐標(biāo)信息、圖層數(shù)據(jù)等,
二、接受從節(jié)點返回的確認(rèn)信息,包括從節(jié)點的可用狀態(tài)、同步狀態(tài)等。
從節(jié)點一側(cè),同樣包括通信模塊、控制模塊。從節(jié)點通信模塊負(fù)責(zé)接收主節(jié)點發(fā)送來的消息及數(shù)據(jù),以及向主節(jié)點反饋響應(yīng)結(jié)果。從節(jié)點控制模塊響應(yīng)接受到的命令消息,執(zhí)行相應(yīng)操作,訪問地理信息數(shù)據(jù)庫,讀取相應(yīng)的數(shù)據(jù)進(jìn)行繪制并顯示。
3 系統(tǒng)同步技術(shù)
作為一個分布式協(xié)同顯示系統(tǒng),為了能給用戶呈現(xiàn)邏輯上唯一的、完整的、正確的大視景,各從節(jié)點之間的顯示同步顯得尤為重要,因此在實現(xiàn)過程中,必須對同步實施嚴(yán)格精準(zhǔn)的控制,具體的指令流同步控制邏輯如圖4所示。
由圖可以看出,系統(tǒng)需要同步的操作主要分為三大類:繪圖、視圖變更、系統(tǒng)命令。繪圖命令包括繪制和顯示;視圖變更操作包括改變地圖投影類型和改變圖層顯示控制;系統(tǒng)命令指少量操作系統(tǒng)消息。這些同步的實現(xiàn)根據(jù)所涉及的層次由低到高劃分為:幀緩存交換同步,數(shù)據(jù)同步,消息同步。
(1)幀緩存交換同步
圖形顯示卡由兩組幀緩存的支持以達(dá)到幀與幀之間平滑的過渡。其中一組緩存用于畫面的顯示,而畫面的繪制則是在另一組緩存上進(jìn)行,當(dāng)一幅畫面繪制完成后這兩組幀緩存進(jìn)行交換,新完成繪制的畫面將被顯示,而下一幅畫面將被繪制。這么做的目的在于避免發(fā)生在相同的幀緩存上進(jìn)行顯示和繪制的工作所造成的畫面失真感。
幀緩存交換同步指的是各從節(jié)點圖形顯示卡的前后緩沖區(qū)交換動作的同步性:在二維GIS動態(tài)推演和三維GIS中,各從節(jié)點的幀繪制時間互有長短,若我們沒有有效的手段控制各幀繪制完成后幀緩沖交換動作的同步進(jìn)行,那么繪制較快的從節(jié)點將提前進(jìn)入下一幀的顯示,這就造成了各從節(jié)點顯示內(nèi)容的不一致性。例如,顯示移動目標(biāo)時,如果其中一個從節(jié)點先進(jìn)行幀緩沖交換而提前進(jìn)入下一幀的顯示,那么大視景顯示矩陣的接縫處就會產(chǎn)生撕裂感。我們是用軟件實現(xiàn)幀緩存交換同步的,通過網(wǎng)絡(luò)進(jìn)行消息傳遞,控制圖形API的SwapBuffers指令同步執(zhí)行:具體來說是使用網(wǎng)絡(luò)柵障(networkbarrier)功能,各從節(jié)點SwapBuffers命令的同步執(zhí)行由主節(jié)點控制,從節(jié)點在完成繪制并能夠進(jìn)行幀緩存交換時將到達(dá)同步點,此時從節(jié)點將通知主節(jié)點并進(jìn)入等待狀態(tài);繪制較快的從節(jié)點進(jìn)程將被阻塞,直到最后的節(jié)點也完成繪制抵達(dá)同步點后,主節(jié)點向所有從節(jié)點發(fā)送繼續(xù)執(zhí)行的命令,各節(jié)點才同時執(zhí)行SwapBuffers指令,從而達(dá)到同時交換幀緩存的效果。由于同步的手段是通過網(wǎng)絡(luò)以軟件方式實現(xiàn)的,幀緩存交換同步在效果上可能會受到網(wǎng)絡(luò)延時影響。
(2)數(shù)據(jù)同步
數(shù)據(jù)同步指的是,主節(jié)點作為全景操作控制端,導(dǎo)入新的地圖圖層或者添加新的標(biāo)繪圖形,從節(jié)點必須同步導(dǎo)入相同的地圖圖層或者同步畫上相同的標(biāo)繪圖形。系統(tǒng)的數(shù)據(jù)同步是以主節(jié)點“推”的方式實現(xiàn)的,即主節(jié)點有新的數(shù)據(jù)輸入時,主動向所有從節(jié)點廣播數(shù)據(jù)同步消息,如果是主節(jié)點導(dǎo)入外部數(shù)據(jù),主節(jié)點就將外部數(shù)據(jù)源地址發(fā)送給所有從節(jié)點,各從節(jié)點自行從該數(shù)據(jù)源中取相應(yīng)數(shù)據(jù);如果是主節(jié)點自行添加標(biāo)繪數(shù)據(jù),主節(jié)點就向所有從節(jié)點發(fā)送一份該標(biāo)繪層的數(shù)據(jù)。
(3)消息同步
此處的消息包括GIS平臺定義的消息以及少量操作系統(tǒng)消息。比如,地圖投影坐標(biāo)系的改變、圖層顯示控制的改變、窗口大小的改變等等。主節(jié)點一旦截獲這些來自平臺或者操作系統(tǒng)的消息,就立即通知所有從節(jié)點,從節(jié)點根據(jù)收到的消息作同步響應(yīng)動作。
4 結(jié)語
目前該系統(tǒng)已經(jīng)應(yīng)用于某軍區(qū)的GIS作戰(zhàn)綜合應(yīng)用系統(tǒng),獲得良好的表現(xiàn)。超高分辨率大視景顯示系統(tǒng)為GIS應(yīng)用提供一種多通道并行協(xié)同圖形輸出,實現(xiàn)超高分辨率顯示的方法,適用于軍事指揮調(diào)度、交通路況分析、搶險救災(zāi)分析、電網(wǎng)鋪設(shè)分析、國土資源調(diào)查等大型GIS應(yīng)用場景。
評論