沈萍月,馬琰鋼,李 建,謝國權(quán)
(1.浙江省氣象服務(wù)中心,浙江 杭州 310017)
Google Maps API是Google公司提供的基于Web2.0技術(shù)的開放JavaScript API,可以完成地圖數(shù)據(jù)的提供、處理、發(fā)布等一系列服務(wù),可以通過編程方式調(diào)用Google Maps地圖數(shù)據(jù)庫中的信息。
Google Maps在線地圖服務(wù)的特點(diǎn):① 可免費(fèi)利用資源;②可提供高精度的矢量數(shù)據(jù)和柵格數(shù)據(jù),城市和部分縣城有0. 61 m分辨率衛(wèi)星影像;③每天支持的免費(fèi)地圖訪問次數(shù)為50 000次以內(nèi);④可以在Google Maps AP I的基礎(chǔ)上開發(fā)自己的函數(shù);⑤注冊(cè)用戶可以將自己的標(biāo)簽加到網(wǎng)頁上進(jìn)行信息整編和圖片上傳[3]。
Google Maps API是一套用來操作Google Maps的地圖應(yīng)用接口函數(shù)庫,由JavaScript腳本實(shí)現(xiàn),提供了基于Google Maps的3種地圖模式(交通、衛(wèi)星影像和地形)的各種層面的調(diào)用和擴(kuò)展接口。Google Maps API提供的最重要的類是GMap,它代表頁面上的地圖對(duì)象,用戶可以根據(jù)需要在頁面上使用GMap的實(shí)例。API開發(fā)包提供給用戶的動(dòng)態(tài)函數(shù)庫讓開發(fā)者可以為每個(gè)實(shí)例提供一些指定的事件,并利用靜態(tài)方法GEventaddListener或GEvent. bind監(jiān)視這些事件。此外,API還提供GMarker、GIcon、GPolyline、GLargeMapControl等 類來分別實(shí)現(xiàn)標(biāo)注、標(biāo)記、折線、控件等功能[4]。
氣象全球眼視頻監(jiān)控系統(tǒng)利用中國電信的寬帶網(wǎng)絡(luò),將分散、獨(dú)立的圖像采集點(diǎn)進(jìn)行聯(lián)網(wǎng),實(shí)現(xiàn)跨區(qū)域的統(tǒng)一監(jiān)控、統(tǒng)一存儲(chǔ)、統(tǒng)一管理和資源共享,為氣象服務(wù)提供一種全新、直觀、擴(kuò)大視覺和聽覺范圍的管理工具,提高工作績效[5]。同時(shí),通過二次應(yīng)用開發(fā),為全球眼視頻資源再利用提供了手段。
系統(tǒng)基于Google Maps API由JavaScript腳本實(shí)現(xiàn),先將各氣象全球眼的ID號(hào)、名稱、經(jīng)緯度等信息存儲(chǔ)于XML中,讀取XML文件來定位顯示全球眼的位置,通過獲取XML文件中各站點(diǎn)的ID號(hào)來連接相應(yīng)的全球眼視頻。整個(gè)系統(tǒng)采用B /S體系結(jié)構(gòu)(如圖1所示),支持用戶任意時(shí)間、任何地點(diǎn)通過網(wǎng)絡(luò)來進(jìn)行系統(tǒng)操作[6,7]。為了方便查詢和比較顯示,系統(tǒng)將全球眼按地域分成高山、公路、沿海、航道和城市等類別。
圖1 系統(tǒng)結(jié)構(gòu)圖
地圖基本操作功能包括平移、放大、縮小、比例尺設(shè)定、地圖類型設(shè)定和鷹眼等操作。對(duì)Google Maps數(shù)據(jù)的提取、顯示、控制是通過JavaScript 腳本語言進(jìn)行的。首先,在Google Maps 上申請(qǐng)API KEY,將Google Maps 嵌入到系統(tǒng)中,并增加控制地圖選項(xiàng),使 用 map.addControl(new smallMapControl())、map.addControl(new GmapTypeControl())等API 控制地圖,實(shí)現(xiàn)地圖的放大、縮小、漫游等相關(guān)操作以及Googlemaps 地圖和衛(wèi)星影像的切換[8]。
為了方便在Google Maps地圖上顯示氣象全球眼站點(diǎn)信息,先將各站點(diǎn)的經(jīng)緯度坐標(biāo)點(diǎn)值等信息存入XML文件中,同時(shí)也按高山、公路、沿海、航道、城市等分類的存儲(chǔ)成相應(yīng)的XML文件,然后在地圖顯示的時(shí)候加載并解析XML文件,根據(jù)XML文件中存儲(chǔ)的各站點(diǎn)的坐標(biāo)信息,在當(dāng)前地圖添加相應(yīng)標(biāo)記[9]。將浙江省氣象全球眼在Google Maps地圖上標(biāo)出,顯示效果圖如圖2所示。編程代碼如下:
function login()
{ loadmap("全部");
loginOrLogout(); }
function loadmap(kindval)
{ if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setMapType(G_HYBRID_MAP);
map.enableScrollWheelZoom();
map.setCenter(new GLatLng(28.5, 124.5),7);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
// 創(chuàng)建我們的“縮微”圖標(biāo)
var icon = new GIcon();
icon.image = "./images/eye.png";
icon.iconSize = new GSize(20,24);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
if(kindval == "全部"){
xmlDoc.load('./qqyzdqb.xml'); }
else if(kindval == "高山"){
xmlDoc.load('./qqyzdgs.xml'); }
else if(kindval == "沿海"){
xmlDoc.load('./qqyzdyh.xml'); }
else if(kindval == "公路"){
xmlDoc.load('./qqyzdgl.xml'); }
else if(kindval == "航道"){
xmlDoc.load('./qqyzdhd.xml'); }
else if(kindval == "城市"){
xmlDoc.load('./qqyzdcs.xml'); }
var root = xmlDoc.documentElement; // 根節(jié)點(diǎn)
var childNodes = root.getElementsByTagName("s tation");
// 獲得標(biāo)簽為User的子節(jié)點(diǎn)集合
var trarr= new Array();
// 循環(huán)讀取子節(jié)點(diǎn)的經(jīng)緯度屬性
for(var i=0; i { var child = childNodes[i]; var siteid= child.attributes(0).value; var Longi = child.attributes(2).value; // 獲得經(jīng)度屬性 var Lat = child.attributes(3).value; // 獲得緯度屬性 trarr[i]= new Array(siteid,Longi,Lat); } function createMarker(point, index) { var marker = new GMarker(point, icon); var siteidsel = trarr[i][0]; GEvent.addListener(marker, "click", function() { rs=WebOcx.StartMonitor(siteidsel, 0, 0, 1, 0, 0); }); return marker; } for(i=0;i { var point = new GLatLng(trarr[i][2],trarr[i][1]); map.addOverlay(createMarker(point, i)); } } } 圖2 氣象全球眼站點(diǎn)示意圖 將氣象全球眼的站點(diǎn)添加于Google Maps地圖上后,還要連接各站點(diǎn)相應(yīng)的視頻。先通過加載并解析氣象全球眼站點(diǎn)信息的XML文件獲得站點(diǎn)的ID號(hào),再將獲得的ID號(hào)傳入全球眼OCX控件,可以連接相應(yīng)的視頻。點(diǎn)擊全球眼的圖標(biāo),顯示效果如圖3所示。編程主要代碼如下: …… //初始化控件 rs=WebOcx.Initialize(1, 1, 1, 255); WebOcx.SetVideoShowWindows(1); // 添加事件響應(yīng), function createMarker(point, number) { var marker = new GMarker(point); // Show this marker's index in the info window when it is clicked. var html = "Marker #"; GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html);}); return marker; } //注銷控件 function destroyOcx() { WebOcx.LogoutUAS(); WebOcx.UnInitialize(); } //登陸或登出方法 function loginOrLogout() { if (top.b_HasLogin) { WebOcx.LogoutUAS(); } else { var passEncrypt = 0; //alert(passEncrypt); } WebOcx.LoginUAS("60.191.58.158","5555","adminqxzx@qxj.zj.ge","1234", 0, 0, 0, 0); } //重新連接 function reConnect() { var lResult = top.WebOcx.ReLoginUAS(); if (lResult != 0) { alert("重新登錄失敗!"); var htmlStr = "連接失敗 " document.getElementById("status").innerHTML= htmlStr; document.getElementById("status").title="連接斷開!"; } 圖3 氣象全球眼視頻圖 else { btnLogin.value=" 登出 "; top.b_HasLogin = true; document.getElementById("status").innerHTML= '連接成功!'; document.getElementById("status").title=''; } } //開始監(jiān)控 function StartMonitor() { rs=WebOcx.StartMonitor(CameraID, 0, 0, 1, 0, 0); } //停止監(jiān)控 function StopMonitor() { rs=WebOcx.StopMonitor(CameraID, 0); } //云臺(tái)控制 function CameraControl(num) { WebOcx.CameraControl(CameraID, num, 5, 0);} //設(shè)置窗口數(shù) function SetVideoShowWindows(num) { WebOcx.SetVideoShowWindows(num); } //獲取當(dāng)前選中窗口的通道id function GetCameraID() { WebOcx.GetCameraID(); } 氣象全球眼為氣象服務(wù)監(jiān)控系統(tǒng)多了一雙“千里眼”,可以實(shí)時(shí)看到省內(nèi)不同點(diǎn)的天氣實(shí)況,這是共享了中國電信全球眼視訊系統(tǒng)的成果。氣象全球眼視頻監(jiān)控系統(tǒng)將分散的圖像采集點(diǎn)進(jìn)行聯(lián)網(wǎng),實(shí)現(xiàn)了集中管理,用戶可以不受時(shí)間、地點(diǎn)限制對(duì)監(jiān)控目標(biāo)進(jìn)行實(shí)時(shí)監(jiān)控、管理和觀看,進(jìn)行遠(yuǎn)程網(wǎng)絡(luò)攝像、云臺(tái)控制、實(shí)時(shí)錄像、定格抓拍等[10]。通過共享全省的動(dòng)態(tài)氣象全球眼信息,掌握當(dāng)?shù)氐娘L(fēng)、雨、積水、水位等現(xiàn)場(chǎng)圖像信息,為氣象預(yù)警、防災(zāi)減災(zāi)等提供了實(shí)時(shí)資訊,也為浙江天氣網(wǎng)、浙江氣象影視及氣象專題提供了豐富的視頻信息和圖像信息,大大增強(qiáng)了防臺(tái)防汛等氣象服務(wù)能力。 [1]張怡群. 全球眼視頻監(jiān)控系統(tǒng)架構(gòu)設(shè)計(jì)[J].安防科技, 2007(6):68-72 [2]劉毅,吳婷.“全球眼”網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)在環(huán)境質(zhì)量監(jiān)測(cè)中的應(yīng)用[J].電信科學(xué),2007(11):50-52 [3]楊云源,何禮平. 基于Google Maps API的WebGIS應(yīng)用研究[J].電腦開發(fā)于應(yīng)用, 2009,22(1):12-6 [4]楊天亮,王亮.基本Google Map API的電信基站信息管理系統(tǒng)研究[J].地理空間信息,2008,6(4):19-21 [5]肖凱.中國電信“全球眼”視頻監(jiān)控系統(tǒng)[J].通信世界,2006(5):28 [6]田鳳賓,趙軍.基于Google Maps的同城生活信息平臺(tái)設(shè)計(jì)策略研究[J].電腦知識(shí)與技術(shù),2008(16):1 340-1 341 [7]葉青,陳冰廉.WebGIS技術(shù)及其在氣象領(lǐng)域的應(yīng)用[J].廣西氣象,2004,25(3):40-43 [8]Sign Up for the Google Maps API[EB/OL].http://code.google.com/apis/maps/signup.html,2007- 12 [9]陳海燕,劉珍.基于Google Maps的地理信息標(biāo)注系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].湖南科技大學(xué)學(xué)報(bào):自然科學(xué)版,2009,24(3):87-90 [10]張應(yīng)福.全眼球視頻監(jiān)控技術(shù)與工程應(yīng)用研究[J].通信與信息技術(shù),2008(4):41-433.3 氣象全球眼視頻監(jiān)控功能
4 結(jié) 語