曾文敬,徐長文,肖建華,范衛星,趙璇,曾先進,陳建龍
(江西省地震局,江西南昌 330095)
自2012年以來,全球進入大數據時代,各行各業都將可視化技術作為大數據分析、數據挖掘的重要手段,讓數據說話,讓數據看得見。可視化技術作為解釋大數據最有效的手段而率先被科學與工程計算領域采用,科學可視化把數據轉換成多維度、多尺度的時空動態圖形圖像,給予人們深刻與意想不到的洞察力,幫助公眾理解事物間的深度內涵、潛在關聯和運行規律,極大地提高了人腦分析解釋這些數據的能力,已在很多領域使科學家的研究方式發生了根本性變化。
近年來,地震大數據可視化研究和應用問題引起了地震行業有關專家的極大關注和思考。張晁軍等(2015)認為大數據的核心是積累數據、分析數據和應用數據,大數據有助于提高人們的特殊技能和洞察力,大數據分析具有預測事物發展趨勢、改變傳統觀念和發現新事物的功能,并有助于人們從信息中挖掘有價值信息,大數據改變著人類探索世界的傳統觀念和方法,尤其是通過了解模型的優點和局限性,使數據產生知識。王志秋(2018)認為,就目前地震業務領域來看,地震大數據產出可視化研究和應用至少可以包括:測震學科產出可視化,如震源破裂過程可視化;形變學科產出可視化,包括重力、傾斜、短水準、洞體形變、應力應變、航空觀測、GPS等可視化;電磁學科產出可視化,包括地電阻率、地磁、電磁波等可視化;流體學科產出可視化,包括水位、水溫、水氡、水汞、溶解氣、土壤氣等可視化;以及其他學科和新技術產出可視化,如地震地質構造、構造運動、地球動力學、地震活動性、衛星、遙感、紅外觀測等可視化。地震行業利用可視化技術逐步開展了一些探索和應用研究,并取得了可喜的結果,如:楊應召(2020)為研究在地震速報等基于測震數據的業務場景中,對于地震事件檢測等中間處理結果的可視化問題,設計并實現了一套基于實時測震數據的可視化系統,并得到了實際應用,吳珍云等(2020)基于開源GIS技術研發的江蘇省地震應急信息可視化平臺具有良好的性能體驗,并在地震應急工作中起到了較強的輔助決策作用;馬士振等(2015)、羅勇等(2020)、李晨曦等(2021)研發的基于地震目錄數據的可視化服務系統為地震數據服務提供了一種新模式,提升了地震信息服務的深度和廣度。此外,很多專業人員(姚會琴等,2014;潘懷文等,2015;張文蕾等,2018;韓濱等,2021)將地震監測信息、監控信息通過可視化技術進行加工處理后,大大提升了地震信息服務的能力和水平。目前,可視化工具有多種選擇,其中國內的可視化庫主要以Echarts為代表,被很多工程師采用(王子毅等,2016;崔蓬,2019;徐欣威,2019)。Echarts可視化庫是完全開源免費的,是由百度公司開發的開源數據圖表可視化技術,是由純JavaScript腳本語言編寫的可視化類庫,兼容目前多種瀏覽器,底層采用ZRender渲染技術,達到美觀、生動的顯示效果,提供豐富的、靈活的數據可視化圖表集成接口。
地震目錄是地震行業產出的最為基礎的地震科學研究資料。為了進一步挖掘地震數據信息,讓地震目錄數據的空間、時間信息更好地被人們特別是非專業人員快速有效的理解,本文根據江西地震臺的地震目錄數據,自行設計了一套前后端分離,并采用Django、Echarts開源框架自主開發的江西地震目錄數據可視化系統,旨在幫助非專業人員能夠通過對地震目錄數據的挖掘及時空動態分析并以可視化的簡易圖表形式,快速了解江西省地震活動時間和空間分布的基本概況。
Django框架是基于Python語言的開源框架。Django框架的設計模式借鑒了MVC框架的思想,也是分成模型(Model)、視圖(View)和控制器(Controller)三部分,來降低各個部分之間的耦合性。Django框架不同于MVC之處在于它拆分的三部分(見圖1):Model(模型)、Template(模板)和View(視圖),也就是MTV框架。Django框架通過分層設計,將各層次之間的邏輯結構化,將系統的各個功能模塊進行分離,系統內部不同功能模塊之間的訪問通過相互調用接口實現,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,從而大大降低了系統內部功能的復雜性,實現簡便、快速地開發數據庫驅動的網站(吳俊鋒,2016)。

圖1 Django框架的MTV模型
江西地震目錄數據可視化系統以Django框架為基礎,在實現過程中用了Echarts和百度地圖API等多種技術組合,實現了一站式的地震目錄可視化服務。為了快速完成系統開發,筆者在Windows10操作系統環境下,選用Python3.6開發語言及其Web框架Django3.0、MySQL5.6數據庫、Echarts和百度地圖API等工具進行全棧式開發。系統前端頁面模板文件利用HTML+Div+Css進行渲染,并使用Js+Jquery+Ajax技術動態實現與后臺應用接口的交互,后臺Python應用程序負責業務邏輯處理,并提取MySQL數據,返回給模板文件,模板文件加載了第三方庫Echarts和百度地圖API,并將后臺返回的數據轉化為可視化圖表。系統響應處理流程圖見圖2。在測試運行階段,筆者使用Windows Server 2016+Apache mod_wsgi+Django的方式進行系統部署和運行。

圖2 系統響應處理流程圖
江西地震目錄數據可視化系統的主體功能分為三大模塊:實時地震模塊、基于緩沖區的歷史地震模塊和全省歷史地震統計模塊(見圖3)。其中,實時地震模塊包括最新地震參數、全省近期地震目錄和震中分布圖3個子模塊;基于緩沖區的歷史地震模塊包括震中距100 km內的震級分組統計、震中距100 km內的震級-距離分布圖和震中距100 km內的地震序列類型分布圖3個子模塊;全省歷史地震模塊包括全省歷史地震的震級分組隨時間變化統計圖和全省歷史地震的震級隨時間變化圖2個子模塊。這些模塊均通過在模板文件中加載Echarts圖表庫,實現了圖表化的可視化效果,系統展示效果見圖4。

圖3 江西地震目錄數據可視化系統功能圖

圖4 江西地震目錄數據可視化系統界面
(1)通過EQIM 協議實時監聽江西地震臺EQIM 服務端的實時速報地震信息,當獲取到符合要求的江西省內M≥2.0地震時,即向后臺數據庫寫入該地震目錄。同時更新頁面最新地震三要素參數,以文本的形式展現在網頁上,滿足了用戶快速獲取地震三要素信息的需求。(2)從數據庫中獲取最新的目錄進行滾動列表播放,滿足了用戶快速了解近期省內地震目錄基本參數信息的需求。(3)通過在模板文件中加載GeoJson地圖接口,從數據庫中獲取最新的地震目錄,將地震經緯度數據以地理地圖的形式在網頁中間位置進行展示,突顯了可視化震情地圖效果,該模塊滿足了用戶將數字形式的震中位置轉換為地圖形式的震中位置的需求,幫助用戶快速高效了解江西地震空間分布特征。此外,當鼠標滑過震中圖標時,系統會給出該地震的有關提示信息。同時借助Echarts地理地圖庫提供的工具,實現了地圖縮放和平移功能等。
(1)根據距離最新地震100 km范圍內的歷史地震目錄,按震級M2、M3、M4、M5和M6進行分組統計,并以柱狀圖的形式顯示在頁面,滿足了用戶快速了解最新地震震中距100 km 范圍內的歷史地震震級總體分布情況。(2)根據距離最新地震100 km 范圍內的歷史地震目錄,計算各地震距離最新地震的距離,并以震級為縱軸、發震時間為橫軸作震級隨時間變化的散點圖顯示在頁面,滿足了用戶快速了解最新地震震中距100 km內的最大歷史地震和最近歷史地震的距離和時間分布情況。(3)根據距離最新地震100 km 范圍內的地震序列類型數據,分別統計“主余型”“震群型”“孤立型”“前主余型”等序列類型分布情況,滿足了用戶根據震中周圍歷史序列類型統計結果,快速判別最新地震可能序列類型。
(1)根據全省范圍內最近3年M≥2.0的歷史地震目錄,先按年度作為一級分組統計后,再按震級檔M2、M3、M4、M5和M6進行二次分組統計,并以柱狀圖形式顯示在頁面,滿足用戶了解全省歷史地震的震級隨時間變化的情況。(2)根據全省范圍內1970年以來M≥2.0的歷史地震目錄,以震級為縱軸、發震時間為橫軸作震級隨時間變化的散點圖顯示在頁面,滿足用戶快速了解全省歷史地震隨時間分布情況。
借助Django框架前后端分層分離的機制實現B/S架構,筆者在較短周期內完成了江西地震目錄數據可視化系統開發。系統的主要特色與優點為:(1)系統通過地理空間數據可視化方法和關系數據可視化方法,利用Echarts可視化庫和web前端技術,將江西地震活動情況以多圖單頁的方式實時動態展示出來,達到了使用感知代替認知、減少人的記憶負擔和增強吸引力的效果,幫助用戶快速、高效地了解江西地震活動的主要時、空、強特征;(2)系統能夠實時動態展示最新地震震中距100 km 內的歷史地震情況,如最大歷史地震的震中距和發震時間,最近顯著地震的震中距和發震時間,以及震中距100 km 內地震序列類型情況等。
系統自2020年試運行以來,多次服務于江西地震臺向系統外領導來臺調研考察活動,幫助非專業人士快速了解江西震情特點。系統另一個可應用的情景為地震應急響應提供震中距100 km 內的震情信息。在試運行過程中,我們也發現系統還存在一些不足,如:(1)由于頁面加載了一些國外較新的開源js,用戶端瀏覽器局限于使用基于chrome內核的瀏覽器或Firefox瀏覽器;(2)系統功能較為單一,僅僅利用地震目錄數據可視化,下一步可增加地震監控、監測信息方面的內容,以擴大應用范圍以及服務對象。