黃 冠,蔡忠亮,2,吳俊法,張曉倩,陳燕妮
(1.武漢大學資源與環境科學學院,湖北 武漢 430079;2.武漢大學地理信息系統教育部重點實驗室,湖北 武漢 430079;3.貴州省第三測繪院,貴州 貴陽 550004)
伴隨著人民生活水平的提高,全國各地都出現了旅游熱,種類多樣的旅游信息化產品也隨之而來,其中就有部分是為用戶提供旅游信息的旅游系統。張洋等實現了一款具有出游輔助決策和旅游信息論壇功能的新疆經典旅游信息系統[1]。梁智學利用互聯網的開放特點實現了一款“網友共建、信息共享”的旅游信息系統[2]。Liu Yangyang等基于移動GIS的特點,開發了焦作自助旅游系統[3]。Ren Ze基于GIS平臺的空間信息存儲和空間分析能力,利用MapGIS K9實現了武漢市旅游信息系統[4]。劉海鵬等利用SuperMap iMobile GIS組件實現了移動端導游系統[5]。
這些旅游系統為用戶提供了景點位置信息查詢、景點簡介、景點照片瀏覽等功能,但仍有一定的缺陷。具體表現在:①系統數據源單一。旅游系統中使用的地圖數據均為電子地圖數據,地圖展示形式單一,容納信息量有限;②景區內部景點介紹不足。用戶抵達旅游景區后,旅游系統便失去了作用。用戶仍需使用景區的紙質導游圖為自身游覽參考;③景點介紹不夠直觀。旅游系統僅通過文字和照片為用戶介紹景點信息,使得用戶無法對景區形成較為全面直觀的感受。
針對以上問題,有學者做了相應研究,符韶華利用國家天地圖的數據優勢,開發了基于天地圖的實景旅游信息系統[6];景昕蒂應用旅游專題地圖、導游圖,開發了大連市旅游信息系統[7];張鳳梅等借助虛擬現實技術構建三維場景,為用戶帶來最直觀的景區介紹[8-10]。
本文在上述研究的基礎上深入整合,基于國家測繪部門旅游GIS數據精確、詳實,專題地圖數據精美、豐富,全景地圖數據精細、美觀的特點,將GIS、地圖、全景圖三類數據集成,設計并實現了貴州省Web全景旅游電子地圖系統,全面解決了旅游系統地圖數據單一、旅游景區內部介紹不夠、旅游景點介紹直觀度不足的缺陷,為用戶提供了精細、精確、直觀的旅游信息。
旅游電子地圖系統以測繪部門旅游GIS數據、旅游專題圖數據、全景圖數據作為源數據,以“一圖,多專,密全景”為集成框架。“一圖”即整個旅游信息系統基于一張旅游資源電子地圖為底圖展開,其數據為旅游GIS數據;“多專”即上述旅游資源電子地圖依據空間位置將對應多幅景點、景區旅游專題地圖;“密全景”表示在一張旅游專題地圖上,各個具體景點將通過密集的全景圖熱點進行表示,系統總體框架設計如圖1所示。
在“一圖,多專,密全景”集成框架下,隨著用戶圖面比例尺發生變化,地圖主體內容也將發生改變。用戶將在較大尺度范圍內通過傳統旅游電子地圖進行地圖瀏覽、景點查詢等傳統操作,從整體上了解景點空間信息與整體介紹;在中等尺度范圍內通過景區旅游專題地圖進行景區具體景點導覽,進一步獲取景點介紹信息與專題特色信息;在小尺度范圍上通過景點全景圖查看景點具體景觀與景色,直觀地了解與查看景點外觀。

圖1 系統總體設計圖
系統總體技術框架為B/S架構。Browser端使用JavaScript與html呈現用戶界面、地圖界面并實現用戶交互。Server端數據庫服務器采用Java語言開發,空間服務器使用ArcGIS Server服務器。Browser端與Server端利用Ajax技術,通過互聯網進行訪問。
1.2.1 地圖引擎ArcGIS JavaScript API
ArcGIS JavaScript API是基于瀏覽器的API,用于開發便捷、高性能的WebGIS應用程序[11]。將ArcGIS JavaScript API與 ArcMap、ArcGIS Server組合使用能夠快捷地將地圖、熱點發布為網絡地圖服務(WMS)和網絡要素服務(WFS),并嵌入到個人的網頁當中。ArcGIS JavaScript API中ArcGISDynamicMapServiceLayer和FeatureLayer類可動態地調用網絡地圖服務[12]。前者返回一個可用于查看靜態的底圖圖層;后者返回一個動態、可用于交互的熱點圖層。
本系統旅游電子地圖底圖,旅游專題地圖底圖與旅游熱點的加載、顯示、操作、交互等功能將通過ArcGIS JavaScript API實現。
1.2.2 全景圖框架Krpano
Krpano是一種基于html5的三維全景播放器,它以體積小巧、靈活和高性能著稱,并且具有跨平臺特點[13]。基于以上優勢,本系統全景圖加載、顯示等功能將通過Krpano實現。
Krpano使用簡便快捷,其所有功能都由對應的插件實現[14]。這些插件是對三維全景圖及其功能的封裝。功能包括三維場景顯示、場景變換、三維熱點顯示、三維特效、多媒體信息展示等。
Krpano插件通過將數據接口暴露給用戶以實現具體功能。這些數據接口利用XML標簽實現。對插件功能的調用、修改及復雜場景、效果的定義通過創建或修改XML文件標簽實現。其中,一個簡單場景的定義可通過以下標簽嵌套實現:
該系統數據包含貴州省旅游普查GIS數據、貴州省旅游圖集數據、貴州省航拍影像數據,有著多源、多類型、多尺度的特點。
其中旅游普查GIS數據來源于貴州省旅游資源大普查景點數據,共約10 000條記錄。每條記錄包含該景點的空間位置、簡介、等級、類型、多媒體等信息。數據共13大類,69小類與5種等級共115種組合。景點類型包括:地文景觀、水域風光、生物景觀、天象與氣候景觀等。景點等級包括五級、四級、三級、A級、非A級。
旅游專題圖數據來源于貴州省旅游圖集。共包含貴陽市、貴安新區、安順市等10個地州市及其下轄縣的多種類型專題旅游圖、特色旅游資源圖、旅游景區專題圖。
航拍影像數據為720°全景圖數據。全景圖像按照級別(l1-l4),方位(f:前方、l:左方、r:右方、b:后方、u:天頂方向、d:地面方向)進行切圖。切圖數據以jpg格式存放在與其等級、方位相對應的文件夾中。其中單幅全景圖大小在10~20 MB,總全景圖大小在50~100 GB。
由于系統數據數量龐大、數據類型多樣,在數據庫設計時考慮將空間數據庫、關系型數據庫、文件型數據庫三種形式相結合。其中旅游GIS數據中的景點屬性數據由關系型數據庫存儲;旅游GIS數據中的景點空間數據和旅游專題圖數據由空間數據庫負責存儲;旅游GIS數據中的景點多媒體數據和全景圖數據由文件型數據庫負責存儲。系統所包含數據類型以及與數據庫對應關系如圖2所示。

圖2 數據庫設計圖
為實現系統的設計目標與滿足用戶需求,系統共包含9項功能:①地圖瀏覽模塊:為用戶提供基礎地圖瀏覽、漫游縮放功能;②地圖交互模塊:用戶可在圖面中通過熱點懸浮、點擊等操作獲取該景點的基礎簡介信息;③景點查詢模塊:為用戶提供了基于景點名的模糊搜索功能;④圖層管理模塊:為用戶提供圖層開關,方便用戶從多種景點類型與景點等級中篩選感興趣的景點類別與等級;⑤多媒體瀏覽模塊:在地圖交互模塊獲取景點及文字介紹的基礎上,為用戶帶來景點照片和視頻介紹;⑥地圖工具模塊:包含測距、鷹眼圖、導航等常用地圖功能;⑦景點統計模塊:依據行政區域統計了全省不同類型、不同等級景點數量,為用戶提供出行區域參考;⑧全景圖瀏覽模塊:為用戶提供全景圖瀏覽功能;⑨跳轉聯動模塊:當前全景圖中可包含其他景點熱點。它們依據景點在空間的真實相對位置,存在于當前全景圖中對應方位。點擊這些全景圖熱點,將直接跳轉到對應景點全景圖。
其中①~⑦功能用于旅游電子地圖與旅游專題地圖瀏覽;⑧~⑨功能用于旅游全景圖瀏覽,系統功能設計圖如圖3所示。

圖3 系統功能設計圖
“一圖、多專、密全景”集成框架示意圖如圖4所示。該設計框架借鑒了分級瓦片地圖服務中,隨著比例尺逐漸增大,地圖瓦片內容更加精細,地圖信息更為豐富的特點,根據三類圖顯示風格、所承載旅游信息量、用戶使用習慣對旅游景點進行“分級”顯示操作。該“分級”顯示的關鍵在于實現三類地圖顯示過程的無縫連接。
為此,旅游電子地圖、旅游專題圖和旅游全景圖將首先被分別加載入ID為WebMap、thematicMap的ArcGISDynamicMapServiceLayer以及Krpano全景組件中。

圖4 “一圖,多專,密全景”集成框架示意圖
隨后,建立函數scaleListener監聽地圖比例尺,并設定合理閾值t1記錄旅游電子地圖和旅游專題地圖的切換比例尺和t2記錄旅游專題地圖和旅游全景圖的切換比例尺。
當監聽函數監聽到當前圖面比例尺進入某范圍時,系統通過上述ID將對應的地圖圖層或組件display屬性設定為true或block,將其他兩類地圖圖層或組件display屬性設置為false或none,以實現三類地圖無縫連接顯示。
在線電子地圖中熱點顯示的常用方法包括以下兩類:①將每個地圖熱點作為一條記錄保存至數據庫中,每條記錄包括該點的空間屬性與非空間屬性。在顯示熱點時,從數據庫中依次讀取記錄,并調用地圖API的addPoint方法添加熱點與pointSymbol方法渲染熱點樣式。②事先將地圖熱點發布為WFS服務,并調用地圖API的addServiceLayer方法加載該地圖服務。
方法一可以簡便地變化熱點樣式,但由于需要頻繁訪問數據庫,因此加載耗時長。方法二加載服務耗時短,但在更新熱點樣式時需要重新發布熱點服務。
本系統中所涉及的景點類型、等級組合共115種,景點熱點數量約10 000個,既需要保證較快的地圖熱點顯示速度,又需要考慮地圖熱點更新的便捷性。因此在存儲旅游地圖熱點時,系統將兩類方法合并。發布服務時,依據熱點類型將熱點分為多個圖層[layer1,layer2,……layern],并將所有熱點設置為透明樣式。服務發布完畢后,將服務地址url和圖層應有樣式名序列[symbol1,symbol2,……,symboln]保存至數據庫中。
加載地圖服務時,系統通過url從地圖服務中獲得熱點空間位置信息,通過景點圖層樣式序列在服務器端尋找對應的熱點符號文件[symbol1.png,symbol2.png,……,symboln.png],以實現對服務中各圖層熱點樣式的渲染。
此方案有效地解決了多類型數據在Web端的顯示問題。在顯示符號的更新上,僅需替換服務器端熱點符號文件即可,避免了重復發布服務而增大工作量的弊端。
在全景圖瀏覽時,用戶界面固定在當前景點全景圖。若無跳轉聯動功能,則當用戶需要瀏覽其他景點全景圖時,必須先回到旅游專題地圖,再進入目標全景圖,增加了用戶操作繁瑣度。
針對該問題,本文通過Krpano全景圖熱點實現全景圖內的跳轉聯動。
全景圖熱點XML標簽為hotspot,熱點表示為 ath為平面方位角,數值為0~360°;atv為仰角,數值為-90~90°;兩屬性確定了該熱點在全景圖中的球面坐標方位。由于熱點相對方位不要求完全精確,為簡化計算,計算ath時由平面坐標代替球面坐標,由式1所示(atv統一取15°)。 式中,xi、yi為目標景點平面坐標;x、y為當前景點平面坐標;θ為無人機飛行方向與真北方向夾角。在系統實現過程中,一幅全景圖僅會查找距它一定范圍內的其他全景圖,并將它們以熱點的形式添加到該全景圖中。 onclick屬性指向名為loadscene的函數。loadscene()的函數將根據傳入參數值找尋對應全景圖場景并加載。在此例中,點擊全景圖熱點,將加載name屬性為tourism的新場景: …… 在地圖顯示與地圖交互上,系統以“一圖、多專、密全景”為集成框架,實現了貴州省旅游專題圖、旅游普查GIS數據、景區全景圖的有機結合顯示。隨著用戶圖面比例尺由小逐漸增大,地圖主體內容將依次呈現旅游電子地圖、旅游專題圖、旅游全景圖,顯示效果如圖5a、b、c所示。隨著地圖主體內容的變化,地圖所承載與表達的信息量、地圖顯示方式、地圖交互方式也將呈現出多樣性。 在系統功能上,系統實現了多媒體信息瀏覽、景點查詢、景點統計等功能。景點多媒體信息瀏覽包括景點照片瀏覽與景點視頻瀏覽;景點查詢實現了基于景點名稱的模糊搜索;景點統計功能實現了全省各類型,各等級景點數量與位置統計,以上系統功能實現效果如圖6a、b、c、d所示。 圖5 系統瀏覽效果圖 圖6 系統功能效果圖 系統豐富了旅游系統中旅游信息的表現力與表達形式,較好地輔助了用戶對地圖景點的瀏覽,增強了用戶對景點的直觀了解程度。 利用測繪部門地理信息數據全面精準的資源優勢、專題地圖精美詳實的專業優勢、全景圖精細美觀的技術優勢、以旅游出行為結合點,使用WebGIS技術,以ArcGIS JavaScript API為傳統地圖框架,結合近幾年應用廣泛的全景圖技術,以“一圖、多專、密全景”為集成框架,實現了貴州省Web全景旅游電子地圖系統。系統通過用戶常用的電子地圖、精美的旅游專題地圖、真實直觀的全景圖相結合的方式,使得用戶對旅游景區有了更為直觀、全面的了解,為用戶的旅游出行提供了參考,有良好的現實意義和推廣使用價值。 在今后的研究中,還可在全景圖的使用上向AR/VR的方向深入研究,探究AR/VR技術在旅游信息系統中的應用,進一步增強用戶體驗。
3 系統實現


4 結 語