丁 毅,彭 宏
(浙江省通信網(wǎng)應(yīng)用技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,浙江杭州310023)
當(dāng)前的信息社會(huì),人們對(duì)地理信息的認(rèn)知越來越廣,對(duì)地理信息服務(wù)的新需求推動(dòng)了網(wǎng)絡(luò)地圖服務(wù)模式的發(fā)展,地理信息服務(wù)已從早期以地圖為載體的信息傳遞方式發(fā)展到建立在計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、空間技術(shù)、通訊技術(shù)以及地理信息技術(shù)等基礎(chǔ)上的現(xiàn)代地理信息服務(wù)模式[1]。WebGIS(萬維網(wǎng)地理信息系統(tǒng))正是為適應(yīng)這種模式而產(chǎn)生的一種新技術(shù),用戶只需一臺(tái)連在Internet網(wǎng)上的電腦,就可以鏈入WebGIS站點(diǎn),查詢他所需要的地理信息數(shù)據(jù)[2]。借助于地理信息系統(tǒng)平臺(tái)可進(jìn)行WebGIS開發(fā),當(dāng)前開放的平臺(tái)有很多,如Google Maps、百度地圖、圖吧地圖、搜狗地圖等。利用WebGIS與地圖可開發(fā)一個(gè)對(duì)車輛或人員進(jìn)行監(jiān)控管理,也就是實(shí)現(xiàn)實(shí)時(shí)定位的系統(tǒng)。本文介紹了GIS以及Google Maps API并給出了WebGIS系統(tǒng)架構(gòu),最后給出了了Google Maps在網(wǎng)頁客戶端設(shè)備定位中的一種應(yīng)用。
地理信息系統(tǒng)(Geographic Information System,GIS)是以地理空間數(shù)據(jù)庫為基礎(chǔ),在計(jì)算機(jī)軟硬件的支持下,運(yùn)用系統(tǒng)工程和信息科學(xué)的理論,科學(xué)管理和綜合分析具有空間內(nèi)涵的地理數(shù)據(jù),以提供管理、決策等所需信息的技術(shù)系統(tǒng)。簡單的說,GIS是一個(gè)基于數(shù)據(jù)庫管理系統(tǒng)的分析和管理空間對(duì)象的信息系統(tǒng)[3]。
早期的GIS由于使用的是C/S結(jié)構(gòu),因此適用范圍很小。對(duì)于GIS,如果要深入應(yīng)用研究需要有兩項(xiàng)必備支持,一個(gè)是數(shù)據(jù),另一個(gè)是平臺(tái),兩者缺一不可。如果要開發(fā)GIS需要花錢購買GIS公司的GIS平臺(tái)產(chǎn)品并找地圖供應(yīng)商購買地圖,費(fèi)用開銷很大。而如今,Google提供了免費(fèi)的數(shù)據(jù)和平臺(tái),發(fā)布了相關(guān)數(shù)據(jù)接口API,它都是開源的,使用非常方便,需要的就是一些開發(fā)和集成。Google Maps二次開發(fā)就是在Google地圖服務(wù)的基礎(chǔ)上,使用Google Maps API和DOM,加載企業(yè)地理信息、增加用戶交互、修正Google地理信息,以滿足企業(yè)的需求。Google Maps API按其功能可分為兩部分:一部分是顯示地圖功能,主要是Map類;一部分是API的擴(kuò)展功能,比如地圖控件,地圖疊加層等,常用的類或函數(shù)是Marker類、InfoWindow類、Polyline類等。通過調(diào)用API,開發(fā)者可以將谷歌地圖嵌入網(wǎng)站中,從而實(shí)現(xiàn)嵌入谷歌地圖的地圖服務(wù)應(yīng)用,并借助地圖數(shù)據(jù)為用戶提供位置服務(wù)。同時(shí)它還允許開發(fā)者利用JavaScript腳本進(jìn)行應(yīng)用開發(fā)拓展,給地圖添加標(biāo)記和折線以及其他圖層覆蓋物或者響應(yīng)用戶點(diǎn)擊操作,并顯示氣泡提示窗口。當(dāng)然,最關(guān)鍵的是Google Maps API是一項(xiàng)免費(fèi)的服務(wù),任何非營利性網(wǎng)站均可使用。
實(shí)現(xiàn)WebGIS的方法有很多,包括 CGI方法、ActiveX方法、JavaApplet方法以及 ServerAPI方法等[4]。有了地圖API,開發(fā)者就可以創(chuàng)建屬于自己的應(yīng)用程序。本文使用的Google Maps API工作原理圖如圖1所示:
圖1 Google Maps API工作原理圖
從圖1中可以看出,整個(gè)工作過程是客戶端(WEB瀏覽器)發(fā)送一個(gè)基于GIS的HTTP請(qǐng)求后,Web服務(wù)器首先收到并將其解析后發(fā)送給Google Maps服務(wù)器,這兩個(gè)服務(wù)器協(xié)同響應(yīng)客戶端的請(qǐng)求,地圖服務(wù)器將生成的地圖文件返回并在瀏覽器上加載顯示地圖。
本文介紹的基于WebGIS的網(wǎng)頁客戶端系統(tǒng)具有設(shè)備定位功能,它可應(yīng)用于車輛GPS定位或者移動(dòng)終端設(shè)備的定位。本系統(tǒng)設(shè)備定位的實(shí)現(xiàn)方式是在網(wǎng)頁上通過Ajax請(qǐng)求獲取設(shè)備的GPS信息,后臺(tái)接收請(qǐng)求后將設(shè)備位置顯示在Google Maps上,并顯示出設(shè)備相關(guān)信息。
整個(gè)設(shè)備定位的流程如圖2所示:
圖2 設(shè)備定位流程圖
具體過程是:
(1)選擇設(shè)備
登錄網(wǎng)站后,在菜單欄中點(diǎn)擊設(shè)備定位按鈕,將在主頁顯示所有設(shè)備列表,點(diǎn)擊你所要的設(shè)備名。此時(shí)網(wǎng)頁完成加載谷歌地圖的操作,默認(rèn)將地圖中心設(shè)置在杭州,并將你點(diǎn)擊的設(shè)備的ID數(shù)據(jù)保存起來準(zhǔn)備傳遞到下一張網(wǎng)頁;
(2)選擇設(shè)備定位查詢
在選擇了設(shè)備定位后,網(wǎng)頁會(huì)重新加載地圖,新的地圖網(wǎng)頁收到了上一張網(wǎng)頁的消息數(shù)據(jù),它是extjs通過ajax傳遞過來的devidx(設(shè)備id);
(3)后臺(tái)查詢定位信息
前臺(tái)客戶端網(wǎng)頁將收到的設(shè)備ID通過AJAX請(qǐng)求發(fā)送到服務(wù)器,后臺(tái)服務(wù)器在接收到Ajax信息后,通過url.py映射到views.py中的特定函數(shù)。接著函數(shù)接收request后讀取設(shè)備ID參數(shù),然后根據(jù)這個(gè)參數(shù)查詢數(shù)據(jù)庫,獲得包括設(shè)備經(jīng)緯度、設(shè)備位置在內(nèi)的信息。查詢經(jīng)緯度信息相關(guān)代碼如下。
這是django數(shù)據(jù)庫查詢語句,在DevGpsHistory表中查找devid等于dev_id的,并且gps星數(shù)大于等于一星的最新一條gps記錄。獲取的his_get是一個(gè)數(shù)組,這樣就通過該車輛id在數(shù)據(jù)庫中查找出了該設(shè)備最新的經(jīng)緯度,定位時(shí)間,地理位置描述,視圖(views.py)函數(shù)在解析完后,將這些信息打包成Json格式返回給前臺(tái)客戶端網(wǎng)頁;
(4)WebGIS的交互
前臺(tái)客戶端網(wǎng)頁在收到Json數(shù)據(jù)后,通過解析,利用Google Maps API將該點(diǎn)顯示在地圖上。通過解析Json數(shù)據(jù),得到設(shè)備GPS信息和位置信息,將該坐標(biāo)點(diǎn)標(biāo)注在地圖上,實(shí)現(xiàn)了定位功能。
基于Google Maps的設(shè)備定位效果如圖3所示,地圖上的標(biāo)記點(diǎn)即此設(shè)備的位置所在,它可以顯示包括設(shè)備名、經(jīng)緯度和位置信息。
圖3 演示效果圖
本文介紹了Google Maps API的使用方法并將其應(yīng)用于基于Google Maps API的WebGIS設(shè)備定位系統(tǒng)。實(shí)踐表明,基于Google Maps API開發(fā)的網(wǎng)頁客戶端設(shè)備定位系統(tǒng)具有較強(qiáng)的交互性和用戶體驗(yàn),且使用方便,無需額外費(fèi)用,降低了使用門檻,具有一定的應(yīng)用價(jià)值。
[1] 劉岳峰.地理信息服務(wù)概述[J].地理信息世界,2004,2(6):26-29.
[2] 陸守一.地理信息系統(tǒng)[M].北京:高等教育出版社,2004:18-19,232-233.
[3] 朱昕澤.GIS平臺(tái)在校園數(shù)字化中的應(yīng)用——Google Maps API的使用[J].文藝?yán)碚摚?010,(7):159-185.
[4] 范圣策.GPS客戶端的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2011.
[5] 陳育春.Google Maps API開發(fā)大全[M].北京:機(jī)械工業(yè)出版社,2010:30-50,110-140.