朱 明,班 媛
(1. 廣西基礎地理信息中心,廣西 南寧 530023; 2.廣西遙感信息測繪院,廣西 南寧 530023)
傳統的旅游信息系統通常以圖文形式提供旅游信息,雖然可以展示旅游景區景點的風貌,但是無法反映旅游景區景點的地理位置關系,不能有效地解決游客尋找景點、搜索路徑、查詢周邊服務設施等問題[1,2]。而將旅游信息系統與GIS相結合,除滿足傳統旅游信息需要外,還可以提供路徑搜索、自駕導航、周邊查詢等功能,提高了旅游信息系統的應用效能。
Flex是用于構建表現力強大的Web應用程序的高效率開放源碼框架。基于Flex框架開發的程序具有良好的交互性,可以使用矢量圖形以及表現能力豐富的用戶界面。使用Flex框架開發過程簡單,具有良好的可擴展性,能夠方便可靠地實現客戶端與服務器端的異步通信。程序運行環境僅依賴于Adobe Flash Player,可實現跨平臺與瀏覽器運行[3]。
由于GIS與圖形圖像技術聯系緊密,因此具有良好的矢量可視化表現能力的Flex框架可以與GIS相結合。ArcGIS API for Flex就是ESRI公司利用Flex框架推出的WebGIS開發包,用于實現具有良好用戶體驗的WebGIS。使用ArcGIS API for Flex開發僅需引用一個庫,不需要安裝額外的軟件,以接口的方式提供功能與數據,使開發人員擺脫了數據管理、地圖應用、組件通信等編程工作,專注于核心業務功能的開發與實現[4-6]。
ArcGIS API for Flex提供了一個Flex Viewer客戶端框架,Flex Viewer可以便捷地應用地理信息服務,靈活地引入各種地理信息數據。在這個框架中已經包含了基本的WebGIS功能,通過簡單設置就能搭建具有基本功能的WebGIS網站。
Flex Viewer使用Widget封裝功能,每個Widget就是一個功能模塊,Widget之間通過事件進行通信。通過這種模式,Flex Viewer框架中的各個組件可以很好地進行交互,同時又保持了良好的封裝[7]。
北海市旅游局原有內容豐富的旅游信息數據,包含了文本、圖片、視頻等旅游業務信息以及在旅游資源普查中采集的旅游地理信息數據,基礎地理信息數據則包含了矢量、影像、地名地址、三維等多尺度、多類型數據。這3類數據在存儲上相互獨立,但在查詢、分析、展示時存在邏輯上的關聯。要實現旅游專題數據的綜合應用,就必須在構建旅游信息系統過程中,完成各類數據的關聯與整合。
經過對已有數據的分析,旅游專題數據大多與景區及相關服務設施存在各種關聯,而這些景區與相關服務設施同時也是地名地址數據的一部分,因此在設計時將景區及相關服務設施這類實體作為核心對象,對每個實體制定唯一編碼,并以此編碼為紐帶,將各類信息關聯在一起。
在數字城市的實際應用中,地理信息公共平臺通過符合OGC標準的服務提供基礎地理信息數據。旅游地理信息數據通過ArcGIS Server發布,旅游業務數據通過Web服務發布供旅游信息系統使用。ArcGIS API for Flex支持通過上述幾種方式獲取所需數據,結合旅游實體唯一編碼,能夠從不同的數據源獲取同一旅游實體的各種相關數據,從而實現數據的邏輯上的統一應用。系統數據整合與關聯如圖1所示。

圖1 系統數據整合示意圖
旅游信息系統采用3層結構:數據層、業務邏輯層、表示層,如圖2。通過各種Web服務,獲取空間分析、操作功能,整合利用基礎地理信息數據與旅游專題數據,實現了數據在物理上分布式部署、在應用時統一使用,為用戶提供直觀、便捷的旅游信息服務。

圖2 系統體系結構示意圖
“數字北海”旅游應用示范系統的數據主要分為2類:基礎地理信息數據與旅游專題數據。基礎地理信息數據存儲在文件與數據庫中,涵蓋了地貌、植被、交通、水系等矢量數據與多尺度影像數據,通過數字北海地理信息公共平臺發布的標準服務可獲取所有基礎地理信息數據。旅游專題數據主要包括旅游地理信息數據及景點、景區、服務設施、旅游產品等旅游業務數據。旅游地理信息數據包括位置信息、旅游區塊、游覽線路等矢量數據,主要存儲在Shapefile文件中;旅游業務數據保存在旅游業務信息數據庫中。針對數據整合關聯的要求,在原有矢量數據中增加了實體編碼字段、地名地址數據編碼字段,在旅游業務信息數據庫中通過增加視圖、建立新表與聯系,用于實現業務數據與矢量數據的關聯。

表1 系統數據來源與存儲方式
業務邏輯層包含ArcGIS Server提供的各種功能,向旅游應用示范系統提供旅游信息數據的各種Web服務。通過Web服務,將旅游信息數據封裝為SOAP,同時制定好各種方法供使用者調用。本層的服務由旅游產品數據服務、旅游景點查詢服務、服務設施查詢、公交換乘服務、行程規劃服務等構成。主要功能如下:
1)旅游產品數據服務,用于獲取旅游產品數據,通過此服務獲取旅游產品的詳細信息。
2)景點查詢服務,用于查詢景點,通過關鍵字在數據庫中檢索相關的景點信息并返回給客戶端。
3)服務設施查詢服務,用于查詢景點內及周邊的各種服務設施,通過關鍵字以及位置關系等條件在數據庫中檢索相關服務設施信息。
4)公交換乘服務,包含一組應用接口,用于查詢兩點間的公交線路,并提供可能的換乘方案。
5)行程規劃服務,用于提供旅游線路信息,包括旅游部門推薦的線路以及用戶自選線路。
表示層由旅游信息系統以及旅游信息管理系統構成,主要用于展示與管理旅游信息數據,實現地圖瀏覽、景點查詢與預覽、行程規劃、公交換乘、自駕線路查詢等系統的主要功能。在表示層中,利用ArcGIS API for Flex調用各種服務,從不同的數據源獲取相關數據。在這些數據中,基礎地圖與影像來自基礎地理信息數據庫,均已按照《地理信息公共服務平臺電子地圖數據規范》配置符號與注記,并進行切片處理,由系統調入直接使用;景點、自駕線路、公交換乘線路等矢量信息由ArcGIS API for Flex實時繪制,并根據實際需要動態控制繪制效果,與地圖、影像、文字、圖片、視頻、三維景觀等數據相結合,增強旅游信息的表現形式。
旅游應用示范系統采用Adobe Flash Builder 4.0與Visual Studio.Net開發,使用C#語言編寫Web服務、服務器端應用程序,旅游信息數據庫采用Access。
在.Net環境開發的Web服務包含于.asmx文件內, Web Service發布后可通過URL訪問,通過WSDL獲得關于Web服務的詳細描述。客戶端程序調用服務器端分發的WSDL生成代理類,代理類中包含了Web Service中定義的方法,客戶端程序通過代理類可以如本地一樣調用Web服務方法[8]。以下為Flex調用Web服務的示例代碼。
首先定義一個Web服務:

服務的定義中包含了調用地址、調用服務成功后的處理函數SearchInfo_result(event)以及調用參數InfoKeyWord,定義完成后就可以如本地方法一樣調用SearchInfo服務接口獲取數據:
ws1.SearchInfo(InfoKeyWord); //請求服務
代碼中的SearchInfo是Web服務提供的方法,Flex只要提供SearchInfo方法的參數InfoKeyWord,就能直接獲得數據,獲得的數據由SearchInfo_result(event)函數處理。
通過Web服務,ArcGIS API for Flex可以獲得旅游局發布的旅游信息數據、“數字北海”發布的基礎地理信息數據。
Web服務具有良好的擴展性與適應性,當數據庫結構發生變化時,通過改寫服務就能適應新的數據結構變化。只要服務提供的數據結構不變,就無需改動客戶端代碼。使用者通過調用新服務就可使用新的數據,通過不斷地發布與完善服務,旅游應用示范系統可以不斷地擴展功能、提高功效。
“數字北海”地理信息公共服務平臺提供基礎地圖的方式為切片地圖Web服務(wmts)。ArcGIS API for Flex并不支持切片地圖Web服務,為此必須對原有切片服務API進行擴展,通過繼承API中的TiledMapServiceLayer,按切片地圖Web服務的要求改寫后,新的擴展API才可支持切片地圖Web服務。
ArcGIS API for Flex提供任務Task用于完成特定的任務,通過Task可以實現查詢、搜索、屬性查詢等各種GIS功能。調用這些Task時,向服務器發出請求參數,服務器獲得請求后根據參數進行處理,并將處理結果返回請求方。以下以RouteTask為例說明如何使用Task實現WebGIS功能。
RouteTask在本系統中的作用為構建連接幾個點之間的最短路徑,使用

定義完成后在程序中使用routeTask.solve(routeParams)開始查詢,當處理完成后調用solve CompleteHandler(event)處理結果。系統實際效果如圖3所示。

圖3 旅游應用示范實現效果
實例說明,通過調用服務器端發布的旅游業務數據服務,使用ArcGIS API for Flex開發的客戶端能在基礎地理信息數據之上,通過調用Task實現各種空間操作功能。
[1]尚文捷.基于ArcGIS Server的旅游地理信息系統研究[D].西安:西安科技大學, 2011
[2]劉立鋮.基于混合結構的泰山地質公園旅游GIS設計與實現[D]. 北京:中國地質大學, 2007
[3]Adobe.Flex概 述[DB/OL]. http://www.adobe.com/cn/products,2011-12-01
[4]鐘廣銳. 基于ArcGIS Flex API的WebGIS設計[J].測繪科學,2012,37(3): 147-149
[5]袁懷月,侯澄宇,楊恒. 基于ArcGIS Flex API的工廠基礎地理信息共享服務系統設計[J].測繪工程, 2011,20(2): 61-65
[6]周炳喜.基于LCDS和Flex Viewer的電網臺風WebGIS研究[D].上海:華東師范大學, 2010
[7]Esri. ArcGIS API for Flex 2.3 Help [EB/OL]. http://resources.arcgis.com/en/help,2011-12-01
[8]朱明,楊海燕,李景文,等. 基于Web Service的測繪檔案服務平臺設計與實現[J].桂林理工大學學報, 2010,30(4): 590-594