馬士振 白立新 張海春 郭士軍 林向東 白永福
?
基于Django框架的可視化地震目錄服務系統1
馬士振 白立新 張海春 郭士軍 林向東 白永福
(北京市地震局,北京 100080)
為提高測震臺網地震目錄數據的服務水平,構建了基于Django框架的可視化地震目錄服務系統。該系統以Django框架為基礎,在前端工具包Bootstrap的管理下,通過Highcharts圖形庫和高德地圖實現了地震目錄的可視化服務,為地震目錄的對外服務提供了一種較為高效便捷的途徑。
Django 地震目錄 服務系統
測震臺網的一項重要服務內容是提供地震目錄數據。在較大地震發生后,尤其需要測震臺網在較短時間內對外提供地震序列目錄數據的服務。多年以來,測震臺網主要通過以下幾種形式對外提供地震目錄數據服務:①文本格式的地震目錄數據;②使用MSDP軟件或EQIM軟件產出的單點或多點震中分布圖;③使用專業地震分析預報軟件對地震目錄數據進行加工處理后提供的圖件;④通過全國地震編目網站提供的地震目錄數據或震中分布圖截圖。上述服務雖然提供了豐富的內容,但需要通過對多個軟件或網頁進行操作才能實現地震目錄數據的獲取或數據的圖像化,用戶操作不方便,時效性差,服務效率較低。
在數據圖像化方面,地震前兆數據在應用服務上做了一些有益的嘗試,如通過JpGraph繪圖類庫實現了數據的可視化(李剛等,2013)。這種應用基于瀏覽器/服務器結構,以圖件的形式表現地震前兆數據,擴大了受眾面,提高了前兆數據服務于行業、政府和社會公眾的能力。
隨著Web技術的發展和軟件工程的日益成熟,傳統的Web框架如Struts、Spring、.NET等由于其復雜性很難滿足人們的要求,于是逐漸出現了一些敏捷性的Web框架(王冉陽,2008),如Django、Flask等。Django是使用Python開發的優秀Web框架,作為一款開源的敏捷開發框架,受到人們越來越多的關注。使用Django框架,可以節省開發周期,并且便于維護和升級。當前Django已廣泛應用于博客系統(楊志慶,2013)、資源共享平臺建設(程文芳等,2013)、數據庫快速查詢(齊金剛等,2014)等系統的開發工作中。
為了提高北京市測震臺網地震目錄數據的服務效率,快速實現地震目錄數據的圖像化,筆者在Django框架的基礎上,結合多種實用工具,開發了可視化的地震目錄服務系統。
1.1 系統構成
地震目錄服務系統以Django框架為基礎,在實現過程中應用了Bootstrap、Highcharts、高德地圖等優秀的工具包,實現了一站式的地震目錄服務。該系統采用瀏覽器/服務器結構,提供了地震目錄列表、震中分布圖、-圖、震級分段統計圖等四項服務內容,并且實現了對上述列表、圖件的自動刷新功能(見圖1)。
1.2 系統響應流程
當收到來自用戶瀏覽器的頁面請求時,Django使用正則表達式在URL映射文件中對請求的頁面地址進行匹配。當URL映射文件中有匹配的URL-pattern時,Django將用戶的請求發送給該URL-pattern對應的視圖函數,由視圖函數對用戶的請求進行處理。
當視圖函數需要訪問數據庫時,Django通過內置的MySQL適配器訪問JOPENS數據庫。對于JOPENS數據庫的返回數據,Django將其加載到與用戶請求相對應的模板頁面上,再返回給用戶的瀏覽器。至此,系統完成了對用戶請求的響應處理。
為了更好地服務用戶,在編寫本系統的模板頁面時,采用Bootstrap規劃了網頁的頁面結構,美化了頁面的展示元素。此外,在Bootstrap的管理下,引進Highcharts和高德地圖兩種工具,實現了地震目錄數據的圖像化展示。
地震目錄服務系統的主體功能分為兩大模塊:“今日地震”模塊和“歷史地震”模塊。其中,每個模塊下又細分為地震目錄列表、震中分布圖、-圖和震級分段統計圖4個子模塊。上述模塊滿足了外界對測震臺網的三個主要需求:①某一地震的具體信息,即地震三要素信息;②符合某種特征的地震事件的統計信息,如地震序列情況等;③地震目錄數據的圖像化(見圖2)。
“今日地震”與“歷史地震”兩大模塊的功能基本一致,其主要區別為:①從JOPENS數據庫中獲取的地震目錄數據的起止時間;②自動刷新頁面,“今日地震”模塊僅從JOPENS數據庫中獲取當日的地震目錄數據,并針對地震序列數據的服務需求實現了頁面的自動刷新功能;而“歷史地震”模塊則根據用戶的查詢條件從數據庫中獲取符合條件的數據進行處理,其子模塊不具有頁面的自動刷新功能。除了以上兩點區別,兩個大模塊的其它功能完全一致。因此,以下主要介紹“今日地震”模塊的功能。
2.1“地震目錄列表”子模塊
當用戶點擊“地震目錄列表”按鈕時,系統自動從JOPENS數據庫獲取當日地震目錄數據。在對數據格式進行規范化后,該數據以文本的形式展現在網頁上,滿足了用戶快速獲取地震三要素信息的需求。
2.2“震中分布圖”子模塊
在本模塊中,通過在模板文件中加載高德地圖接口,把地震信息提交到地圖上,震中就可以根據地震的經緯度數據顯示在地圖上。當鼠標滑過震中標記時,系統可以給出該地震的有關信息。此外,借助高德地圖提供的工具,實現了震中距的量取功能和地圖縮放功能等。該模塊滿足了用戶將數字形式的震中位置轉換為地圖形式的震中位置的需求。
2.3“-圖”子模塊
在本模塊中,通過在模板文件中加載Highcharts圖表庫,把從JOPENS數據庫中獲取的當日地震目錄數據以-圖的形式展現出來,解決了在大地震發生后,快速產出-圖的問題。
2.4 “震級分段統計圖”子模塊
在本模塊中,既可以獲得震級分段統計的數據,又可以獲得根據統計數據繪制的圖件,實現了地震目錄統計數據和圖件的快速產出。
圖3為該系統的可視化地震目錄服務頁面展示。
(1)地震目錄列表頁面
(2)-圖頁面

(3)震中分布圖頁面
測震臺網在日常工作及地震應急處置工作中,產出了大量觀測數據及處理結果。通過地震目錄服務系統提供的一站式服務,可以將地震目錄數據更為高效、便捷地展現出來。因此,該系統在一定程度上擺脫了地震目錄數據產品對客戶端軟件的依賴。自測試運行以來,該系統在2014年9月6日河北涿鹿S4.3級地震和“十一”震情保障工作中均發揮了積極的作用。另外,由于該系統采用瀏覽器/服務器結構,只需升級服務器端程序,即可實現展示界面的變化,展示內容的改進和擴容可使系統更好地服務于地震監測、地震應急等工作。
致謝:本項工作得到了北京市測震臺網的大力支持,在此表示衷心的感謝!
程文芳,張潔,夏明一,張北辰,2013.極地標本資源共享平臺系統設計與實現. 極地研究,25(2):185—196.
胡海勇,2011.基于WEB的GPS監控系統設計與實現. 浙江:浙江工業大學信息工程學院,8—10.
李剛,姚會琴,李悅,宋軍,周立霞,王曉磊,楊奕,劉磊,丁晶,2013. JpGraph繪圖類庫在地震數據展示中的應用.震災防御技術,8(2):209—215.
齊金剛,李滔,李晉軍,2014.Django框架Web數據查詢分頁技術研究. 電子設計工程,22(5):33—37.
王冉陽,2008.基于Django和Python的Web開發. 電腦編程技術與維護,2(23):56—58.
楊志慶,2013.基于Django的Blog系統的開發與實現. 機電一體化,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年。工程師,主要從事地震監測工作。E-mail:szmacn@bjseis.gov.cn