馬士振 白立新 張海春 郭士軍 林向東 白永福
?
基于Django框架的可視化地震目錄服務(wù)系統(tǒng)1
馬士振 白立新 張海春 郭士軍 林向東 白永福
(北京市地震局,北京 100080)
為提高測震臺網(wǎng)地震目錄數(shù)據(jù)的服務(wù)水平,構(gòu)建了基于Django框架的可視化地震目錄服務(wù)系統(tǒng)。該系統(tǒng)以Django框架為基礎(chǔ),在前端工具包Bootstrap的管理下,通過Highcharts圖形庫和高德地圖實現(xiàn)了地震目錄的可視化服務(wù),為地震目錄的對外服務(wù)提供了一種較為高效便捷的途徑。
Django 地震目錄 服務(wù)系統(tǒng)
測震臺網(wǎng)的一項重要服務(wù)內(nèi)容是提供地震目錄數(shù)據(jù)。在較大地震發(fā)生后,尤其需要測震臺網(wǎng)在較短時間內(nèi)對外提供地震序列目錄數(shù)據(jù)的服務(wù)。多年以來,測震臺網(wǎng)主要通過以下幾種形式對外提供地震目錄數(shù)據(jù)服務(wù):①文本格式的地震目錄數(shù)據(jù);②使用MSDP軟件或EQIM軟件產(chǎn)出的單點或多點震中分布圖;③使用專業(yè)地震分析預(yù)報軟件對地震目錄數(shù)據(jù)進(jìn)行加工處理后提供的圖件;④通過全國地震編目網(wǎng)站提供的地震目錄數(shù)據(jù)或震中分布圖截圖。上述服務(wù)雖然提供了豐富的內(nèi)容,但需要通過對多個軟件或網(wǎng)頁進(jìn)行操作才能實現(xiàn)地震目錄數(shù)據(jù)的獲取或數(shù)據(jù)的圖像化,用戶操作不方便,時效性差,服務(wù)效率較低。
在數(shù)據(jù)圖像化方面,地震前兆數(shù)據(jù)在應(yīng)用服務(wù)上做了一些有益的嘗試,如通過JpGraph繪圖類庫實現(xiàn)了數(shù)據(jù)的可視化(李剛等,2013)。這種應(yīng)用基于瀏覽器/服務(wù)器結(jié)構(gòu),以圖件的形式表現(xiàn)地震前兆數(shù)據(jù),擴(kuò)大了受眾面,提高了前兆數(shù)據(jù)服務(wù)于行業(yè)、政府和社會公眾的能力。
隨著Web技術(shù)的發(fā)展和軟件工程的日益成熟,傳統(tǒng)的Web框架如Struts、Spring、.NET等由于其復(fù)雜性很難滿足人們的要求,于是逐漸出現(xiàn)了一些敏捷性的Web框架(王冉陽,2008),如Django、Flask等。Django是使用Python開發(fā)的優(yōu)秀Web框架,作為一款開源的敏捷開發(fā)框架,受到人們越來越多的關(guān)注。使用Django框架,可以節(jié)省開發(fā)周期,并且便于維護(hù)和升級。當(dāng)前Django已廣泛應(yīng)用于博客系統(tǒng)(楊志慶,2013)、資源共享平臺建設(shè)(程文芳等,2013)、數(shù)據(jù)庫快速查詢(齊金剛等,2014)等系統(tǒng)的開發(fā)工作中。
為了提高北京市測震臺網(wǎng)地震目錄數(shù)據(jù)的服務(wù)效率,快速實現(xiàn)地震目錄數(shù)據(jù)的圖像化,筆者在Django框架的基礎(chǔ)上,結(jié)合多種實用工具,開發(fā)了可視化的地震目錄服務(wù)系統(tǒng)。
1.1 系統(tǒng)構(gòu)成
地震目錄服務(wù)系統(tǒng)以Django框架為基礎(chǔ),在實現(xiàn)過程中應(yīng)用了Bootstrap、Highcharts、高德地圖等優(yōu)秀的工具包,實現(xiàn)了一站式的地震目錄服務(wù)。該系統(tǒng)采用瀏覽器/服務(wù)器結(jié)構(gòu),提供了地震目錄列表、震中分布圖、-圖、震級分段統(tǒng)計圖等四項服務(wù)內(nèi)容,并且實現(xiàn)了對上述列表、圖件的自動刷新功能(見圖1)。
1.2 系統(tǒng)響應(yīng)流程
當(dāng)收到來自用戶瀏覽器的頁面請求時,Django使用正則表達(dá)式在URL映射文件中對請求的頁面地址進(jìn)行匹配。當(dāng)URL映射文件中有匹配的URL-pattern時,Django將用戶的請求發(fā)送給該URL-pattern對應(yīng)的視圖函數(shù),由視圖函數(shù)對用戶的請求進(jìn)行處理。
當(dāng)視圖函數(shù)需要訪問數(shù)據(jù)庫時,Django通過內(nèi)置的MySQL適配器訪問JOPENS數(shù)據(jù)庫。對于JOPENS數(shù)據(jù)庫的返回數(shù)據(jù),Django將其加載到與用戶請求相對應(yīng)的模板頁面上,再返回給用戶的瀏覽器。至此,系統(tǒng)完成了對用戶請求的響應(yīng)處理。
為了更好地服務(wù)用戶,在編寫本系統(tǒng)的模板頁面時,采用Bootstrap規(guī)劃了網(wǎng)頁的頁面結(jié)構(gòu),美化了頁面的展示元素。此外,在Bootstrap的管理下,引進(jìn)Highcharts和高德地圖兩種工具,實現(xiàn)了地震目錄數(shù)據(jù)的圖像化展示。
地震目錄服務(wù)系統(tǒng)的主體功能分為兩大模塊:“今日地震”模塊和“歷史地震”模塊。其中,每個模塊下又細(xì)分為地震目錄列表、震中分布圖、-圖和震級分段統(tǒng)計圖4個子模塊。上述模塊滿足了外界對測震臺網(wǎng)的三個主要需求:①某一地震的具體信息,即地震三要素信息;②符合某種特征的地震事件的統(tǒng)計信息,如地震序列情況等;③地震目錄數(shù)據(jù)的圖像化(見圖2)。
“今日地震”與“歷史地震”兩大模塊的功能基本一致,其主要區(qū)別為:①從JOPENS數(shù)據(jù)庫中獲取的地震目錄數(shù)據(jù)的起止時間;②自動刷新頁面,“今日地震”模塊僅從JOPENS數(shù)據(jù)庫中獲取當(dāng)日的地震目錄數(shù)據(jù),并針對地震序列數(shù)據(jù)的服務(wù)需求實現(xiàn)了頁面的自動刷新功能;而“歷史地震”模塊則根據(jù)用戶的查詢條件從數(shù)據(jù)庫中獲取符合條件的數(shù)據(jù)進(jìn)行處理,其子模塊不具有頁面的自動刷新功能。除了以上兩點區(qū)別,兩個大模塊的其它功能完全一致。因此,以下主要介紹“今日地震”模塊的功能。
2.1“地震目錄列表”子模塊
當(dāng)用戶點擊“地震目錄列表”按鈕時,系統(tǒng)自動從JOPENS數(shù)據(jù)庫獲取當(dāng)日地震目錄數(shù)據(jù)。在對數(shù)據(jù)格式進(jìn)行規(guī)范化后,該數(shù)據(jù)以文本的形式展現(xiàn)在網(wǎng)頁上,滿足了用戶快速獲取地震三要素信息的需求。
2.2“震中分布圖”子模塊
在本模塊中,通過在模板文件中加載高德地圖接口,把地震信息提交到地圖上,震中就可以根據(jù)地震的經(jīng)緯度數(shù)據(jù)顯示在地圖上。當(dāng)鼠標(biāo)滑過震中標(biāo)記時,系統(tǒng)可以給出該地震的有關(guān)信息。此外,借助高德地圖提供的工具,實現(xiàn)了震中距的量取功能和地圖縮放功能等。該模塊滿足了用戶將數(shù)字形式的震中位置轉(zhuǎn)換為地圖形式的震中位置的需求。
2.3“-圖”子模塊
在本模塊中,通過在模板文件中加載Highcharts圖表庫,把從JOPENS數(shù)據(jù)庫中獲取的當(dāng)日地震目錄數(shù)據(jù)以-圖的形式展現(xiàn)出來,解決了在大地震發(fā)生后,快速產(chǎn)出-圖的問題。
2.4 “震級分段統(tǒng)計圖”子模塊
在本模塊中,既可以獲得震級分段統(tǒng)計的數(shù)據(jù),又可以獲得根據(jù)統(tǒng)計數(shù)據(jù)繪制的圖件,實現(xiàn)了地震目錄統(tǒng)計數(shù)據(jù)和圖件的快速產(chǎn)出。
圖3為該系統(tǒng)的可視化地震目錄服務(wù)頁面展示。
(1)地震目錄列表頁面
(2)-圖頁面
(3)震中分布圖頁面
測震臺網(wǎng)在日常工作及地震應(yīng)急處置工作中,產(chǎn)出了大量觀測數(shù)據(jù)及處理結(jié)果。通過地震目錄服務(wù)系統(tǒng)提供的一站式服務(wù),可以將地震目錄數(shù)據(jù)更為高效、便捷地展現(xiàn)出來。因此,該系統(tǒng)在一定程度上擺脫了地震目錄數(shù)據(jù)產(chǎn)品對客戶端軟件的依賴。自測試運行以來,該系統(tǒng)在2014年9月6日河北涿鹿S4.3級地震和“十一”震情保障工作中均發(fā)揮了積極的作用。另外,由于該系統(tǒng)采用瀏覽器/服務(wù)器結(jié)構(gòu),只需升級服務(wù)器端程序,即可實現(xiàn)展示界面的變化,展示內(nèi)容的改進(jìn)和擴(kuò)容可使系統(tǒng)更好地服務(wù)于地震監(jiān)測、地震應(yīng)急等工作。
致謝:本項工作得到了北京市測震臺網(wǎng)的大力支持,在此表示衷心的感謝!
程文芳,張潔,夏明一,張北辰,2013.極地標(biāo)本資源共享平臺系統(tǒng)設(shè)計與實現(xiàn). 極地研究,25(2):185—196.
胡海勇,2011.基于WEB的GPS監(jiān)控系統(tǒng)設(shè)計與實現(xiàn). 浙江:浙江工業(yè)大學(xué)信息工程學(xué)院,8—10.
李剛,姚會琴,李悅,宋軍,周立霞,王曉磊,楊奕,劉磊,丁晶,2013. JpGraph繪圖類庫在地震數(shù)據(jù)展示中的應(yīng)用.震災(zāi)防御技術(shù),8(2):209—215.
齊金剛,李滔,李晉軍,2014.Django框架Web數(shù)據(jù)查詢分頁技術(shù)研究. 電子設(shè)計工程,22(5):33—37.
王冉陽,2008.基于Django和Python的Web開發(fā). 電腦編程技術(shù)與維護(hù),2(23):56—58.
楊志慶,2013.基于Django的Blog系統(tǒng)的開發(fā)與實現(xiàn). 機(jī)電一體化,9:69—72.
The Visualizing System of Earthquake Catalogue Service under Django Framework
Ma Shizhen, Bai Lixin, Zhang Haichun, Guo Shijun, Lin Xiangdong and Bai Yongfu
(Earthquake Administration of Beijing, Beijing 100080, China)
A visualizing system of earthquake catalogue service was created under Django framework to improve the service level of seismic network. In the system earthquake catalogue is visualized with Highcharts and Gaode map on web pages that were managed by Bootstrap. This system provides a relatively high efficient and convenient way for the earthquake catalogue exhibition service.
Django; Earthquake catalog; Service system
北京市地震局資助
2014-08-10
馬士振,男,生于1976年。工程師,主要從事地震監(jiān)測工作。E-mail:szmacn@bjseis.gov.cn