周 輝 , 馬 亮
(1.中國地震地球物理研究所 地震觀測與地球物理成像重點實驗室,北京100081;2.中國地震局第二監(jiān)測中心 陜西 西安 710054)
現(xiàn)今,科學(xué)數(shù)據(jù)的可視化已經(jīng)成為科學(xué)研究中數(shù)據(jù)分析的重要手段之一。數(shù)據(jù)可視化,旨在一目了然地揭示數(shù)據(jù)中的復(fù)雜信息,以幫助研究人員快速形象的了解數(shù)據(jù)實質(zhì)。地震地形變數(shù)據(jù)作為我國地震前兆臺網(wǎng)中歷史記錄比較完備、數(shù)字化程度較高的原始觀測數(shù)據(jù),非常適合成為可視化相關(guān)技術(shù)的研究和實驗對象。近年來,地震局地形變觀測臺網(wǎng)持續(xù)產(chǎn)出數(shù)據(jù),本文以地形變觀測臺網(wǎng)實時數(shù)據(jù)流為輸入,通過數(shù)據(jù)標(biāo)準(zhǔn)化處理、研究并改進相關(guān)數(shù)值算法,準(zhǔn)實時地產(chǎn)出指定時間窗及滑動步長、指定測項的地形變觀測數(shù)據(jù)二維圖像。初步完成一套可視化展示程序。
當(dāng)前,科學(xué)數(shù)據(jù)在科學(xué)研究中的作用日益顯著,數(shù)據(jù)不僅是科學(xué)研究的結(jié)果,且成為科學(xué)研究的基礎(chǔ)。人們不僅關(guān)心數(shù)據(jù)的建模、描述、組織、保存等,更關(guān)心如何利用海量數(shù)據(jù)的可知識對象化、可計算化、可視化,構(gòu)造基于數(shù)據(jù)的、開放協(xié)同的研究模式。
可視化(Visualization)是一個新興的交叉學(xué)科研究領(lǐng)域。近年來,可視化已經(jīng)成為對由測量或計算所產(chǎn)生的海量數(shù)據(jù)進行分析和詮釋的主要手段之一。通過將各種復(fù)雜的數(shù)據(jù)轉(zhuǎn)換為直觀的圖像,可視化能夠幫助用戶依靠視覺這一最有效的手段了解數(shù)據(jù)的內(nèi)在規(guī)律,進而取得新的發(fā)現(xiàn)。
地震科學(xué)數(shù)據(jù)具有多門類、多途徑、多格式等特點,地震工作者花費大量時間、精力,采集大量的地震數(shù)據(jù),然而,這些數(shù)據(jù)中的大部分可能與地震或地震災(zāi)害無關(guān)或者弱相關(guān),需要研究人員分析、過濾,以得到輕量、簡潔、有效的數(shù)據(jù),從而為圖像化提供可靠的數(shù)據(jù)來源。目前,地震前兆臺網(wǎng)的數(shù)據(jù)可視化方面主要僅限于連續(xù)觀測數(shù)據(jù)時間序列的曲線圖展示,產(chǎn)出的一些具有空間屬性的產(chǎn)品或?qū)?shù)據(jù)時間序列曲線進行專業(yè)加工則主要依靠第三方的工具軟件,如GMT、Matlab、MapSIS等等,因缺乏一個集成、高效、易用、專業(yè)針對性強的平臺,使得數(shù)據(jù)產(chǎn)品圖像可視化水平相對較低[1-4]。
本項目擬在搭建完善總體架構(gòu)的基礎(chǔ)上,選取和構(gòu)建底層數(shù)據(jù)庫,實現(xiàn)地形變數(shù)據(jù)準(zhǔn)實時的數(shù)據(jù)調(diào)用,并利用微軟.NET平臺,結(jié)合相關(guān)計算方法,針對數(shù)據(jù)二維成像,開發(fā)用戶桌面版的應(yīng)用程序。具體的研究內(nèi)容包括如下。
如圖1所示,本系統(tǒng)總體分為數(shù)據(jù)基礎(chǔ)層、技術(shù)支撐層和業(yè)務(wù)邏輯層。數(shù)據(jù)基礎(chǔ)層為整個系統(tǒng)提供數(shù)據(jù)支撐,其主體是正在運行的中國地震臺網(wǎng)中心前兆形變數(shù)據(jù)庫,庫中存有2007年以來我國連續(xù)實時觀測的固定形變臺觀測資料,也是本系統(tǒng)數(shù)據(jù)獲取程序的目標(biāo)數(shù)據(jù)。技術(shù)支撐層采用計算機繪圖技術(shù)對地形變數(shù)據(jù)進行可視化表達,利用C#和網(wǎng)絡(luò)等技術(shù)對系統(tǒng)總體功能進行實現(xiàn)。業(yè)務(wù)邏輯層的各個模塊對應(yīng)本系統(tǒng)的主要功能,包括系統(tǒng)管理模塊、數(shù)據(jù)管理模塊、異常檢查接口和繪圖展示模塊。
圖1 系統(tǒng)總體架構(gòu)Fig.1 System overall framework
1)系統(tǒng)總體架構(gòu)設(shè)計
在項目前期工作中,經(jīng)過技術(shù)調(diào)研、需求分析和概略設(shè)計,反復(fù)論證后得以確定該系統(tǒng)的最終架構(gòu)如2.1節(jié)所述,本系統(tǒng)的開發(fā)工作應(yīng)遵循系統(tǒng)架構(gòu)圖指導(dǎo)。
2)功能模塊開發(fā)
本系統(tǒng)中,系統(tǒng)管理模塊、數(shù)據(jù)管理模塊和繪圖展示模塊擬采用.NET平臺C#語言進行開發(fā),層次清晰,效率卓越。繪圖展示模塊擬采用Windows GDI+圖形包進行開發(fā),具體技術(shù)實現(xiàn)請參考3.1節(jié)相關(guān)內(nèi)容。
3)系統(tǒng)集成和測試
本階段負責(zé)將系統(tǒng)各功能模塊整合成為統(tǒng)一的桌面軟件系統(tǒng),并進行軟件工程意義上的系統(tǒng)測試,達到用戶可使用的程度。
本系統(tǒng)采用的技術(shù)涉及數(shù)據(jù)庫、計算機網(wǎng)絡(luò)、計算機繪圖、面向?qū)ο笳Z言等多領(lǐng)域。技術(shù)要求范圍廣泛,技術(shù)難度要求較高。本節(jié)結(jié)合系統(tǒng)重要功能的實現(xiàn),就本系統(tǒng)所應(yīng)用到的關(guān)鍵技術(shù)作簡單介紹。
GDI在 Windows中定義為 Graphics Device Interface,即圖形設(shè)備接口,是 Windows API(Application Programming Interface)的一個重要組成部分。GDI使得用戶無需關(guān)心具體設(shè)備的細節(jié),而只需在一個虛擬的環(huán)境(即邏輯設(shè)備)中進行操作。GDI+是GDI的增強版,主要提供三類服務(wù):二維矢量圖形、圖像處理、文字顯示[5]。
本模塊利用Windows GDI+繪制地形變數(shù)據(jù)的二維圖像,然后利用ffmpeg開源程序,將已繪制的圖片集轉(zhuǎn)換為動畫視頻[6]。圖2為繪圖展示模塊的流程圖:
圖2 繪圖展示模塊流程圖Fig.2 Drawing and showing flow diagram
C#提供了System.Diagnostics中Process類來專門調(diào)用本地和遠程的外部程序,下面是調(diào)用ffmpeg的代碼。
Process p=new Process();
p.StartInfo.FileName = @"C:programsffmpeginffmpeg.exe-y-iConPic%%04d.jpg show.mp4";
p.StartInfo.Arguments=Argument;p.StartInfo.UseShellExecute=false;
p.StartInfo.CreateNoWindow=NoWindow;p.Start();
p.WaitForExit();
數(shù)據(jù)獲取主要包括數(shù)據(jù)下載和數(shù)據(jù)處理兩個功能模塊。首先,系統(tǒng)后臺與地震前兆形變數(shù)據(jù)庫進行互聯(lián),提出數(shù)據(jù)請求,將庫中目標(biāo)數(shù)據(jù)進行下載;其次,系統(tǒng)將下載得來的數(shù)據(jù)進行轉(zhuǎn)換、歸類、排列等操作,形成繪圖程序模塊所能識別的可用數(shù)據(jù)。具體實現(xiàn)流程如圖3、圖4所示。
圖3 數(shù)據(jù)下載流程圖Fig.3 Data download flow diagram
圖4 數(shù)據(jù)處理流程圖Fig.4 Data process flow diagram
前兆數(shù)據(jù)采用Oracle數(shù)據(jù)庫來存儲數(shù)據(jù),因此本系統(tǒng)將使用Oracle公司提供的 Oracle Data Provider for.NET(ODP.NET)來連接和下載數(shù)據(jù),下載是相關(guān)的實現(xiàn)代碼。
string connstring= "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1521))"+"(CONNECT_DATA=(SID=orcl)));User Id=system;Password=test;";
using (OracleConnection conn=new OracleConnection(connstring))
{
conn.Open();
string sql="select*from tablename";
using (OracleCommand comm=new OracleCommand(sql, conn)){
using(OracleDataReader rdr=comm.ExecuteReader())
{while (rdr.Read()){Content+= (rdr.GetString(1) +Environment.NewLine);
}}}
conn.Close();}
通過對地震地形變數(shù)據(jù)準(zhǔn)實時可視化系統(tǒng)的設(shè)計和開發(fā),得到地震數(shù)據(jù)可視化方面的相關(guān)初步認(rèn)識:如何獲取海量地震數(shù)據(jù)中的有用隱藏信息是地震預(yù)報等業(yè)務(wù)的關(guān)鍵實現(xiàn)途徑之一,數(shù)據(jù)可視化是比較好的選擇。在實際研發(fā)中,地震數(shù)據(jù)的獲取和通用格式化、可視化樣式的展示方式、可視化的方法原理等也是系統(tǒng)實現(xiàn)的關(guān)鍵節(jié)點。
[1]周克昌,蔣春花,紀(jì)壽文,等.地震前兆數(shù)據(jù)庫系統(tǒng)設(shè)計[J].地震,2010,30(2):143-151.ZHOU Ke-chang,JIANG Chun-hua,JI Shou-wen,et al.Precursor database system design[J].Earthquake,2010,30(2):143-151.
[2]李文,葉少珍.多維數(shù)據(jù)可視化技術(shù)及分類器的研究進展[J]. 福建電腦,2010,26(5):38-39.LIWen,YE Shao-zhen.Multidimensional data visualization technology and research progress of classifier[J].Fujian Computer,2010,26(5):38-39.
[3]王丹寧.信息安全技術(shù)在涉密辦公網(wǎng)中的應(yīng)用情況分析[J].計算機安全,2014(4):44-46.WANG Dan-ning.An analysis of information security technology in application of secret office network[J].Network and Computer Security,2014(4):44-46.
[4]孫鴻雁.基于混編的地震前兆數(shù)據(jù)可視化系統(tǒng)[J].防災(zāi)減災(zāi)學(xué)報,2012,28(3):37-40.SUN Hong-yan.The earthquake precursor data visualization system based on hybrid programming[J].Journal of disaster prevention and Reduction,2012,28(3):37-40.
[5]吳小芳,徐智勇,蔡忠亮,等.基于GDI+的高精度地圖符號庫的設(shè)計與實現(xiàn)[J].武漢大學(xué)學(xué)報:信息科學(xué)版,2004,29(10):928-932.WU Xiao-fang,XU Zhi-yong,CAI Zhong-liang,et al.Design and implementation of high precision map symbol library based on GDI+[J].Geomatics and Information Science of Wuhan University,2004,29(10):928-932.
[6]李軍廷.利用FFMPEG技術(shù)搭建流媒體服務(wù)器 [J].現(xiàn)代電子技術(shù),2014(18):23-25.LI Jun-ting.Establishing of streaming media server by FFMPEG technology[J].Modern Electronics Technique,2014(18):23-25.