專利名稱:用戶事件模型驅(qū)動(dòng)的網(wǎng)絡(luò)地圖服務(wù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)絡(luò)地圖服務(wù)方法,屬于空間信息服務(wù)領(lǐng)域。背景知識(shí)傳統(tǒng)的地圖網(wǎng)站大多采用的是矢量地圖,服務(wù)實(shí)時(shí)性較強(qiáng),地圖渲染考慮地圖的 上下文情況,并嚴(yán)格遵守地圖設(shè)計(jì)原則,但是重復(fù)的地圖請(qǐng)求增加了空間服務(wù)器的壓力、占 用了大量的帶寬,造成響應(yīng)時(shí)間過(guò)長(zhǎng)的難題。當(dāng)前的絕大部分地圖網(wǎng)站采用的都是柵格地 圖,一張小小的幾K大小的圖片就可以容納大量的靜態(tài)信息,而且可以快速的下載到客戶 端,這是矢量地圖望塵莫及的。柵格地圖的盛行要?dú)w功于瓦片技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)在一臺(tái)普普通通的電 腦硬盤(pán)都是上百G。所以現(xiàn)在的地圖網(wǎng)站的技術(shù)模式從過(guò)去以“時(shí)間換取空間”轉(zhuǎn)變成以“空 間換取時(shí)間”。網(wǎng)站的訪問(wèn)速度可以說(shuō)是達(dá)到了最大化,能做成靜態(tài)頁(yè)面的絕對(duì)不做成動(dòng)態(tài) 的,就是為了節(jié)省訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)間,所以現(xiàn)在大型的地圖網(wǎng)站后臺(tái)雖然都是數(shù)據(jù)庫(kù)管理, 但是絕大部分的網(wǎng)頁(yè)都是預(yù)先生成的靜態(tài)頁(yè)面。瓦片地圖也吸收了這一技術(shù)精華,把用戶 需要瀏覽的地圖,也預(yù)先生成。目前針對(duì)地圖服務(wù)方式的研究也主要集中瓦片地圖服務(wù)方式上,這些研究主要著 眼于靜態(tài)瓦片的調(diào)度速率,但忽略了幾個(gè)問(wèn)題地圖更新工作量大,實(shí)施成本高;地圖展現(xiàn) 不能完全體現(xiàn)地圖設(shè)計(jì)規(guī)則;對(duì)于變動(dòng)頻率較大的數(shù)據(jù),不能夠體現(xiàn)實(shí)時(shí)性。本方法提出一種基于用戶事件模型的地圖服務(wù)方法,以用戶的地圖訪問(wèn)操作為中 心,以網(wǎng)絡(luò)節(jié)點(diǎn)的訪問(wèn)狀態(tài)為依據(jù),融合傳統(tǒng)地圖服務(wù)和瓦片地圖服務(wù)兩種形式,通過(guò)用戶 事件來(lái)觸發(fā)地圖服務(wù)器端的瓦片緩存配置。針對(duì)數(shù)據(jù)更新頻率高地圖,用戶事件觸發(fā)的緩 存配置重新渲染地圖區(qū)域,新地圖自動(dòng)更新舊版地圖瓦片,同時(shí)可以提供用戶無(wú)極縮放的 地圖體驗(yàn)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于針對(duì)現(xiàn)有技術(shù)的不足,提供一種訪問(wèn)速度快,同 時(shí)地圖數(shù)據(jù)更新快、成本低的網(wǎng)絡(luò)地圖服務(wù)方法。本發(fā)明為解決上述技術(shù)問(wèn)題所采取的技術(shù)方案是用戶事件模型驅(qū)動(dòng)的網(wǎng)絡(luò)地圖服務(wù)方法,包括以下步驟一.用戶事件模型的構(gòu)建將用戶整個(gè)訪問(wèn)地圖服務(wù)的流程看作是一個(gè)事件序列,用戶事件的表達(dá)采用事件 描述語(yǔ) g (EDL, Event Description Language),原子事件表達(dá)為Procedure = Tile WatcherParameters = Level :int,Row :int,Col :int區(qū)域訪問(wèn)的復(fù)雜事件表達(dá)為Procedure = TileExecutorPrameters = BBox :Recttangle, Width :int, Height :int, Format :string,Style :string其中Procedure表示事件的響應(yīng)處理模塊,Tileffatcher負(fù)責(zé)處理原子事件,析 取事件參數(shù)(Parameters),包括一個(gè)整數(shù)型的數(shù)值比例級(jí)別(Level)、整數(shù)型數(shù)值行號(hào) (Row)、整數(shù)型數(shù)值列號(hào)(Col);區(qū)域復(fù)雜事件的處理器為瓦片執(zhí)行器(TileExecutor), 該事件處理器析取地圖服務(wù)的主要參數(shù)包括區(qū)域請(qǐng)求范圍(BBox),客戶端要求圖片的尺 寸寬度(Width)和高度(Height),地圖生成格式的要求(Format)以及地圖樣式的信息 (Style);二.用戶事件的收集和分發(fā)地圖服務(wù)客戶端建立事件收集器和分發(fā)器,對(duì)用戶地圖事件狀態(tài)進(jìn)行采集和過(guò) 濾,事件狀態(tài)主要包括地圖范圍、地圖移動(dòng)方向、地圖比例尺級(jí)別、地圖類型等;本地事件 被分發(fā)到本地緩存管理器(Cache Manager),由緩存管理器調(diào)用緩存地圖響應(yīng)客戶端,反之 用戶事件被提交到地圖服務(wù)器進(jìn)行地圖渲染和切片操作;三.地圖服務(wù)器端緩存服務(wù)器端緩存分為兩種預(yù)置級(jí)別地圖緩存和非預(yù)置級(jí)別地圖緩存,預(yù)置級(jí)別地 圖的地圖數(shù)據(jù)按照金字塔模型切分,瓦片的尺寸標(biāo)準(zhǔn)為256個(gè)像素,非預(yù)置級(jí)別地圖的緩 存考慮用戶的事件狀態(tài);若當(dāng)前請(qǐng)求的地圖級(jí)別未記錄在緩存配置文件中,就會(huì)觸發(fā)服 務(wù)器的動(dòng)態(tài)緩存事件,首先通過(guò)對(duì)用戶事件的還原,提取事件的描述參數(shù)(BBox,Layers, Style,…),調(diào)用WMS響應(yīng)當(dāng)前的地圖請(qǐng)求,渲染區(qū)域地圖響應(yīng)用戶并將事件轉(zhuǎn)發(fā)瓦片切割 器(Tile Executor);瓦片切割器(Tile Executor)對(duì)緩存配置文件Conf. xml進(jìn)行析取, 獲取相應(yīng)的配置參數(shù),包括地圖數(shù)據(jù)的全圖范圍、標(biāo)準(zhǔn)瓦片尺寸以及數(shù)據(jù)坐標(biāo)轉(zhuǎn)換的系列 參數(shù),執(zhí)行地圖切割算法,建立該非預(yù)置級(jí)別地圖存儲(chǔ)目錄,并更新服務(wù)器緩存配置文件, 注冊(cè)新增級(jí)別的地圖配置信息。上述技術(shù)方案中,步驟一中所述的事件為每個(gè)可觀察的獨(dú)立的地圖操作行為,事 件表達(dá)為一個(gè)元組形式 < 事件類型,屬性1,屬性2,…,時(shí)間,位置 >,屬性隨著事件類型的 不同而改變。所述的原子事件為最基本的事件,是可觀察的地圖操作行為的最小單位。原子事 件是相對(duì)的,是針對(duì)用戶的具體操作狀態(tài)進(jìn)行劃分的。例如瓦片地圖的單個(gè)瓦片請(qǐng)求可認(rèn) 為是一個(gè)原子事件。所述的復(fù)雜事件由若干個(gè)原子事件和其他復(fù)合事件組合而成。例如某一區(qū)域地圖 的請(qǐng)求可能包含多個(gè)瓦片的請(qǐng)求,可認(rèn)為是一個(gè)復(fù)雜事件。上述技術(shù)方案中,步驟三中所述的地圖切割算法,是以用戶初始請(qǐng)求范圍的中心 點(diǎn)(xc,Yc)為地圖的切割原點(diǎn),設(shè)定螺旋閾值;已知該非預(yù)置級(jí)別地圖的比例尺為Sn,那么 可知標(biāo)準(zhǔn)瓦片的實(shí)際寬度和高度 其中Ws、Hs分別為瓦片的寬度和高度;W'、H'分別為當(dāng)前地理范圍的長(zhǎng)度和寬 度;由此可以計(jì)算出當(dāng)前級(jí)別地圖可以切分的瓦片的行列數(shù) 方程3由地理位置獲知其所處的行列號(hào) } =(Xx -X)xk/(X'-X)
Jl=(Y1-Y)XhZ(T-Y)., ν, ΥΛ⑶ I2 = (Λ 2 - Λ) X κ(Χ -Λ)
J2 =(Y2-Y)XhZ(V-Y)其中(X1, Y1)、(X2, Y1)分別表示當(dāng)前請(qǐng)求范圍的左上點(diǎn)坐標(biāo)和右下點(diǎn)坐標(biāo);具體的切片順序是根據(jù)方程3先獲取(X。,Y。)所在的行列號(hào)(i。,jc),該中心瓦片 的螺旋級(jí)別level為0即level = 0,以該瓦片為中心成螺旋狀渲染順序,首先渲染(i。,jc) 的 8-鄰域瓦片即 level = 1,其編號(hào)為(ic_1 jc)、(ic_1 U、(ic, U、(ic+1,U、(ic+1, jc)、(i。+1,j。+1)、(i。,j。+1)、(ic-i; j。+1),其次是對(duì)應(yīng)的16-鄰域,依次類推,直到整個(gè)地圖渲染 完畢。上述地圖切割算法中,螺旋級(jí)別上限Ievelmax = Max ((k/2+abs (ic_k/2)),(h/2+abs (jc-h/2)));螺旋級(jí)別集合=Helix= {level |0 < level < IevelmaJ ;鄰域數(shù) neighbors = 8 X level ;鄰域集合neiTiles = {(it, jt) | ic_level_l < it < ic+level + l, jc_level_l < jt < jc+level+l}。本發(fā)明方法著眼于提供高效快速的非預(yù)置級(jí)別地圖服務(wù),有效地減少了當(dāng)前用戶 的地圖服務(wù)響應(yīng)時(shí)間,也為其他網(wǎng)絡(luò)節(jié)點(diǎn)用戶緩存了該級(jí)別的地圖數(shù)據(jù),同時(shí)用戶事件觸 發(fā)地圖的局部更新工作,極大降低了地圖更新的工作量和成本。
圖1用戶事件模型的觸發(fā)流程圖;圖2螺旋級(jí)別切割算法調(diào)度流程圖。
具體實(shí)施例方式0042]下面通過(guò)一個(gè)實(shí)施例來(lái)詳細(xì)說(shuō)明如何實(shí)現(xiàn)本專利所描述的方法。例如用戶訪問(wèn)武 漢市洪山區(qū)1 1.5萬(wàn)地圖,用戶事件可表達(dá)為Procedure = TileExecutorParameters = BBox :Rectan gle, Width :int, Height int, Format :string, Style :string如附圖1所示,客戶端事件分發(fā)器(Events Dispatcher)對(duì)用戶的地圖事件 狀態(tài)進(jìn)行過(guò)濾,若用戶是第一次訪問(wèn)該比例尺地圖區(qū)域,則當(dāng)前范圍地圖未在客戶端緩存, 本地緩存不存在當(dāng)前范圍地圖,則事件經(jīng)網(wǎng)絡(luò)服務(wù)器被提交至應(yīng)用服務(wù)器,應(yīng)用服務(wù)器對(duì) 預(yù)置級(jí)別目錄文件Conf. xml進(jìn)行析取,判斷當(dāng)前級(jí)別是否已經(jīng)預(yù)置,若未預(yù)置,用戶事件 會(huì)被提交到地圖服務(wù)器,重新提取矢量數(shù)據(jù),進(jìn)行地圖渲染,并觸發(fā)切片執(zhí)行器進(jìn)行地圖切 片操作。同時(shí)Cache Manager也對(duì)事件收集器的事件集合進(jìn)行統(tǒng)計(jì)分析,主要包括用戶的 事件狀態(tài),例如地圖范圍、地圖移動(dòng)方向、地圖比例尺級(jí)別、地圖類型等事件屬性,生成預(yù)先 獲取事件(Pre-fetch Event),由預(yù)先獲取Agent (Pre-fetch Agent)對(duì)該事件進(jìn)行描述,并提交服務(wù)器進(jìn)行地圖的獲取。 在服務(wù)器端,若當(dāng)前請(qǐng)求的地圖級(jí)別未記錄在緩存配置文件中,就會(huì)觸發(fā)服務(wù) 器的動(dòng)態(tài)緩存事件。首先通過(guò)對(duì)用戶事件的還原,提取事件的描述參數(shù)(BBox,Layers, Style,…),調(diào)用WMS響應(yīng)當(dāng)前的地圖請(qǐng)求,渲染一幅1 1. 5萬(wàn)的洪山區(qū)請(qǐng)求范圍的大圖 來(lái)響應(yīng)用戶,接著將該事件轉(zhuǎn)發(fā)瓦片切割器(Tile Executor)。Tile Executor對(duì)緩存配置 文件Conf. xml進(jìn)行析取,獲取相應(yīng)的配置參數(shù),包括地圖數(shù)據(jù)的全圖范圍、標(biāo)準(zhǔn)瓦片尺寸 以及數(shù)據(jù)坐標(biāo)轉(zhuǎn)換的系列參數(shù),以當(dāng)前用戶事件中的中心點(diǎn)參數(shù)為基礎(chǔ),執(zhí)行地圖切割算 法,切割算法如圖2所示,其中Col表示當(dāng)前激活瓦片所處的列,Row表示其所處的行,Level 表示當(dāng)前的螺旋級(jí)別,根據(jù)螺旋級(jí)別與行列號(hào)的比較關(guān)系,進(jìn)行不同的瓦片錄入,若是鄰域 的首尾列,則對(duì)所有激活瓦片(tile)進(jìn)行入庫(kù)如Neighbors, add (tile);否則只對(duì)首行激 活瓦片(foreTile)和尾行激活瓦片(IastTile)進(jìn)行入庫(kù)操作Neighbors, add (foreTile)、 Neighbors, add(IastTile)。建立該非預(yù)置級(jí)別地圖存儲(chǔ)目錄,并更新服務(wù)器緩存配置文 件,注冊(cè)新增級(jí)別的地圖配置信息。此時(shí)該非預(yù)置級(jí)別地圖就轉(zhuǎn)為預(yù)置級(jí)別地圖,其他節(jié)點(diǎn) 用戶在后繼訪問(wèn)中,對(duì)該級(jí)別地圖的訪問(wèn)執(zhí)行預(yù)置瓦片地圖的訪問(wèn)模式。這樣可有效地減 少了當(dāng)前用戶的地圖服務(wù)響應(yīng)時(shí)間,也為其他網(wǎng)絡(luò)節(jié)點(diǎn)用戶緩存了該級(jí)別的地圖數(shù)據(jù),同 時(shí)用戶事件觸發(fā)地圖的局部更新工作。
權(quán)利要求
用戶事件模型驅(qū)動(dòng)的網(wǎng)絡(luò)地圖服務(wù)方法,其特征在于包括以下步驟一.用戶事件模型的構(gòu)建將用戶整個(gè)訪問(wèn)地圖服務(wù)的流程看作是一個(gè)事件序列,用戶事件的表達(dá)采用事件描述語(yǔ)言,原子事件表達(dá)為Procedure=Tile WatcherParameters=Levelint,Rowint,Colint區(qū)域訪問(wèn)的復(fù)雜事件表達(dá)為Procedure=TileExecutorPrameters=BBoxRecttangle,Widthint,Heightint,F(xiàn)ormatstring,Stylestring其中Procedure表示事件的響應(yīng)處理模塊,TileWatcher負(fù)責(zé)處理原子事件,析取事件參數(shù)(Parameters),包括一個(gè)整數(shù)型的數(shù)值比例級(jí)別(Level)、整數(shù)型數(shù)值行號(hào)(Row)、整數(shù)型數(shù)值列號(hào)(Col);區(qū)域復(fù)雜事件的處理器為瓦片執(zhí)行器(TileExecutor),該事件處理器析取地圖服務(wù)的主要參數(shù)包括區(qū)域請(qǐng)求范圍(BBox),客戶端要求圖片的尺寸寬度(Width)和高度(Height),地圖生成格式的要求(Format)以及地圖樣式的信息(Style);二.用戶事件的收集和分發(fā)地圖服務(wù)客戶端建立事件收集器和分發(fā)器,對(duì)用戶地圖事件狀態(tài)進(jìn)行采集和過(guò)濾,事件狀態(tài)主要包括地圖范圍、地圖移動(dòng)方向、地圖比例尺級(jí)別、地圖類型等;本地事件被分發(fā)到本地緩存管理器,由緩存管理器調(diào)用緩存地圖響應(yīng)客戶端,反之用戶事件被提交到地圖服務(wù)器進(jìn)行地圖渲染和切片操作;三.地圖服務(wù)器端緩存服務(wù)器端緩存分為兩種預(yù)置級(jí)別地圖緩存和非預(yù)置級(jí)別地圖緩存,預(yù)置級(jí)別地圖的地圖數(shù)據(jù)按照金字塔模型切分,瓦片的尺寸標(biāo)準(zhǔn)為256個(gè)像素,非預(yù)置級(jí)別地圖的緩存考慮用戶的事件狀態(tài);若當(dāng)前請(qǐng)求的地圖級(jí)別未記錄在緩存配置文件中,就會(huì)觸發(fā)服務(wù)器的動(dòng)態(tài)緩存事件,首先通過(guò)對(duì)用戶事件的還原,提取事件的描述參數(shù)(BBox,Layers,Style,…),調(diào)用WMS響應(yīng)當(dāng)前的地圖請(qǐng)求,渲染區(qū)域地圖響應(yīng)用戶并將事件轉(zhuǎn)發(fā)瓦片切割器;瓦片切割器對(duì)緩存配置文件Conf.xml進(jìn)行析取,獲取相應(yīng)的配置參數(shù),包括地圖數(shù)據(jù)的全圖范圍、標(biāo)準(zhǔn)瓦片尺寸以及數(shù)據(jù)坐標(biāo)轉(zhuǎn)換的系列參數(shù),執(zhí)行地圖切割算法,建立該非預(yù)置級(jí)別地圖存儲(chǔ)目錄,并更新服務(wù)器緩存配置文件,注冊(cè)新增級(jí)別的地圖配置信息。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)地圖服務(wù)方法,其特征在于步驟三中所述的地圖切割算 法,是以用戶初始請(qǐng)求范圍的中心點(diǎn)(Xe,Yc)為地圖的切割原點(diǎn),設(shè)定螺旋閾值;已知該非 預(yù)置級(jí)別地圖的比例尺為Sn,那么可知標(biāo)準(zhǔn)瓦片的實(shí)際寬度和高度\WS = ^xSn⑴[Hs = H'xSn其中Ws、Hs分別為瓦片的寬度和高度 ’r、H'分別為當(dāng)前地理范圍的長(zhǎng)度和寬度;由 此可以計(jì)算出當(dāng)前級(jí)別地圖可以切分的瓦片的行列數(shù)k = Math.Ceil((X'-X)/Ws) h = MatkCeil((T-Y)IHs)方程3由地理位置獲知其所處的行列號(hào) Z1 =(X, -X)xk/(X'-X)h =(Yl-Y)XhI(T-Y)⑶i2 =(X2 -X)xk(X'-X) j2^(Y2-Y)xh/(T-Y)其中(X1, Y1)、(X2, Y2)分別表示當(dāng)前請(qǐng)求范圍的左上點(diǎn)坐標(biāo)和右下點(diǎn)坐標(biāo);具體的切 片順序是根據(jù)方程3先獲取(X。,Y。)所在的行列號(hào)(i。,j。),該中心瓦片的螺旋級(jí)別為0即 level = 0,以該瓦片為中心成螺旋狀渲染順序,首先渲染(i。,j。)的8_鄰域瓦片即level =1,其編號(hào)為(id,jc) > (ic-i jc-i) > (ic,j c-1/、〈工。+1,Jc-I/、〈工。+1,Jc/、〈工。+1,Jc+1/、^1C' Jc+1/、 (i。+ j。+1),其次是對(duì)應(yīng)的16-鄰域,依次類推,直到整個(gè)地圖渲染完畢。
全文摘要
本發(fā)明公開(kāi)一種用戶事件模型驅(qū)動(dòng)的網(wǎng)絡(luò)地圖服務(wù)方法。該方法建立用戶事件模型模擬地圖服務(wù)用戶的事件狀態(tài)和過(guò)程,并對(duì)事件的關(guān)鍵信息進(jìn)行提取分析,以此來(lái)組織地圖服務(wù)的通訊請(qǐng)求內(nèi)容,并針對(duì)特定的訪問(wèn)狀態(tài)進(jìn)行定制回復(fù)。該方法提高了網(wǎng)絡(luò)地圖服務(wù)的效率,改善了用戶的體驗(yàn)。
文檔編號(hào)G06F17/30GK101894167SQ201010239500
公開(kāi)日2010年11月24日 申請(qǐng)日期2010年7月26日 優(yōu)先權(quán)日2010年7月26日
發(fā)明者亢孟軍, 杜清運(yùn), 王明軍 申請(qǐng)人:武漢大學(xué)