周蓉 徐海東 馬強 李光正 王鴻鵬
摘要
本文通過介紹Google Maps的功能及使用方法,以威海港及周邊港口為例,設(shè)計基于Google Maps的溢油點與應(yīng)急設(shè)備間的行程導(dǎo)航,實時顯示溢油點與周圍調(diào)集的應(yīng)急設(shè)備行程狀況,為及時調(diào)集溢油應(yīng)急設(shè)備提供導(dǎo)航,并進行應(yīng)急設(shè)備達到時間的估算,最終為溢油應(yīng)急處理決策的制定提供及時有效的信息。
【關(guān)鍵詞】溢油 Google Maps 導(dǎo)航
1 引言
隨著航運事業(yè)的蓬勃發(fā)展,中國近海溢油事故在近幾十年中不斷發(fā)生,在發(fā)生事故以后,如何以最大限度減少海上溢油造成的污染,保護海洋生態(tài)環(huán)境,已經(jīng)成為日益迫切的社會問題。隨著國內(nèi)外科研院所及各港口對溢油事故及應(yīng)急反應(yīng)的不斷重視,溢油相關(guān)軟件的設(shè)計和開發(fā)不斷成熟,目前已經(jīng)研究成型的絕大部分溢油軟件系統(tǒng)主要以模擬溢油行為、歸宿為主,技術(shù)較為成熟,模擬結(jié)果的精度和可信度較高,但針對溢油應(yīng)急設(shè)備的配優(yōu)化、溢油應(yīng)急處理所需設(shè)備調(diào)集預(yù)測和行程導(dǎo)航設(shè)計等還缺少實質(zhì)性研究。
本文研究立足于威海轄區(qū)的海上溢油和岸線保護,其中包括威海港、石島港、煙臺港等周邊港口,設(shè)計基于Google Maps實時顯示溢油點與周圍調(diào)集的應(yīng)急設(shè)備行程狀況,為及時調(diào)集溢油應(yīng)急設(shè)備提供導(dǎo)航,并進行應(yīng)急設(shè)備到達時間及距離的估算,為溢油應(yīng)急處理決策的制定提供及時有效的信息。
2 Google Maps簡介
Google Maps是Google公司提供的電子地圖服務(wù),該地圖服務(wù)根據(jù)用戶需求可提供三種不同形式的地圖:矢量地圖、衛(wèi)星照片和地形視圖。通過對地圖進行編輯,可以進行商戶查找、地圖查看、公交查詢和駕車導(dǎo)航等,從而幫助開發(fā)者打造個性化的地圖應(yīng)用站點。圖1為Google Maps矢量地圖和衛(wèi)星地圖地圖示例。
Google Maps為代表的地圖服務(wù)的推出開創(chuàng)了全球地理信息服務(wù)新的開端,其具有操作簡單、地圖預(yù)生成、分析功能強大、開發(fā)成本低、數(shù)據(jù)及時更新等特點。2005年Google對外提供了便于二次開發(fā)的開放式地圖服務(wù)應(yīng)用程序接口(Google Maps API),使Google Maps的地圖服務(wù)更好的服務(wù)于不同領(lǐng)域用戶,使用過程中開發(fā)者通過在Google地圖服務(wù)基礎(chǔ)上使用Java Script腳本語言調(diào)用這些API將Google方便嵌入到Web、Android和iOS應(yīng)用中,并進行應(yīng)用開發(fā)拓展,如給地圖添加相應(yīng)標注、覆蓋物及路徑,響應(yīng)用戶的點擊動作等,以達到滿足各行業(yè)及個人具體需求的目的。
3 系統(tǒng)設(shè)計
基于Google Maps的溢油點與應(yīng)急設(shè)備間的行程導(dǎo)航設(shè)計是基于GIS與Google Maps的溢油應(yīng)急設(shè)備智能系統(tǒng)的一部分,也是基于GIS與物聯(lián)網(wǎng)的船舶海上溢油污染智能檢測與控制系統(tǒng)的基礎(chǔ)性工作。主要以威海港及周邊港口為研究對象,在發(fā)生溢油事故時,能夠通過系統(tǒng)顯示溢油海域周邊港口應(yīng)急設(shè)備到溢油港口行程及導(dǎo)航時間,通過與溢油設(shè)備智能知識庫相結(jié)合,形成較完善的溢油智能應(yīng)急系統(tǒng),為溢油污染處理提供知識策略,為整個系統(tǒng)的運行提供支持和保障。研究內(nèi)容在整個系統(tǒng)設(shè)計功能中的作用如圖2所示。
本文利用Google Maps的地理信息服務(wù)功能,在記事本環(huán)境或者Dream weaver環(huán)境中,采用Java Script語言添加相應(yīng)用戶程序,創(chuàng)建自己需要的用戶界面,然后通過內(nèi)部網(wǎng)絡(luò)或廣域網(wǎng)進行操作,客戶端瀏覽器通過HTTP協(xié)議發(fā)送請求,服務(wù)器接受請求后,執(zhí)行Java Script腳本語言,最后將后臺數(shù)據(jù)結(jié)果返回給客戶端瀏覽器上的用戶界面,用戶可以在相應(yīng)界而中進行操作,以滿足實時需求。
主要利用Google Maps API的疊加、事件控制和控件集來實現(xiàn)溢油應(yīng)急設(shè)備調(diào)集行程導(dǎo)航:
(1)疊加:地圖上有經(jīng)緯坐標的對象集合,會隨鼠標拖動或縮放地圖而移動;
(2)事件:使用onChangeHandler()事件處理程序來注冊事件的監(jiān)聽,當指定的事件發(fā)生時,函數(shù)將被調(diào)用;
(3)控件集:根據(jù)開發(fā)者需求利用默認控件和添加控件實現(xiàn)對地圖的操作。
4 功能實現(xiàn)
4.1 注冊API密鑰
我們要想利用Google Maps API功能,首先需要注冊以獲取API密鑰,注冊時需要提供網(wǎng)站的URL,每一個不同的URL都必須申請一個專門的API密鑰。當申請到API密鑰之后,在相應(yīng)的Java Script腳本語句中添加自己的密鑰,就可以將Google Maps嵌入到網(wǎng)頁中,便可對其進行開發(fā)拓展。
4.2 初始化地圖
本文主要以威海港及周邊港口作為研究對象,因此需要將地圖進行定位并縮放,以便能夠較清楚顯示區(qū)域信息,所以將烕海港定位為地圖中心點:既可以采用地理位置名稱(烕海港)進行定位也可以采用該地理位置的經(jīng)緯度(37.442768,122.19937)進行定位,本文采用經(jīng)緯度進行定位。地圖縮放等級選擇為5-8,選擇標準:每個縮放比例下會看到的大致細節(jié)級別為:1:世界;5:大陸/洲;10:城市;15:街道;20:建筑物。本文選為8。效果如圖3所示。
初始化地圖對象:
4.3 添加應(yīng)用程序
成功創(chuàng)建一副地圖后,若想要實現(xiàn)不同功能,需要在地圖上添加一些控件,也可以創(chuàng)建自己的控件以處理與用戶的交互操作,如路線導(dǎo)航功能需要選擇不同港口,通過“onChangeHandler”事件,調(diào)用directionsService.route功能,計算所選設(shè)備庫所在港口到溢油應(yīng)急點之間的行程導(dǎo)航時間與距離:
4.4 顯示選擇窗口
港口發(fā)生溢油事故時可從不同應(yīng)急設(shè)備庫調(diào)集應(yīng)急物資,因此需要在地圖上方浮動選擇窗口,通過鼠標點擊選擇,后臺程序通過監(jiān)聽器調(diào)用路徑計算程序,從而在頁面顯示相應(yīng)信息提示框,表示相應(yīng)的時間、距離、路線信息。
溢油應(yīng)急點選擇、周邊溢油設(shè)備港口選擇及信息顯示框如圖4所示。
整體效果如圖5。
假如溢油港口為威海港,想從周圍港口調(diào)集應(yīng)急設(shè)備,為保證及時處理溢油污染,需要權(quán)衡各設(shè)備庫到溢油港口距離及時間問題,為溢油事故的處理提供及時有效的基礎(chǔ)保障。圖4為從石島港調(diào)集溢油應(yīng)急設(shè)備時,此段行程具體路線、時間及距離。
5 總結(jié)
基于Google Maps實時顯示溢油點與周圍調(diào)集的應(yīng)急設(shè)備行程狀況,利用Google Maps對溢油點到各應(yīng)急設(shè)備庫的行程進行實時顯示,并能自動計算調(diào)集應(yīng)急設(shè)備所能到達的時間及距離,為溢油事故的處理提供及時有效的基礎(chǔ)保障。該系統(tǒng)與基于GIS的應(yīng)急設(shè)備庫智能管理系統(tǒng)相結(jié)合,能為溢油應(yīng)急決策提供有效的支持和保障。
參考文獻
[1]張志斌,徐敏,盧金樹,李玉樂,朱發(fā)新.雙殼油船液貨泄漏機理及預(yù)防措施探究[J].機電設(shè)備,2013(03):81-84.
[2]趙文朋.船舶溢油應(yīng)急決策系統(tǒng)的研究與開發(fā)[D].上海海事大學(xué),2007.
[3]王志紅,胡川.基于Google Maps API的網(wǎng)絡(luò)地圖服務(wù)系統(tǒng)的研究與應(yīng)用[J].測繪標化,2010:26(02).
[4]戴兵.基于Google Maps API的校園地圖設(shè)計[J].電腦知識與技術(shù),2008(S2):184-185.
[5]耿慶齋,繆綸,段媛媛,李江華.基于Google Maps API的Web地圖服務(wù)系統(tǒng)研究及應(yīng)用[J].中國水利水電科學(xué)研究院學(xué)報,2009,3(01).