王 靜 劉 飛
(1.西安交通工程學院,陜西 西安 710300;2.西安現代控制技術研究所,陜西 西安 710065)
隨著移動通信技術的發展與智能終端的普及化,智慧旅游服務的研究更多的趨向于智能化、個性化多元化,再加上大數據云存儲等技術的出現,為智慧旅游自助導游系統奠定了重要的技術基礎。
另一方面,由于操作簡單,各種智能移動終端應用(App),讓人們真正走向了移動信息時代,市面上的各種出行App、旅游類App 也應運而生。當下,較為主流的主要有兩類,一類是電子地圖,如天地圖、高德地圖和百度地圖等軟件,主要提供出行路線規劃、周邊搜索等服務;另一類是以馬蜂窩、攜程等為代表,可提供旅游規劃、攻略分享以及酒店預訂、機票購買等服務。用戶使用以上兩類App 時,需要主動查詢景點相關信息。當距離景點一定范圍時,App 能主動為用戶推送景點相關信息,用戶體驗將得到有效提升。
為此,本文以Android 平臺為基礎,結合移動GIS,通過對地理圍欄技術的研究,設計并實現景點信息推送功能。
LBS 即基于位置的服務,它是通過電信運營商的無線通信網絡或外部定位方式(如GPS)獲取移動終端用戶位置信息,在GIS 平臺的支持下,為用戶提供相應服務的一種增值業務。地理圍欄技術是LBS 的一項新應用,即用虛擬柵欄圍出一個地理邊界,當手機進入、離開該區域,或在該區域內活動時,手機可以接收自動通知和警告。
地理圍欄技術的核心是,判斷用戶是否落在圍欄內部。常用的地理圍欄算法有圓形、矩形以及復雜多邊形等幾類。
本文采用圓形地理圍欄算法,數學模型可表示為:

式中,(x,y)為地理圍欄的中心;(x,y)為地理圍欄的邊界坐標;r 為地理圍欄的半徑。
圓形地理圍欄示意圖如圖1 所示,通過用戶手機網絡或GPS 模塊定位用戶位置(x,y),用戶距離圍欄中心距離為:

圖1 圓形地理圍欄示意

當d≤r 時,用戶進入地理圍欄內,觸發地理圍欄推送或告警。
本文研究的基于地理圍欄的景點信息推送功能,建立在具有地圖定位功能的手機App 上,系統采用C/S(Client/Server)結構,整個架構從底層至上層共分為四個,依次是數據層、邏輯服務管理層、邏輯業務處理層和表示層(調用層)。
數據層由地理數據庫和普通關系數據庫構成。地理數據庫包括城市各級道路的線狀要素和城市旅游景點的點狀要素以及它們組成的網絡數據集和針對點狀要素的地址定位器;關系數據庫包括景點信息、通知信息等內容。數據庫是整個系統的基礎,用戶能否得到正確的景點信息,依賴于數據庫的完整。
邏輯服務管理層主要由ArcGIS Server 和Web 服務器提供。ArcGIS Server 用來處理和發布地理數據庫,Web 服務器則用來處理和存儲關系數據庫內容。
邏輯業務處理層是系統架構中的核心部分。邏輯業務層處理層主要實現地圖加載定位和共享推送服務等功能,在數據交換中起承上啟下作用。該層與邏輯服務管理層接口使用主流Web 接口之一的REST接口。REST 發送數據時,無須進行數據封裝,直接向服務器發送,經HTTP 協議將發送的參數置于URL 中進行發送,有利于開發人員理解和應用相關的Web 資源以及整體性能的提升。
表示層主要將推送信息在客戶端顯示,實現用戶對于功能的操作。
地理圍欄的實現,需要的數據包括:景點經緯度信息、圍欄半徑、推送數據信息等。地理圍欄數據存儲于關系數據庫中,使用的是移動端嵌入式數據庫引擎SQLite。存儲數據時,每個景點設置唯一Id 作為主鍵,同時,選取合適的數據類型存儲經緯度、圍欄半徑以及推送信息等內容。
系統的主要功能模塊包括地圖加載模塊、定位功能模塊、地理圍欄判斷模塊、信息推送模塊。
地圖加載模塊通過ArcGIS Online 在線地圖加載實現。通過ArcGIS Online Services 連接到特定層,將在線切片地圖,加載至ArcGIS Tiled Map Service Layer圖層,再通過MapView 地圖控件顯示,實現地圖加載。MapView 提供了多種地圖縮放的方式,通過調用zoomin()和zoomout()逐級放大、縮小地圖。
定位功能模塊需通過get System Service 方法從activity 中獲得一個Location Manager class 的引用,提供系統的位置服務,使用request Location Updates 方法對位置進行周期更新,包括了經緯度、更新時間等參數。通過調用get Last Known Location 方法獲取用戶的最新更新的位置信息。
地理圍欄判斷模塊需要調用add Proximity Alert方法設定一個proximity alert,方法有5 個參數,依次是經度、緯度、區域半徑、是否過期以及一個廣播Pending Intent。此函數用于指定景點坐標(緯度、經度)和圍欄半徑,根據獲取到的用戶位置,計算與景點坐標距離,若距離小于等于圍欄半徑,則認為用戶已進入圍欄。
信息推送模塊通過使用get Brodcast 靜態方法來創建一個Pending Intent,同時,創建一個意圖過濾器intentFilter,并使用注冊廣播接收器register Receiver的方法來綁定一個自定義的接收廣播Broadcast Receiver 和intentfiler,當設備進入一個監測到的告警alert 區域時發出意圖intent。
設計流程圖如圖2 所示。用戶在打開手機App后,進行地圖加載,獲取關系數據庫景點信息后,生成圍欄信息。同時,周期采集用戶位置,當用戶進入圍欄,則調用廣播函數,發出通知,在手機通知欄顯示景點介紹信息。

圖2 功能設計流程
2.4.1 景區概況
本文選取大雁塔景區作為研究對象。大雁塔位于十三朝古都西安,由高僧玄奘為保存由天竺帶回長安的經卷佛像而主持修建,是現存最早、規模最大的唐代四方樓閣式磚塔,造型簡潔、氣勢雄偉,是我國佛教建筑藝術的標志性建筑和杰出代表。
2.4.2 實現效果
地圖加載示意圖如圖3 所示,使用的背景圖層為ArcGIS 在線服務上獲取的西安市旅游景點分布圖。可實現西安市旅游景點地圖的加載、定位、地圖界面的縮放等功能。

圖3 地圖加載示意
本系統設置的景區地理圍欄半徑為1 km,選取距離大雁塔坐標為圍欄中心。為驗證地理圍欄設置的準確性以及推送功能是否正確,在大雁塔周圍選取四個位置作為測試點,如圖4 所示。當用戶位于圍欄外途徑圍欄邊界所選點位時,用戶手機通知欄均出現系統發送的提示信息,提示用戶進入大雁塔景區,并附有景區的相關介紹,如圖5 所示。

圖4 地理圍欄示意

圖5 進入地理圍欄的提示信息
本文通過移動GIS 和Android 平臺,設計實現的基于地理圍欄的景點信息推送系統,可實現用戶在進入景區范圍時主動提醒服務,提升了用戶自助旅游時的便捷體驗。由于使用手機應用軟件方式進行提醒服務的便捷程度仍有不足,下一步可開發更加簡便的互聯網服務方式(如微信小程序),提供實時、便捷的服務。另一方面,對于推送提醒的內容,可增加視頻、VR全景等形式,豐富用戶體驗。