石紅姣
(商洛學(xué)院圖書(shū)館,陜西商洛 726000)
旅游業(yè)已成為國(guó)家經(jīng)濟(jì)支柱產(chǎn)業(yè)之一,隨著人們生活方式逐漸走向信息化,傳統(tǒng)旅游服務(wù)方式已無(wú)法滿足信息化環(huán)境下的旅游需求。以現(xiàn)代信息技術(shù)為推動(dòng)力的智慧旅游,是信息化和旅游業(yè)深度融合的產(chǎn)業(yè)形態(tài),也是旅游產(chǎn)業(yè)理論研究與實(shí)踐應(yīng)用的前沿[1-3]。智慧旅游系統(tǒng)是互聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算、移動(dòng)通信等新興技術(shù)在旅游產(chǎn)業(yè)上的具體應(yīng)用,整合了旅游業(yè)的軟硬件,既方便了旅客的出游,也為相關(guān)商戶節(jié)約了成本,增加了收益[4-5]。圍繞智慧旅游,岳婧雅[6]、張凌云[7]等就智慧旅游的基本概念和理論體系進(jìn)行了探討。王艷軍等[8]研究了面向服務(wù)架構(gòu)(SOA)的智慧旅游系統(tǒng)建設(shè)方法,并通過(guò)實(shí)例證明了該方法是智慧旅游建設(shè)過(guò)程中的有益解決方案。張美微[9]提出了基于“云計(jì)算”的智能旅游系統(tǒng)設(shè)計(jì)方案,按照云端—渠道—終端的服務(wù)模型智能旅游系統(tǒng),提高了系統(tǒng)的運(yùn)行效率。但現(xiàn)有智慧旅游系統(tǒng)在地圖導(dǎo)航和產(chǎn)品推薦方面還存在較大問(wèn)題?;诖耍疚慕Y(jié)合已有研究,針對(duì)系統(tǒng)中的地圖導(dǎo)航和產(chǎn)品推薦問(wèn)題,給出了使用最短路徑規(guī)劃算法和協(xié)同過(guò)濾算法的解決方案,并且設(shè)計(jì)出了一套基于MVC架構(gòu)[10]的三層軟件系統(tǒng),可以通過(guò)終端或者WEB獲得良好的用戶體驗(yàn)。
本文所設(shè)計(jì)的系統(tǒng)采用了三層架構(gòu)模式,包括:數(shù)據(jù)庫(kù)層、服務(wù)層和應(yīng)用層。其中數(shù)據(jù)庫(kù)層主要是對(duì)原始數(shù)據(jù)的存儲(chǔ),如景點(diǎn)信息、用戶信息,地圖信息等;應(yīng)用層主要為終端和web提供了訪問(wèn)的接口,解決用戶訪問(wèn)等問(wèn)題;服務(wù)層是本系統(tǒng)的核心,其將根據(jù)應(yīng)用層傳來(lái)的用戶數(shù)據(jù)訪問(wèn)數(shù)據(jù)庫(kù),并處理響應(yīng)相應(yīng)消息,將結(jié)果反饋給應(yīng)用層,從而為用戶提供想要的結(jié)果?;谌龑蛹軜?gòu)的智慧旅游系統(tǒng)框架,見(jiàn)圖1。
圖1 基于三層架構(gòu)的智慧旅游系統(tǒng)框架圖
鑒于當(dāng)前智慧旅游系統(tǒng)在地圖導(dǎo)航、產(chǎn)品推薦方面存在的問(wèn)題,根據(jù)不同的需求與功能,本文將系統(tǒng)分三個(gè)層次,其中服務(wù)層包括用戶管理、地圖信息、景區(qū)信息及基礎(chǔ)服務(wù)查詢四個(gè)功能,數(shù)據(jù)庫(kù)層分別存儲(chǔ)著服務(wù)層對(duì)應(yīng)模塊的信息數(shù)據(jù)。
1)用戶管理功能:主要負(fù)責(zé)用戶的登錄和注冊(cè)功能實(shí)現(xiàn),對(duì)應(yīng)的數(shù)據(jù)庫(kù)中存儲(chǔ)了用戶的信息,當(dāng)應(yīng)用層傳來(lái)用戶登錄信息時(shí),用戶管理功能負(fù)責(zé)讀取數(shù)據(jù)庫(kù)數(shù)據(jù),以驗(yàn)證用戶身份并授予用戶相關(guān)權(quán)限;當(dāng)應(yīng)用層傳來(lái)用戶注冊(cè)信息時(shí),該模塊負(fù)責(zé)將用戶相應(yīng)信息記錄到數(shù)據(jù)庫(kù)中。
2)地圖查詢功能:主要負(fù)責(zé)用戶導(dǎo)航、路徑規(guī)劃功能實(shí)現(xiàn),對(duì)應(yīng)的數(shù)據(jù)庫(kù)中存儲(chǔ)了景區(qū)內(nèi)各個(gè)景點(diǎn)的位置、距離等信息,當(dāng)用戶需要查詢相關(guān)路徑時(shí),地圖模塊讀取相關(guān)地點(diǎn)的信息然后調(diào)用Dijkstra算法[11]為用戶規(guī)劃一條最短路徑并導(dǎo)航。
3)景區(qū)信息查詢功能:主要負(fù)責(zé)景點(diǎn)相關(guān)信息查詢功能實(shí)現(xiàn),對(duì)應(yīng)的數(shù)據(jù)庫(kù)中主要存儲(chǔ)了每個(gè)景點(diǎn)的基本信息、娛樂(lè)信息和美食信息三個(gè)方面,將每個(gè)方面的信息細(xì)化為具體的產(chǎn)品并存儲(chǔ)起來(lái),景區(qū)信息查詢功能可以讀取相關(guān)數(shù)據(jù)并利用協(xié)同過(guò)濾算法為用戶進(jìn)行推薦。
4)基礎(chǔ)服務(wù)查詢功能:主要負(fù)責(zé)用戶相關(guān)查詢功能的實(shí)現(xiàn),對(duì)應(yīng)的數(shù)據(jù)庫(kù)中主要存儲(chǔ)了相關(guān)酒店、交通、價(jià)格等信息。相關(guān)產(chǎn)品也可通過(guò)協(xié)同過(guò)濾算法[12]為用戶進(jìn)行推薦。
用戶管理模塊:主要實(shí)現(xiàn)用戶的注冊(cè)和登錄功能。在注冊(cè)功能模塊中,用戶發(fā)起注冊(cè)請(qǐng)求后用戶模塊要求用戶填寫(xiě)相關(guān)信息,當(dāng)用戶提交相關(guān)信息后,用戶進(jìn)行信息檢查,對(duì)于檢查合格的用戶模塊將調(diào)用數(shù)據(jù)庫(kù)層進(jìn)行記錄,否則退回要求用戶重新填寫(xiě);在登錄過(guò)程中,查詢數(shù)據(jù)庫(kù)相關(guān)信息進(jìn)行比對(duì),對(duì)于符合身份的用戶模塊準(zhǔn)予其登錄系統(tǒng)并授予相關(guān)角色權(quán)限,否則予以拒絕,如圖2所示。
地圖查詢模塊:主要實(shí)現(xiàn)用戶對(duì)相關(guān)路線的查詢功能。在用戶發(fā)起相關(guān)地點(diǎn)查詢后,該模塊首先在數(shù)據(jù)庫(kù)中查詢是否存在相關(guān)的地點(diǎn)信息,如果查詢?yōu)闊o(wú)則直接返回,并告知用戶。如查詢結(jié)果有相關(guān)信息,則根據(jù)用戶當(dāng)前所在位置,查詢數(shù)據(jù)庫(kù)中已有路線,如果有已有路線則直接提供給用戶;否則利用Dijkstra算法重新規(guī)劃出一條最短路徑,同時(shí)將該路線存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù)中作為已有路線供下次查詢使用。
當(dāng)?shù)貓D剛開(kāi)始使用的時(shí)候已有路線為無(wú),隨著使用次數(shù)增多可以直接使用的現(xiàn)有路線就會(huì)越來(lái)越多,從而免去路徑規(guī)劃的計(jì)算。通過(guò)這種方式,可以大大降低計(jì)算消耗,提高系統(tǒng)性能?;谔峁┞烦套疃搪肪€的理念,地圖數(shù)據(jù)庫(kù)中預(yù)存了各個(gè)景點(diǎn)的地理位置坐標(biāo)以及連接它們道路的長(zhǎng)度。當(dāng)需要進(jìn)行路徑規(guī)劃時(shí),地圖模塊會(huì)從數(shù)據(jù)庫(kù)中首先提取起點(diǎn)、終點(diǎn)以及它們周圍附近道路和景點(diǎn)的信息(本文中根據(jù)實(shí)驗(yàn)效果,提取了以連接起終點(diǎn)直線的中點(diǎn)為圓心,起終點(diǎn)兩倍直線距離為半徑范圍內(nèi)的景點(diǎn)和道路信息),然后地圖模塊根據(jù)這些信息構(gòu)建有向圖,并根據(jù)Dijkstra算法規(guī)劃出一條起點(diǎn)到終點(diǎn)的最短路線距離。地圖模塊導(dǎo)航的具體流程如圖3所示。
圖2 用戶管理模塊流程圖
景區(qū)信息模塊:主要實(shí)現(xiàn)用戶對(duì)景區(qū)相關(guān)信息的查詢功能。在用戶發(fā)起相關(guān)景點(diǎn)查詢后,該模塊首先在數(shù)據(jù)庫(kù)中查詢是否存在相關(guān)景點(diǎn)的信息,如果查詢?yōu)闊o(wú)則直接返回并告知用戶;否則提取出相關(guān)景點(diǎn)的位置、介紹、特色、美食等信息返回給用戶,同時(shí)利用協(xié)同過(guò)濾算法根據(jù)用戶的搜索信息為用戶推薦相似產(chǎn)品。當(dāng)用戶利用景區(qū)信息管理模塊搜索相關(guān)景點(diǎn)后,景區(qū)信息管理模塊除了會(huì)讀取數(shù)據(jù)庫(kù)給出景區(qū)信息外,為用戶進(jìn)行景點(diǎn)推薦。本文使用了基于用戶的協(xié)同過(guò)濾算法來(lái)進(jìn)行推薦。景區(qū)信息模塊的流程圖如圖4所示。
圖4 景區(qū)信息管理模塊流程圖
基礎(chǔ)服務(wù)模塊:主要包括了酒店查詢和交通查詢兩個(gè)功能部分。當(dāng)用戶提交相關(guān)查詢要求后,首先查詢數(shù)據(jù)庫(kù)中是否存儲(chǔ)了相關(guān)信息,當(dāng)確認(rèn)存在相關(guān)信息后提取酒店或者交通信息反饋給用戶,同時(shí)利用推薦算法為用戶推薦其他選擇。該模塊可以接入公開(kāi)的交通查詢系統(tǒng)接口中,方便獲取到最新的交通信息。具體流程如圖5所示。
圖5 查詢模塊流程圖
本文所設(shè)計(jì)的系統(tǒng)運(yùn)行在服務(wù)器上,在應(yīng)用層為終端和WEB都提供了接口,所以對(duì)C/S和B/S[13]架構(gòu)都適用。系統(tǒng)主要以Microsoft Visual studio 2013作為開(kāi)發(fā)工具,采用MVC框架,WEB服務(wù)器采用 Microsoft Windows Server 2008,IIS,數(shù)據(jù)庫(kù)使用 Microsoft SQL Server。系統(tǒng)開(kāi)發(fā)不包括終端和WEB程序,只提供應(yīng)用層接口。相應(yīng)終端程序可以是基于Android或者IOS的APP,也可以通過(guò)瀏覽器直接瀏覽訪問(wèn)。
當(dāng)?shù)貓D模塊要進(jìn)行路徑規(guī)劃時(shí),會(huì)讀取數(shù)據(jù)庫(kù)中的相關(guān)信息,并構(gòu)建出有向圖。圖6為地理信息抽象后構(gòu)建好的有向圖,其中A到F為相關(guān)景點(diǎn),邊上的權(quán)值為景點(diǎn)間的距離。假設(shè)用戶查找A到F的路徑,地圖模塊構(gòu)建有向圖進(jìn)行規(guī)劃,表1中給出了規(guī)劃的過(guò)程和結(jié)果。從表1中可以得到A到F的最短路徑是A到C到D到F,路程為9 km,故可以將該路徑提供給用戶。同時(shí),從表1中可以發(fā)現(xiàn),A到B、C、D、E的最短路徑也規(guī)劃出來(lái)了(分別是dAC=3 km;dAC+dCB=5 km;dAC+dCD=6 km;dAC+dCE=7 km),這些數(shù)據(jù)可一并存入數(shù)據(jù)庫(kù)中,當(dāng)下次用戶搜索相關(guān)路線時(shí)可以直接使用,從而降低了計(jì)算量。
圖6 地理信息抽象有向圖
表1 Dijkstra算法路徑搜索過(guò)程
當(dāng)用戶搜索相關(guān)景區(qū)時(shí),系統(tǒng)會(huì)提取相關(guān)用戶的搜索記錄。假設(shè)當(dāng)用戶1搜索景點(diǎn)a后,系統(tǒng)中已記錄的用戶有4人,其搜索記錄如表2所示(a,b,c,d,e代表相應(yīng)用戶搜索過(guò)的景點(diǎn))。由式 (1)可計(jì)算出用戶間的相似度,如表3所示。從表3中可以看出用戶1與用戶4相似度最大,而用戶4搜索過(guò)的景點(diǎn)e用戶1沒(méi)有搜索過(guò),從而可以將e推薦給用戶1。用戶的相似度如式(1)。
表2 用戶搜索記錄
表3 用戶間相似度
本文針對(duì)智慧旅游系統(tǒng)的設(shè)計(jì)開(kāi)發(fā),給出了一種基于應(yīng)用層、服務(wù)層和數(shù)據(jù)庫(kù)層的系統(tǒng)架構(gòu),該系統(tǒng)可以通過(guò)B/S或C/S的方式接入終端或WEB,并且結(jié)合了相關(guān)算法優(yōu)化了具體模塊的功能實(shí)現(xiàn)。通過(guò)對(duì)模塊軟件工程化的處理,使得系統(tǒng)結(jié)構(gòu)松耦合、可擴(kuò)展并且具有良好的用戶體驗(yàn),后期可以根據(jù)需求繼續(xù)擴(kuò)展相關(guān)功能模塊,以完善系統(tǒng)功能。