楊慧偉,付海靜,秦 剛
1(中國科學院大學,北京 100049)
2(中國科學院 計算機網(wǎng)絡信息中心,北京 100190)
到目前為止,全國已建立各種類型、不同級別的自然保護區(qū)3381個.保護區(qū)的巡護人員需要定期對其進行巡護,記錄巡護信息.在自然保護區(qū)內(nèi),生態(tài)環(huán)境破壞活動時有發(fā)生,巡護作為自然保護區(qū)管理工作中最基礎、最重要、最艱苦的工作,目的是及時地掌握管護區(qū)域內(nèi)的人為活動及破壞動植物資源的情況,以采取針對性的保護策略,打擊制止保護區(qū)內(nèi)的非法活動,提高保護的有效性和科學性[1,2].傳統(tǒng)的巡護方式是:巡護人員主要手持GPS定位儀記錄坐標點信息,攜帶相機進行拍照、錄像,填寫紙質(zhì)的巡護表格,然后手動錄入到系統(tǒng)中,造成巡護操作復雜、巡護數(shù)據(jù)記錄繁瑣、數(shù)據(jù)容易丟失、數(shù)據(jù)整合復雜、無法檢索等不便.現(xiàn)在還有很多自然保護區(qū)還是以傳統(tǒng)的巡護工作方式為主.
隨著國內(nèi)移動網(wǎng)絡的全覆蓋,包括自然保護區(qū)內(nèi)網(wǎng)絡信號的不斷改善,在自然保護區(qū)內(nèi)能夠正常使用移動網(wǎng)絡.移動GIS在野外應用的逐漸發(fā)展,已經(jīng)成為野外數(shù)據(jù)采集的主要方式[3–5],但移動端不適合對數(shù)據(jù)進行管理,使用Web端能有效解決數(shù)據(jù)的管理問題.目前,結合移動端和Web端在自然保護區(qū)的應用并不多[6–8].基于位置的服務(Location Based Service,LBS),是在GIS平臺的支持下,根據(jù)用戶的位置信息為用戶提供相應服務,如今已廣泛應用在緊急救援、位置跟蹤、定位導航、本地搜索、社交娛樂、廣告促銷等方面.野外巡護過程中需要對巡護人員進行跟蹤,巡護過程中采集的數(shù)據(jù)幾乎都含有位置信息,但國內(nèi)針對自然保護區(qū)的LBS應用還比較少[9,10].
本文旨在結合LBS技術構建自然保護區(qū)移動巡護系統(tǒng)來取代傳統(tǒng)的巡護方式.本文還在軌跡和關鍵點巡護數(shù)據(jù)(含有經(jīng)緯度坐標信息)存儲方面,使用了KML(Keyhole Markup Language)標記語言[11],最終將軌跡和巡護數(shù)據(jù)整合成KMZ軌跡文件,使得軌跡數(shù)據(jù)多樣化.
整個系統(tǒng)分為移動端采集系統(tǒng)、Web端管理系統(tǒng).在邏輯上分為用戶層、應用層、服務器端和位置服務,整個架構如圖1所示.位置服務為應用層提供地圖服務和定位服務;服務器端用來存放用戶信息、用戶采集的巡護信息、KMZ軌跡文件,并使用Tomcat作為Web服務器,給應用層提供訪問.應用層則提供可視化界面給用戶進行操作,分為移動端APP和Web端系統(tǒng);用戶層有保護區(qū)巡護人員和管理人員.移動端APP主要給保護區(qū)的巡護人員使用,用來采集數(shù)據(jù);Web端系統(tǒng)主要給保護區(qū)的管理人員使用,用來管理數(shù)據(jù),并及時了解巡護人員的工作情況和實時位置等.
移動端采集系統(tǒng)的用戶是巡護人員,巡護人員在開始巡護時,首先需要在移動終端上進行登錄,開啟軌跡記錄功能.在巡護過程中,填寫巡護數(shù)據(jù)表,記錄巡護事件,必要時進行拍照、錄音和視頻拍攝.巡護結束后,結束軌跡記錄,將巡護軌跡和數(shù)據(jù)同步到服務器端.移動端系統(tǒng)功能主要包括用戶登錄和注冊、數(shù)據(jù)記錄和管理、數(shù)據(jù)表的模板管理、軌跡記錄和管理、離線地圖、用戶實時位置記錄、系統(tǒng)設置和升級.

圖1 系統(tǒng)總體架構
Web端管理系統(tǒng)的用戶是保護區(qū)的管理人員和巡護人員.管理人員需要對巡護人員進行管理,檢索和查看巡護人員的歷史軌跡數(shù)據(jù),統(tǒng)計巡護數(shù)據(jù),以及查看巡護人員巡護時所在的實時位置.巡護人員可以在巡護結束后,使用有線網(wǎng)絡在Web端系統(tǒng)上上傳軌跡文件,在巡護過程中,生成的巡護軌跡文件一般都比較大,不適合使用移動網(wǎng)絡上傳.Web端系統(tǒng)的主要功能包括用戶登錄和管理、軌跡上傳、軌跡展示(在地圖上顯示軌跡以及關鍵點信息)、軌跡搜索、軌跡統(tǒng)計、軌跡下載、巡護人員實時位置展示等.
整個系統(tǒng)的功能結構設計如圖2所示.

圖2 系統(tǒng)功能結構設計
基于位置的服務(Location Based Service,LBS)作為移動互聯(lián)網(wǎng)時代的基礎服務,已成為人們?nèi)粘I钪胁豢苫蛉钡牟糠?日常生活中80%的信息與位置有關.LBS是通過無線通信網(wǎng)絡定位或外部定位(GPS定位)方式,獲取移動終端用戶的位置信息,并以此為基礎而提供的空間信息服務[12].目前國內(nèi)的地圖位置服務提供商已經(jīng)開放了LBS接口,包括移動端開發(fā)和Web開發(fā)的接口,提供地圖展示、定位、檢索服務等,開發(fā)者可以調(diào)用其接口,自主開發(fā)基于地圖和定位服務的應用程序.
由于保護區(qū)地理位置偏遠,在選擇地圖服務時,需要考慮地圖在保護區(qū)的精度.對比主流的地圖位置服務提供商:谷歌地圖、騰訊地圖、百度地圖、高德地圖等.其中谷歌地圖提供的地圖精度最高,但在國內(nèi)無法正常使用;其次是騰訊地圖,精度高于百度、高德地圖,所以本文使用了騰訊位置服務來為移動端和Web端提供地圖服務.
KML(Keyhole Markup Language)文件是一種在GOOGLE地圖瀏覽器中用于交換地理數(shù)據(jù)的文件.它基于XML,并定義了一些TAG用于規(guī)定地理數(shù)據(jù)的顯示方式.KML可用于定義的地理特征包括地點、描述、疊層、路徑和多邊形等.KML現(xiàn)在是由開放地理空間聯(lián)盟(Open Geospatial Consortium,Inc.,簡稱 OGC)維護的國際標準.KMZ文件是壓縮過的KML文件.由于KMZ是壓縮包,因此,它不僅包含KML文件,也能包含其他類型的文件,例如圖片、視頻、音頻等.國內(nèi)的主流地圖服務目前沒有支持KML文件格式,但國內(nèi)學者武希濤[13]基于高德地圖API研究了加載KML文件的方法,杜英俊[14]等人將KML應用在相關GIS系統(tǒng)中,但很少有將KML應用到保護區(qū)中.
本文的KMZ軌跡文件是由RouteRecord.kml、TrackDetail.xml、audio、photo和video組成,目錄如圖3所示.RouteRecord.kml文件記錄了巡護軌跡的點坐標(Document/Folder/Placemark表示一條軌跡)和關鍵點信息(Document/Placemark表示一個關鍵點)等,如圖4所示.TrackDetail.xml文件記錄了軌跡的信息,包括巡護人、巡護軌跡名、巡護開始時間、巡護結束時間、軌跡長度、最高海拔等信息,如圖5所示.騰訊地圖服務沒有提供瀏覽KMZ文件相關的接口,所以在服務器端需要提取KMZ軌跡文件中的信息,然后在地圖中進行展示.KMZ是壓縮文件,需要使用解壓縮技術;RouteRecord.kml、TrackDetail.xml是XML格式文件.本文使用的是Apache的ant.jar來實現(xiàn)解壓縮,使用資源占用少、快速的SAX解析方式來解析XML格式文件.

圖3 KMZ目錄

圖4 RouteRecord.kml文件樣例

圖5 TrackDetail.xml文件樣例
移動端通過GPS定位獲取的坐標采用的是標準坐標系,即地球坐標系(WGS),騰訊地圖使用的是火星坐標系(GCJ-02),也叫國測局坐標系,所以需要對其進行坐標轉(zhuǎn)換.騰訊地圖服務只提供了其他經(jīng)緯度坐標(包括GPS)轉(zhuǎn)換成騰訊地圖經(jīng)緯度坐標的接口,而在Web端需要用到騰訊地圖經(jīng)緯度坐標轉(zhuǎn)GPS坐標,具體轉(zhuǎn)換代碼如圖6所示.
在Web應用中使用的HTTP協(xié)議是無狀態(tài)的,客戶端發(fā)起請求并接收到服務器應答后就會斷開連接,所以無法實現(xiàn)“服務器推送”.目前主要的服務器推送技術有Comet和WebSocket兩種.Ajax長輪詢是Comet常見的實現(xiàn)方式之一,就是瀏覽器通過JS調(diào)用XMLHttpRequest對象向服務器發(fā)出請求,收到服務器的返回數(shù)據(jù)后再重新發(fā)出請求,以保證獲取到最新的消息,一般瀏覽器都支持這種方式.WebSocket是在新一代HTML標準——HTML5中提供的一種瀏覽器和服務器間進行全雙工通訊的網(wǎng)絡技術,與HTTP協(xié)議的請求/響應模式不同,WebSocket在建立連接之前有一個Handshake(Opening Handshake)過程,在關閉連接前也有一個Handshake(Closing Handshake)過程,建立連接之后,即可進行雙向通信.

圖6 WGS坐標轉(zhuǎn)GCJ-02坐標
移動端系統(tǒng)主要使用JDK 7、Android 4.2 SDK(API17)、騰訊Android定位SDK、騰訊Android地圖SDK進行開發(fā),使用HTTP協(xié)議、JSON數(shù)據(jù)格式和服務器端進行數(shù)據(jù)傳輸.移動端核心功能有數(shù)據(jù)記錄、軌跡記錄和用戶實時位置記錄.系統(tǒng)主界面如圖7所示.
用戶使用定制的模板動態(tài)生成數(shù)據(jù)記錄表,根據(jù)用戶的操作實現(xiàn)數(shù)據(jù)的采集錄入、保存到本地或者服務器上,在數(shù)據(jù)記錄上傳之前用戶也可以對數(shù)據(jù)進行查看、修改.模版是根據(jù)用戶的實際工作需求進行定制.在本系統(tǒng)中提供了Web方式的模版定制功能,用戶可以在Web頁面中創(chuàng)建全新的模版,或者通過對已有的模版進行修改以生成新的模版.用戶登錄進入移動端采集系統(tǒng)之后,會根據(jù)用戶的角色從Web端同步數(shù)據(jù)采集模版,用戶根據(jù)實際工作需要選擇模版進行數(shù)據(jù)記錄.為了提高數(shù)據(jù)記錄的效率和準確性,多數(shù)的數(shù)據(jù)字段都是采用自動填寫或者下拉列表點選的方式實現(xiàn)的.例如時間、經(jīng)緯度、人員姓名等都采用自動填寫的方式,動植物物種名稱、地點名稱等都采用下拉列表點選的方式.

圖7 移動端系統(tǒng)主界面
巡護人員在開始進行巡護時,需要選擇按照特定的時間間隔或特定的移動距離記錄活動軌跡,系統(tǒng)會自動記錄用戶的坐標信息.在巡護人員巡護過程中,填寫巡護數(shù)據(jù)表,采集動植物數(shù)據(jù),在軌跡中添加關鍵點標注,并可以添加文字、照片、音視頻等數(shù)據(jù).在用戶巡護結束后,APP就會生成KMZ軌跡文件,在有網(wǎng)的情況下可以選擇通過網(wǎng)絡將活動軌跡回傳給服務器.用戶可以導入生成的KMZ巡護軌跡文件到地圖中進行展示.
為了便于管理人員及時掌握野外工作人員的活動位置,同時為了保障野外工作人員的人身安全,系統(tǒng)實現(xiàn)了用戶實時位置記錄功能.實時位置功能需要APP以固定間隔時間通過GPS定位獲取用戶的經(jīng)緯度坐標,并實時同步到服務器端的數(shù)據(jù)庫中.該功能必須要在有網(wǎng)絡連接的環(huán)境在才能使用.
Web端核心功能主要有軌跡搜索、軌跡展示、軌跡統(tǒng)計和用戶實時位置展示,系統(tǒng)主界面如圖8所示.Web端管理系統(tǒng)主要使用JDK7、Tomcat7、Java Web、騰訊Javascript地圖API、JQuery、Bootstrap、Plupload、上傳插件、ECharts圖表庫完成開發(fā).Web端和服務器端主要使用Ajax交互和JSON傳輸數(shù)據(jù).

圖8 Web端系統(tǒng)主界面
用戶可以通過多種方式進行軌跡記錄的搜索,例如按照巡護軌跡名稱、軌跡記錄人、軌跡記錄的時間范圍、軌跡所在的經(jīng)緯度范圍(可在地圖上選擇區(qū)域)等.搜索后的結果按表格進行分頁顯示,用戶可查看具體軌跡的詳細信息、下載軌跡以及選擇軌跡在地圖上進行展示.
根據(jù)軌跡搜索的結果,用戶可以選擇一條或多條軌跡進行展示.通過在軌跡數(shù)據(jù)庫中根據(jù)軌跡ID來檢索軌跡文件的物理位置,并對軌跡文件進行解析以獲得軌跡的路徑信息和關鍵點信息,返回給瀏覽器,再使用地圖服務API進行展示.對于軌跡中的關鍵點,可以展示其中包含的多媒體數(shù)據(jù),包括照片、視頻、音頻.為了提高多媒體數(shù)據(jù)的加載效率,提升用戶體驗,系統(tǒng)會在服務器端對多媒體數(shù)據(jù)進行壓縮處理.用戶可以對軌跡路徑進行瀏覽,可以對軌跡中關鍵點的詳細信息進行查看,包括關鍵點中記錄的照片的瀏覽、音視頻數(shù)據(jù)的播放等.
為了便于管理人員掌握野外工作人員的工作情況,系統(tǒng)提供了軌跡統(tǒng)計功能.提供了多種統(tǒng)計方式,包括按時間段查詢并統(tǒng)計巡護人員的歷史軌跡總長度、歷史軌跡長度和出勤次數(shù),以及排名等.軌跡統(tǒng)計的結果采用圖表方式進行直觀有效的顯示,包括折線圖、柱狀圖、表格.
巡護人員在使用移動端系統(tǒng)進行工作時,移動端系統(tǒng)會調(diào)用服務端的接口實時同步巡護人員的地理位置.當管理人員登錄到Web端系統(tǒng)并進入巡護人員實時位置頁面,服務器端會通過WebSocket方式將巡護人員的實時位置推送到Web端或者Web端通斷Ajax長輪詢的方式獲取巡護人員最新位置,管理人員就可以看到所有正在巡護的人員位置.管理人員可以對巡護人員進行檢索,并且查看該人員當天的巡護數(shù)據(jù).
系統(tǒng)目前已在三江源國家公園、青海湖國家級自然保護區(qū)、內(nèi)蒙古呼倫湖國家級自然保護區(qū)、云南無量山哀牢山國家級自然保護區(qū)等實際使用,用戶反響良好,有效提高了野外調(diào)查巡護的工作效率.下一步還將在針對保護區(qū)等特定區(qū)域的離線高精度衛(wèi)星遙感影像定制、提升離線地圖加載效率、移動端與Web端數(shù)據(jù)傳輸?shù)目煽啃约鞍踩苑矫骈_展進一步的研究工作,以提升整個系統(tǒng)的性能和安全水平.