方傳極
(南平地震臺,福建 南平 353000)
臨海臺站的傾斜、重力、位移、應(yīng)變觀測資料除了能記錄到正常的固體潮變化之外,還能更多地記錄到海潮干擾信息。目前國內(nèi)外很多學(xué)者圍繞海潮模型的構(gòu)建和優(yōu)化、海潮負(fù)荷對重力、地傾斜固體潮的影響和改正以及針對某地區(qū)最優(yōu)海潮模型的選擇等方面做了很多深入、系統(tǒng)的研究。由于互聯(lián)網(wǎng)的數(shù)據(jù)無法滿足大數(shù)據(jù)量下載,本系統(tǒng)通過互聯(lián)網(wǎng)定時采集潮汐信息并保存在本地?cái)?shù)據(jù)庫,作為基礎(chǔ)的研究資料供研究人員下載研究。另外在日常地震臺站數(shù)據(jù)處理與分析中,需要利用本地及更大范圍的氣象資料,作為輔助資料。通過采集氣象網(wǎng)站的數(shù)據(jù),應(yīng)用數(shù)據(jù)庫存儲技術(shù)保存。
本系統(tǒng)共包括4 部分,前端Web 交互界面、后端應(yīng)用、數(shù)據(jù)庫設(shè)計(jì)以及數(shù)據(jù)采集。
用戶通過瀏覽器界面與后端應(yīng)用進(jìn)行交互,實(shí)現(xiàn)了數(shù)據(jù)的呈現(xiàn)、下載與可視化。后端設(shè)置了兩個應(yīng)用,針對提交的不同的請求數(shù)據(jù)進(jìn)行響應(yīng),分別從數(shù)據(jù)庫中提取數(shù)據(jù)和計(jì)算數(shù)據(jù),并提交給用戶。分析潮汐表和氣象數(shù)據(jù)源,均使用了json 格式封裝,通過解析json 包,可以做到快速地入庫(圖1)。
圖1
表1 潮汐數(shù)據(jù)表
表2 氣象數(shù)據(jù)表
系統(tǒng)采用python 語言開發(fā),應(yīng)用了DJANGO WEB框架,通過MTV(M 代表模型、T 代表模板、V 代表視圖)模式,對數(shù)據(jù)后端與前端進(jìn)行了解耦。
通過分析中國海事網(wǎng)潮汐表頁面(https://www.cnss.com.cn/)和中央氣象臺天氣實(shí)況頁面(http://www.nmc.cn/),均使用了highcharts 可視化圖表庫,數(shù)據(jù)包通過json 格式傳輸,并通過javascript 進(jìn)行頁面DOM 操作。只需針對不同的潮汐站點(diǎn)或氣象站點(diǎn)提交GET 數(shù)據(jù)包請求數(shù)據(jù)即可下載json 數(shù)據(jù)包。
后端應(yīng)用設(shè)置了潮汐、氣象兩個應(yīng)用用于響應(yīng)前端請求,通過VIEW 視圖層實(shí)現(xiàn),在Django 框架中,VIEW視圖層充當(dāng)了溝通數(shù)據(jù)庫與模板的橋梁,也是業(yè)務(wù)邏輯處理的核心。
潮汐應(yīng)用提供了站點(diǎn)信息、潮汐數(shù)據(jù),以及數(shù)據(jù)的潮差、最大值、最小值、均值等的計(jì)算,通過設(shè)計(jì)好的模板層,把數(shù)據(jù)庫中的數(shù)據(jù)呈現(xiàn)在用戶眼前。
氣象應(yīng)用提供了站點(diǎn)信息、氣象數(shù)據(jù)(溫度、氣壓、降雨、濕度、風(fēng)速)的信息以及氣象數(shù)據(jù)的最大值、最小值、總降雨量等。
通過設(shè)置cookies,把用戶的設(shè)置保存在瀏覽器本地,包括站點(diǎn)信息、日期信息等。
還提供了下載的通道,通過提交站點(diǎn)、日期等信息,按照每個整點(diǎn)1 行的形式導(dǎo)入數(shù)據(jù)到Excel 文檔中,用戶可以轉(zhuǎn)化為txt 等用于matlab 程序使用。
在Django 框架中,數(shù)據(jù)庫以模型層來實(shí)現(xiàn)與實(shí)際的數(shù)據(jù)庫做數(shù)據(jù)的交換,模型中的每個類對應(yīng)了數(shù)據(jù)庫中的一張表,這樣的好處是通過映射關(guān)系,剝離了具體數(shù)據(jù)庫的束縛,不需要面對因數(shù)據(jù)庫的變更而導(dǎo)致的無效勞動。
潮汐應(yīng)用設(shè)置了兩張表,分別是潮汐站點(diǎn)表和潮汐數(shù)據(jù)表。氣象應(yīng)用設(shè)置了三張表,分別是省域表、縣域表和氣象數(shù)據(jù)表。其中氣象數(shù)據(jù)提供了溫度、氣壓、降雨、濕度、風(fēng)速、風(fēng)向等信息(如表1,表2)。
前端交互界面不僅提供了站點(diǎn)、日期等選擇按鍵,還提供了數(shù)據(jù)可視化的功能,頁面采用了百度使用JavaScript 開發(fā)的Echarts 開源可視化類庫,通過script 引入echarts.min.js 腳本,就可實(shí)現(xiàn)折線圖、地圖等可視化應(yīng)用。
Echarts 基于json 數(shù)據(jù),制圖過程采用編輯代碼的形式。首先為Echarts 準(zhǔn)備一個具備寬高的DOM 容器,并指定圖表的配置項(xiàng)和數(shù)據(jù),其核心部分就是option 配置代碼。
地圖采用GeoJSON 地理數(shù)據(jù)格式,一個GeoJSON 對象可以表示一個空間區(qū)域,可以表示幾何、特征或者特征集合。通過引入GeoJSON 數(shù)據(jù)包,可以為Echarts 地圖提供數(shù)據(jù)支持。
下載數(shù)據(jù)時本來采用ajax 請求數(shù)據(jù)技術(shù),但是由于ajax 請求只是個“字符型”的請求,即請求的內(nèi)容是以文本類型存放的。文件的下載是以二進(jìn)制形式進(jìn)行的,ajax沒法解析后臺返回的文件流,所以無法處理二進(jìn)制流response 輸出來下載文件。這里直接用JavaScript 生成臨時表單post 提交的方式,解決了此問題。
利用互聯(lián)網(wǎng)提供的共享資料進(jìn)行數(shù)據(jù)分析,對現(xiàn)有的業(yè)務(wù)進(jìn)行了輔助,由于互聯(lián)網(wǎng)的數(shù)據(jù)在不斷地更新中,并未能提供長期的資料支持,需要我們自建數(shù)據(jù)庫保存數(shù)據(jù)與提供web 應(yīng)用供研究人員使用。