劉 軍,陳貴美
(廣東省地震局,廣東 廣州 510070)
Google地圖應(yīng)用之廣東省地區(qū)JOPENS地震速報系統(tǒng)
劉 軍,陳貴美
(廣東省地震局,廣東 廣州 510070)
利用Google公司提供的電子地圖服務(wù),以B/S結(jié)構(gòu)(即瀏覽器和服務(wù)器結(jié)構(gòu))作為系統(tǒng)設(shè)計架構(gòu),監(jiān)聽JOPENS實時系統(tǒng)發(fā)送的地震觸發(fā)消息,訪問JOPENS數(shù)據(jù)庫,根據(jù)廣東省地區(qū)的監(jiān)測要求,制定檢索、篩選策略,獲取地震詳細信息,顯示在瀏覽器網(wǎng)頁上。采用Google地圖的JOPENS地震速報系統(tǒng)可以使地震信息發(fā)布的顯示內(nèi)容更豐富,更具體,并且及時有效的為地震應(yīng)急部門和公眾提供多樣化的數(shù)據(jù)服務(wù)。
Google地圖;JOPENS實時系統(tǒng);B/S結(jié)構(gòu);地震;信息發(fā)布
隨著Web地理信息技術(shù)的發(fā)展,Google公司推出了Google地圖服務(wù),不需要安裝軟件,直接用瀏覽器打開Google地圖網(wǎng)址就可以使用各種地理信息服務(wù)。Google地圖服務(wù)旨在提供全球范圍的電子地圖服務(wù)。它能提供三種視圖:一是矢量地圖(傳統(tǒng)地圖),可提供政區(qū)和交通以及商業(yè)信息;二是不同分辨率的衛(wèi)星照片(俯視圖,跟Google Earth上的衛(wèi)星照片基本一樣);三是地形視圖,可以用以顯示地形和等高線[1~2]。同時開發(fā)者可以使用Javascript語言調(diào)用Google地圖API接口進行二次開發(fā),將地圖信息嵌入到自己的應(yīng)用中。另外由廣東省地震局開發(fā)的JOPENS系統(tǒng)作為一套完整的地震數(shù)據(jù)處理系統(tǒng)也在全國范圍內(nèi)得到廣泛的使用,其可靠性與穩(wěn)定性得到了同行的認可,其消息服務(wù)器的接收與發(fā)布機制相當健壯。近幾年國內(nèi)外大地震不斷,汶川地震,玉樹地震,日本地震等等,使得越來越多的民眾開始關(guān)注地震,他們需要快速,及時的獲取地震信息。網(wǎng)絡(luò)的迅速發(fā)展使得信息的發(fā)布多了一條快速途徑。如果發(fā)揮Google地圖技術(shù)和JOPENS系統(tǒng)的各自特點,利用現(xiàn)在流行的B/S(瀏覽器/服務(wù)器)結(jié)構(gòu),將Google地圖數(shù)據(jù)和地震信息數(shù)據(jù)結(jié)合,那么Google地圖在地震信息服務(wù)方面也可以表現(xiàn)出出色的效果。使地震三要素信息以更生動的形式展現(xiàn)給地震信息使用者,如果有需要,還可以基于Web服務(wù)提供更多的一些相關(guān)信息?!皬V東省地區(qū)JOPENS地震速報系統(tǒng)”就是基于以上思考而開發(fā)出的一套地震信息發(fā)布系統(tǒng)。這套系統(tǒng)的主要特點不僅僅是顯示地震目錄信息及相關(guān)的Google地圖信息,更重要的是還能實時更新頁面,發(fā)出報警,既能以一般的地震信息瀏覽為目的而使用,也可以當成一套獨立的實時地震監(jiān)測顯示系統(tǒng)供地震值班人員使用。
“廣東省地區(qū)JOPENS地震速報系統(tǒng)”采用了當今主流的B/S結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶完全不用考慮自己所使用的終端設(shè)備和操作系統(tǒng),無論是臺式電腦,平板電腦,智能手機,還是筆記本,亦或windows系統(tǒng),linux系統(tǒng),macOS系統(tǒng)等等,用戶界面完全通過WWW瀏覽器實現(xiàn)。瀏覽器端的主要作用是向服務(wù)器請求數(shù)據(jù),載入Google地圖圖片,監(jiān)聽消息,顯示和更新界面。之所以采用B/S結(jié)構(gòu),主要是利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的JavaScript腳本語言和Ajax異步訪問技術(shù),用通用瀏覽器就實現(xiàn)了原來需要復(fù)雜專用軟件才能實現(xiàn)的強大功能,并且節(jié)約了開發(fā)成本和部署成本,這是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)(見圖1)。
圖1 廣東省地區(qū)JOPENS地震速報系統(tǒng)結(jié)構(gòu)圖Fig.1 Diagram of system structure
服務(wù)器端相當于一個黑盒子,主要的事務(wù)邏輯都在這里實現(xiàn)。下面對此進行詳細闡述。本系統(tǒng)底層以JOPENS系統(tǒng)為基礎(chǔ)。JOPENS系統(tǒng)是一個功能豐富而強大的地震數(shù)據(jù)實時處理和存儲系統(tǒng),它的功能包括實時數(shù)據(jù)獲取、數(shù)據(jù)預(yù)處理、震相檢測、地震定位、數(shù)據(jù)存儲、自動向EQIM速報、處理結(jié)果發(fā)布等許多功能,同時JOPENS系統(tǒng)也提供了許多接口,我們可以輕松的將其功能擴展做二次開發(fā)。這里我們主要調(diào)用JOPENS系統(tǒng)的消息服務(wù)接口和數(shù)據(jù)庫訪問接口。JOPENS的消息服務(wù)器是集成了Apache出品的ActiveMQ,它是能力強勁的開源消息總線,符合J2EE規(guī)范的消息服務(wù)器,同時針對企業(yè)級消息應(yīng)用做了功能的擴充,提供了諸如消息隊列集群和分層次主題命名及多主題訂閱;而JOPENS數(shù)據(jù)庫使用關(guān)系型數(shù)據(jù)庫MYSQL作為數(shù)據(jù)管理系統(tǒng)。在此我們沒有必要理解這兩個服務(wù)的內(nèi)部機制,只需要調(diào)用接口,獲取想要的信息即可?!皬V東省地區(qū)JOPENS地震速報系統(tǒng)”部署在Jetty Web服務(wù)器中,它的功能包括:訂閱JOPENS消息服務(wù)器中的實時觸發(fā)消息,訪問JOPENS數(shù)據(jù)庫,獲取地震信息,過濾、篩選、封裝地震數(shù)據(jù),響應(yīng)瀏覽器端的頁面請求和向瀏覽器端發(fā)送地震數(shù)據(jù)。Google地圖服務(wù)器負責響應(yīng)客戶端對地圖數(shù)據(jù)的請求,它返回的是一張張256×256像素的JPEG格式的圖片,在客戶端會拼接成一幅完整的地圖。本系統(tǒng)服務(wù)器端的流程處理為:實時觸發(fā)消息→訪問數(shù)據(jù)庫→過濾,篩選,封裝地震數(shù)據(jù)→發(fā)送數(shù)據(jù)到頁面→請求Google地圖。即瀏覽器端向JOPENS地震速報系統(tǒng)請求地震信息,之后瀏覽器端再根據(jù)這些地震信息的地理位置信息向Google地圖服務(wù)器請求地圖數(shù)據(jù)。最后在瀏覽器端以友好的方式顯示給用戶[3]。
本系統(tǒng)的實現(xiàn)使用了多種語言和技術(shù)框架,在瀏覽器端使用HTML語言,JavaScript腳本語言,Ajax異步傳輸技術(shù),ExtJs界面框架,ActiveMq消息監(jiān)聽技術(shù)和Google地圖API(即Google地圖應(yīng)用程序編程接口);而在服務(wù)器端使用Java語言作為主要開發(fā)語言[4],Jetty服務(wù)器作為Web容器[5],Seam作為Web開發(fā)框架,JPA用來訪問數(shù)據(jù)庫。下面重點介紹本系統(tǒng)如何利用這些技術(shù)實現(xiàn)地震信息與Google地圖集成在一起顯示給用戶。
首先是Seam(即Jboss Seam),它是一個Java EE 5框架。Seam框架把JSF與EJB3.0組件合并在一起,以及利用JDK5.0的Annotation技術(shù),從而為開發(fā)基于Web的企業(yè)應(yīng)用程序提供一個最新的模式。Seam可以讓你把EJB組件直接綁定到JSF頁面。我們利用Seam框架訂閱JOPENS消息服務(wù)器的實時觸發(fā)消息主題(topic/rts/location),訂閱了這個主題,只要JOPENS系統(tǒng)一旦檢測到觸發(fā)信號,本系統(tǒng)就能收到一個字符串,它是一個事件ID號,表示JOPENS系統(tǒng)檢測到一個新的事件。通過這個事件ID號就能在JOPENS數(shù)據(jù)庫中檢索到一系列的觸發(fā)事件信息,這是原始信息,并不適于直接顯示給用戶。原因有三:①某些觸發(fā)事件不屬于廣東省地震監(jiān)測中心的負責范圍;②某些觸發(fā)事件的定位質(zhì)量沒有達到顯示條件或是誤觸發(fā)(即由于干擾而觸發(fā)的事件);③“廣東省地區(qū)JOPENS地震速報系統(tǒng)”本身也規(guī)定了一些顯示條件,只有滿足這些條件才被允許顯示。所以要針對以上三種情況對從JOPENS數(shù)據(jù)庫獲取的一系列地震信息做進一步判斷和過濾。第一種情況的處理方式為:取得距廣東省省界400 km的邊界地理信息數(shù)據(jù),只選擇在這個邊界內(nèi)的觸發(fā)事件;第二種情況的發(fā)生是因為JOPENS實時系統(tǒng)是一套自動處理系統(tǒng),所以不可避免會有誤觸發(fā)事件的情況發(fā)生。而根據(jù)廣東省地震的特點,再加一些基本的判斷,這些誤觸發(fā)事件是完全可能通過程序過濾掉的。比如對定位的深度必須滿足一定條件,如過濾掉深度小于50 km的事件(因為廣東省的地震絕大部分都是淺源地震),還有將參與定位的臺站按震中矩排序,原則上距離震中越近的臺站,拾取的震相應(yīng)該越清晰,定位質(zhì)量也越高,可是JOPENS實時系統(tǒng)由于噪聲干擾,有時能識別出一些遠臺的震相,近臺的震相反而識別不出來,或者沒有用近臺的震相參與定位。這樣的定位,很可能是不準確的。為準確起見這種定位結(jié)果也過濾掉。我們只選那些有較多近臺參與定位的事件。第三種情況是人為添加的一些條件。比如震級M要大于1.2,只選擇那些影響可能較大的事件;對同一個事件如果既有人工分析結(jié)果,又有自動定位結(jié)果,會優(yōu)先顯示人工分析的結(jié)果等等。
圖2 地震信息數(shù)據(jù)處理邏輯Fig.2 Logic of seismic information data processing
當從JOPENS數(shù)據(jù)庫獲取數(shù)據(jù)和對數(shù)據(jù)完成過濾后,我們用XML語言來對數(shù)據(jù)進行封裝。XML語言(Extensible Markup Language) 即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。XML是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。我們定義的XML標簽有:locations(根節(jié)點),location(每個location節(jié)點存儲一個事件信息),id代表序列號,cataId代表目錄號,locationCname代表發(fā)震地點,lat代表震中緯度,lon代表震中經(jīng)度,depth代表震中深度,m代表地震震級,originTime代表發(fā)震時刻,eventId代表事件號,netCode代表臺網(wǎng)代碼,eqType代表地震類型,saveTime代表保存到數(shù)據(jù)庫的時間,locaType代表處理類型,分為自動和人工兩種。下面是一個XML語言描述的地震信息實例:
至此服務(wù)器端已經(jīng)準備好了數(shù)據(jù),供瀏覽器端訪問。當瀏覽器端請求訪問時,會從服務(wù)器端得到一些HTML文件,XML文件,js文件,圖片文件,音頻文件等等。js文件中定義了如何組織顯示數(shù)據(jù),如何根據(jù)地震信息調(diào)用Google地圖及將地震信息標記在Google地圖上。我們重點闡述如何使用Google地圖API調(diào)用Google地圖。
谷歌地圖API是通過開放的Internet傳輸協(xié)議,以標準方式定義并提供可被其他應(yīng)用調(diào)用的服務(wù)內(nèi)容,它通過API調(diào)用將內(nèi)容進行整合。目前架構(gòu)在Web平臺上,隨著以HTTP為基礎(chǔ)的WebAPI的普及,它降低了應(yīng)用服務(wù)整合的門坎。允許開發(fā)者在不必建立自己的地圖服務(wù)器的情況下,將Google地圖數(shù)據(jù)嵌入到網(wǎng)站之中,從而實現(xiàn)嵌入Google地圖的地圖服務(wù)應(yīng)用,并借助Google的地圖數(shù)據(jù)為用戶提供位置服務(wù)。還允許開發(fā)者利用JavaScript腳本進行應(yīng)用開發(fā)拓展,給地圖添加標注和折線及其他地圖圖層覆蓋物和地圖,或者響應(yīng)用戶的點擊動作,并顯示包含內(nèi)容信息在內(nèi)的氣泡提示窗口。通過Google地圖為開發(fā)者提供的地圖API,可以開發(fā)出各種各樣有趣的地圖Mash-up應(yīng)用,還可以將不同地圖圖層加載到應(yīng)用中,如衛(wèi)星影像、根據(jù)海拔高度繪制的高山和植被地形圖、街道視圖等,從而幫助開發(fā)者打造個性化的地圖應(yīng)用站點。
使用Google地圖很簡單,只要在網(wǎng)頁<head></head>中添加以下內(nèi)容:
為了使提供給用戶的界面更優(yōu)雅,我們使用ExtJs框架來創(chuàng)建前端用戶界面,它是一個與后臺技術(shù)無關(guān)的前端Ajax框架(所謂Ajax就是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù))。ExtJs創(chuàng)建的動態(tài)界面在瀏覽器中的顯示相當出色,摒棄了以前信息一有更新就刷新整個頁面的弊端。利用ExtJs里的面板來來裝載地震信息數(shù)據(jù)和Google地圖,同時能夠動態(tài)的監(jiān)聽更新數(shù)據(jù)和地圖。
當用瀏覽器打開“廣東省地區(qū)JOPENS地震速報系統(tǒng)”網(wǎng)址后,就會彈出系統(tǒng)主頁,下圖即是主頁整體效果圖。主頁左邊為地震目錄信息,右邊Google地圖,Google地圖上的小水滴圖標與左邊的地震目錄是一一對應(yīng)的,點擊左邊的目錄,就會在右邊地圖對應(yīng)的小水滴圖標處彈出詳細信息窗口。
圖3 系統(tǒng)主頁界面Fig.3 System main page
圖4 地震目錄列表面板Fig.4 Panel of earthquake catalog list
上圖顯示的是自2011-03-24~2011-04-20期間,震級M大于等于0.8的地震目錄信息,其中包含的信息有震級,發(fā)震時刻,處理類型(“自動”表示自動處理的結(jié)果;“人工”表示人工處理后的結(jié)果),緯度,經(jīng)度,深度。由于充分利用了ExtJs界面框架,使得地震目錄信息的顯示界面相當友好,每一項都可以正序或倒序排列,也可以選擇性的顯示或隱藏某些列的信息。由于系統(tǒng)是實時自動刷新,通常都是先接收到自動信息,所以在“處理類型”那一列有所標識,如果這時地震分析人員對這條目錄進行了人工校核,則系統(tǒng)會優(yōu)先顯示人工分析結(jié)果。
圖5 Google地圖面板Fig.5 Google map panle
上圖為Google地圖面板,其中包含了廣東省臺網(wǎng)中心監(jiān)測范圍(紅色封閉曲線所示),震級圖標(不同震級用不同顏色,不同大小的圖標區(qū)別),地震信息標記,距離測量按鈕,地震詳細信息窗,地圖縮放條,地圖類型選擇按鈕。Google地圖會隨著地震目錄的更新同步更新,具體表現(xiàn)為,每當接收到一個新的地震信息目錄,Google地圖會自動將地圖中心移動到這個最新事件的經(jīng)緯度處,并且彈出地震詳細信息窗。
從以上的實現(xiàn)效果,不難看出,借助Google地圖,可以使地震信息的顯示更加豐富,同時可以提供多樣化的輔助功能,并且使用起來非常方便,只需要一個瀏覽器,打開就能顯示,還可以動態(tài)更新地震信息。如果需要還可以添加其他的一些信息,如人口信息,地質(zhì)地貌信息,為地震應(yīng)急,地震信息發(fā)布提供多樣化,可視化服務(wù)。目前全國都在使用JOPENS系統(tǒng),所以我們的這套系統(tǒng)不僅適用于廣東省,只要略微修改也可以部署在其他省的地震單位使用。就廣東省地區(qū)而言,我們主要是提供給各個地震辦公室作為實時監(jiān)測系統(tǒng)使用。當然如果要使更多的用戶能夠使用地震信息服務(wù)系統(tǒng),必須要有強大的后臺服務(wù)支撐,否則當同時登陸的用戶過多,會造成服務(wù)器宕機。Google地圖是一家外國的地圖服務(wù)提供商,最近面臨著在中國的許可證獲取問題,如果沒有取得許可證國內(nèi)就無法訪問。但是國內(nèi)的地圖服務(wù),如天地圖,百度地圖等都沒有給用戶提供強大而豐富的開發(fā)接口。所以從實現(xiàn)效果上和開發(fā)便捷的角度看,用Google地圖技術(shù)和地震數(shù)據(jù)信息的集成是最好的選擇。
[1]譚慶全,尹東兵.淺談Google Maps地圖數(shù)據(jù)在地震應(yīng)急中的應(yīng)用[J].城市與減災(zāi),2010,6:25-27.
[2]侯建民,劉瑞豐,趙京鐵,等.基于WebGIS地震目錄數(shù)據(jù)發(fā)布系統(tǒng)研究[J].地震地磁觀測與研究,2008,29(2):106-111.
[3]Dejan Bosanac.Activemq in Action[M].MANNING PUBN,2010.
[4]唐倫,唐洪川,呂翊,等.基于J2EE平臺的WebGIS應(yīng)用體系結(jié)構(gòu)[J].微機發(fā)展,2003,13(7):57-59.
[5]陳述彭,魯學(xué)軍,周成虎,等.地理信息系統(tǒng)導(dǎo)論[M].北京:科學(xué)出版社,1999.
Application of Google Map to JOPENS Earthquake Fast Report in Guangdong Province
LIU Jun,CHEN Guimei
(Earthquake Administration of Guangdong Province,Guangzhou 510070,China)
The paper uses the map services provided by Google,taking B/S as the system structures to monitor the message sent by the JOPENS real time system and visit JOPENS database.According to the requirements,the earthquake information are obtained and displayed on the web page.The JOPENS fast earthquake report system,using Google map services,makes the earthquake information more rich and more concrete.This can provide effective and variable data service to departments of earthquake emergence and other public departments.
Google map;JOPENS real time system;B/S structure;Earthquake;Information release
P315.730.5
A
1001-8662(2011)03-0041-09
2011-03-23
劉軍,男,1982年生,主要從事地震監(jiān)測研究.E-mail:duanmu.lj@gmail.com.