專利名稱:一種空間方向感知地圖興趣點(diǎn)搜索方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及地圖搜索領(lǐng)域,特別是涉及一種空間方向感知地圖興趣點(diǎn)搜索方法和系統(tǒng)。
背景技術(shù):
近些年來,基于位置的服務(wù)(Location Based Service,簡(jiǎn)稱LBS)得到了迅速發(fā)展。這主要得益于移動(dòng)網(wǎng)絡(luò)(例如:3G,W1-Fi)的覆蓋及移動(dòng)設(shè)備(例如:手機(jī)、GPS導(dǎo)航儀)的普及。因此,更多的位置信息被加入到網(wǎng)絡(luò)服務(wù)請(qǐng)求中。地圖服務(wù)是互聯(lián)網(wǎng)發(fā)展以來備受關(guān)注一項(xiàng)應(yīng)用,越來越多的網(wǎng)民開始利用網(wǎng)絡(luò)地圖服務(wù)(例如=Google Map,百度地圖等)來獲取想要的信息。它最基礎(chǔ)的服務(wù)主要包括兩方面的內(nèi)容:一是興趣點(diǎn)(興趣點(diǎn)Point of Interest,簡(jiǎn)稱興趣點(diǎn))的搜索,一項(xiàng)是線路查詢。前者主要根據(jù)用戶輸入的關(guān)鍵詞或經(jīng)緯度坐標(biāo)返回相關(guān)的興趣點(diǎn),例如用戶通過輸入“火車站”來查找所有名稱中包含“火車站”的點(diǎn)。由點(diǎn)搜索技術(shù)衍生出的其他服務(wù)包括視野內(nèi)搜索,即在特定的區(qū)域內(nèi)搜索滿足條件的關(guān)鍵詞等。而線路搜索也是一項(xiàng)應(yīng)用范圍更廣的技術(shù)。很多時(shí)候,人們需要從一個(gè)地點(diǎn)到達(dá)另一個(gè)地點(diǎn)。對(duì)于起點(diǎn)或終點(diǎn),他們不一定熟悉,而從起點(diǎn)到終點(diǎn)過程中,會(huì)經(jīng)過哪些位置,他們也并不關(guān)心。他們所希望只是能夠在給定的時(shí)間、金錢預(yù)算內(nèi)到達(dá)終點(diǎn)。線路搜索可以很好地幫助他們完成從起點(diǎn)到終點(diǎn)的規(guī)劃任務(wù)。這項(xiàng)服務(wù)在GPS導(dǎo)航中的作用益發(fā)突出。近些年來,線路搜索技術(shù)也在很多方向上進(jìn)行了擴(kuò)展,包括多點(diǎn)規(guī)劃,即用戶需要的不只是從一個(gè)點(diǎn)到另一個(gè)點(diǎn)的線路,而是一條經(jīng)過若干點(diǎn)的線路,例如,有的用戶需要先到“銀行”取款,再去“商場(chǎng)”購(gòu)物,再去“加油站”加油,最后回“家”。底圖數(shù)據(jù)質(zhì)量的提升及搜索技術(shù)的發(fā)展能夠幫助用戶找到更加符合自己要求的點(diǎn),為其提供更好的查詢體驗(yàn)。從底層技術(shù)上來說,目前應(yīng)用最為廣泛的空間索引結(jié)構(gòu)是R樹,它是一種高度平衡的樹形結(jié)構(gòu)。它根據(jù)興趣點(diǎn)的位置分布來建樹,直接對(duì)一定范圍的空間對(duì)象進(jìn)行索引。樹中的每個(gè)節(jié)點(diǎn)存儲(chǔ)著一個(gè)包含若干區(qū)域的外接矩形(最小邊界矩形,Minimal Bounding Rectangle,簡(jiǎn)稱MBR),空間對(duì)象的具體內(nèi)容則存儲(chǔ)在磁盤上,通過葉節(jié)點(diǎn)與之關(guān)聯(lián)。這種結(jié)構(gòu)能方便地支持點(diǎn)查詢、范圍查詢等常見的查詢方式。但是,技術(shù)的進(jìn)步也使得人們對(duì)于搜索技術(shù)的要求變得更高,傳統(tǒng)關(guān)鍵詞檢索已經(jīng)不能滿足人們?nèi)找嬖鰪?qiáng)的個(gè)性化、區(qū)域化請(qǐng)求。一個(gè)眾所周知的例子就是社會(huì)性網(wǎng)絡(luò)服務(wù)(Social Networking Services,簡(jiǎn)稱SNS),它的出現(xiàn)使得個(gè)人興趣、喜好也成為相關(guān)性衡量標(biāo)準(zhǔn)中的一個(gè)重要維度。在地圖服務(wù)中,最能體現(xiàn)個(gè)性特征的內(nèi)容就是位置,這個(gè)位置可能是用戶當(dāng)前的位置,也可能是用戶指定的位置。從直觀出發(fā),用戶搜索“餐廳”時(shí),他更希望得到的應(yīng)該是周圍的餐廳,或者某一地點(diǎn)(例如:聚會(huì)地點(diǎn)附近等)周圍的餐廳,因此,距搜索位置越近的點(diǎn),在返回結(jié)果中排序也應(yīng)該更高。關(guān)鍵字查詢是信息檢索(Information Retrieval)中的經(jīng)典問題,而空間數(shù)據(jù)的檢索則可以通過空間索引來實(shí)現(xiàn)。因此要解決這類問題,可以將這兩項(xiàng)技術(shù)結(jié)合起來。于是有人提出IR tree這一索引結(jié)構(gòu),在原有R tree的基礎(chǔ)上,在每個(gè)節(jié)點(diǎn)上附加了一個(gè)倒排索引,將每個(gè)關(guān)鍵詞映射到包含這個(gè)關(guān)鍵字的子節(jié)點(diǎn)上。IR tree幫助用戶檢索到位置和關(guān)鍵詞匹配程度都較高的興趣點(diǎn),并且進(jìn)行top-k排序。現(xiàn)有的興趣點(diǎn)檢索方法,會(huì)將搜索位置附近的興趣點(diǎn)全部返回給用戶端,距離搜索位置越近排序越靠前,而不能考慮用戶的空間位置的方向性,比如在用戶駕車在高速公路上行駛時(shí),希望搜索一個(gè)最近的出口,而現(xiàn)有技術(shù)搜索到的結(jié)果排序靠前的可能是用戶相反方向的出口,無法將用戶行使方向上的出口正常返回給用戶。
發(fā)明內(nèi)容
本申請(qǐng)所要解 決的技術(shù)問題是提供一種空間方向感知地圖興趣點(diǎn)搜索方法與裝置,能按用戶端的方向需求返回相應(yīng)興趣點(diǎn)。為了解決上述問題,本申請(qǐng)公開了一種空間方向感知地圖興趣點(diǎn)搜索方法,包括:步驟NI,接收用戶查詢請(qǐng)求,所述請(qǐng)求包括查詢點(diǎn)經(jīng)緯度、查詢方位、返回結(jié)果個(gè)數(shù)k和關(guān)鍵詞集合K ;所述查詢方位包括從查詢點(diǎn)出發(fā)的兩條直線與指定坐標(biāo)軸方向的夾角范圍內(nèi)的區(qū)域;步驟N2,創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Q1^P QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和興趣點(diǎn);步驟N3,根據(jù)所述查詢方位將所述查詢分解到相應(yīng)各坐標(biāo)系地圖中;步驟N4,計(jì)算查詢點(diǎn)與相應(yīng)各坐標(biāo)系地圖原點(diǎn)的距離,根據(jù)所述距離確定查詢點(diǎn)所在環(huán)區(qū)域并將其加入Qk中;其中,Qe中的區(qū)域按距離遠(yuǎn)點(diǎn)的距離從近至遠(yuǎn)排序;步驟N5,按順序遍歷%中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn);步驟N6,將查找結(jié)果返回至用戶端;所述查找結(jié)果包括Qp中滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn);其中,所述索引通過如下步驟構(gòu)建:步驟M1,獲取地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)0,建立四個(gè)坐標(biāo)系地圖,并調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性至與另外一個(gè)坐標(biāo)系地圖屬性相同;其中所述地圖信息包括各興趣點(diǎn)在經(jīng)緯度和各興趣點(diǎn)的關(guān)鍵詞集合;步驟M2,針對(duì)每一個(gè)坐標(biāo)系地圖,以所述原點(diǎn)為圓心,按照到原點(diǎn)的距離,通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域Ri (I < i < N),所述每個(gè)環(huán)區(qū)域包括的興趣點(diǎn)個(gè)數(shù)相似;步驟M3,針對(duì)所述切分后的每個(gè)區(qū)域,通過沿半徑方向多條直線將所述環(huán)區(qū)域切分為M個(gè)子區(qū)域,所述每個(gè)子區(qū)域中包括的興趣點(diǎn)個(gè)數(shù)相似;并計(jì)算每個(gè)興趣點(diǎn)與指定正半軸夾角,和每個(gè)子區(qū)域各興趣點(diǎn)所在的夾角范圍[Qi,P,其中Θ i, Μ)表示Bi,j(l≤j≤Μ)中的角度最小點(diǎn)的角度;步驟Μ4,關(guān)鍵詞h到包括該關(guān)鍵詞的子區(qū)域的倒排索引LkiK,并建立關(guān)鍵詞Ici到包括該關(guān)鍵詞的興趣點(diǎn)的倒排索引Lkip ;所述子區(qū)域與該子區(qū)域的所述興趣點(diǎn)對(duì)應(yīng)并且所述兩個(gè)索引序關(guān)系相同,所述序關(guān)系按照距原點(diǎn)的從近到遠(yuǎn)排序;所述各子區(qū)域中興趣點(diǎn)按與特征方向正半軸的夾角排序。
優(yōu)選的,通過如下步驟調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性與另外一個(gè)坐標(biāo)系地圖屬性相同:以地圖左下角頂點(diǎn)為原點(diǎn),正東方向?yàn)閄軸正方向,正北方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map1 ;以地圖右下角頂點(diǎn)為原點(diǎn),正北方向?yàn)閄軸正方向,正西方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map2 ;以地圖右上角頂點(diǎn)為原點(diǎn),正西方向?yàn)閄軸正方向,正南方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map3 ;以地圖左上角頂點(diǎn) 為原點(diǎn),正南方向?yàn)閄軸正方向,正東方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map4。優(yōu)選的,通過以下步驟通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域:將有序的P個(gè)興趣點(diǎn)p1;p2,...,pP,均勻放入N個(gè)不相交的集合中Bi,每個(gè)集合Bi={ρ( -ι)χΛ+ι ...,Pix],I ≤ i ≤ N-1 ;其中,所述的 λ = [ρ/Ν];計(jì)算Bi中(I≤i≤N)的點(diǎn)到原點(diǎn)O的最短距離Iv1 ;以O(shè)為圓心,r1;r2,...為半徑作N_1個(gè)1/4圓環(huán),得到N個(gè)環(huán)區(qū)域R1, R2,...,Rn。優(yōu)選的,如果存在dist(pAXi+1, O) = dist(pAXi, O),則將 ρλ Xi+1 放入 Bi 中,否則放入Bi+1中;其中所述(Iist(Pi,O)表示興趣點(diǎn)Pi到原點(diǎn)O的距離。優(yōu)選的,通過以下步驟計(jì)算每個(gè)子區(qū)域的各興趣點(diǎn)所在的夾角范圍:獲取每個(gè)子區(qū)域中與X軸正方向夾角最小的興趣點(diǎn),和與X軸正方向夾角最大的興趣點(diǎn);將與X軸正方向夾角最小的興趣點(diǎn)的夾角作為該子區(qū)域的夾角范圍下限,并根據(jù)該子區(qū)域相鄰的下一個(gè)子區(qū)域的下界確定該子區(qū)域的上限。優(yōu)選的,通過以下步驟根據(jù)所述查詢方位將所述查詢轉(zhuǎn)換到相應(yīng)坐標(biāo)系地圖中:計(jì)算從查詢點(diǎn)出發(fā)的初始方位直線與特定坐標(biāo)系地圖的X軸正半軸的夾角α和結(jié)束方位直線與特定坐標(biāo)系地圖的X軸正半軸的夾角β ;將所述兩條直線的夾角范圍[α,β ]分解統(tǒng)一到相應(yīng)
區(qū)間的坐標(biāo)系地圖上。優(yōu)選的,其特征在于通過如下步驟按順序遍歷Qk中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn):步驟N51,從Qk中取出第一個(gè)區(qū)域Ri,獲得從q到Ri的距離最小值MINDIST (q,Ri);步驟N52,當(dāng)MINDIST(QiRi)≥dk,則將當(dāng)前Qp中的前k個(gè)滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn)作為查找結(jié)果;所述dk記錄Qp中第k小的興趣點(diǎn)到查詢點(diǎn)的距離;步驟N53,當(dāng)MINDIST(QiRi) < dk,通過利用方位信息對(duì)Ri中的子區(qū)域剪枝和判斷查詢點(diǎn)q到子區(qū)域民」的最短距離是否小于等于dk兩個(gè)剪枝策略剪去不可能產(chǎn)生可行興趣點(diǎn)的子區(qū)域,并根據(jù)剪枝完畢的結(jié)果中查詢滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn)。優(yōu)選的,通過如下步驟通過利用方位信息對(duì)Ri中的子區(qū)域剪枝和判斷查詢點(diǎn)q到子區(qū)域Ru的最短距離是否小于等于dk兩個(gè)剪枝策略剪去不可能產(chǎn)生可行興趣點(diǎn)的子區(qū)域,并根據(jù)剪枝完畢的結(jié)果中查詢k個(gè)滿足關(guān)鍵詞與方向約束的最小的k個(gè)興趣點(diǎn):步驟N531,計(jì)算方位信息覆蓋區(qū)域R與所述Ri的相交區(qū)域的角度范圍[τ嚴(yán),丁,],獲取民中Qi, η彡τ嚴(yán)且τ嚴(yán)的子區(qū)域Riij ;步驟Ν532,對(duì)關(guān)鍵詞集合K中的每個(gè)關(guān)鍵詞ki;獲取對(duì)應(yīng)的子區(qū)域倒排索引LkiK,對(duì)其求交獲得包含所有關(guān)鍵詞的子區(qū)域LkK = n ki e KLkiE ;步驟N533,計(jì)算獲得同時(shí)滿足區(qū)域與關(guān)鍵詞約束的子區(qū)域Ι^κ[α,β] = RiLa ,β] η LkE;步驟Ν534,遍歷民,」e Ri^a , β ],如果MINDIST (q,Ri,」)彡dk,則剪掉該子區(qū)域,否則,將Ry加入到子區(qū)域集合CKim中;步驟N535,遍歷步驟N534中得到的CKim中的每一個(gè)子區(qū)域Ri,」,如果MINDIST (q,Ri,P彡dk,停止遍歷,否則,在Riij中查找可行興趣點(diǎn);步驟N536,對(duì)所有K中關(guān)鍵詞ki;獲得它在Ri,」中對(duì)應(yīng)的興趣點(diǎn)倒排索引Ι^Ρ(Ι^,j);步驟N537,計(jì)算所有關(guān)鍵詞對(duì)應(yīng)的倒排列表的交集,即包含所有K中關(guān)鍵詞的興趣點(diǎn) L/ = n kieKLkiP (R1.j);步驟N538,驗(yàn)證步驟N537中得到LKP中的興趣點(diǎn)p是否滿足范圍約束,如果是,判斷該點(diǎn)P是否dist (P, q)小于dk,如果dist(p,q) < dk,則將它加入到優(yōu)先級(jí)隊(duì)列Qp中,并更新dk ;
步驟N539,判斷查詢點(diǎn)q到Ri+1的最小距離MINDIST(q, Ri+1)是否小于dk,如果MINDIST (q,Ri+1) < dk,則將Ri+1加入Qe中,并轉(zhuǎn)入步驟N51。相應(yīng)的,本申請(qǐng)還公開了一種空間方向感知地圖興趣點(diǎn)搜索裝置,包括:請(qǐng)求接收模塊,接收用戶查詢請(qǐng)求,所述請(qǐng)求包括查詢點(diǎn)經(jīng)緯度、查詢方位、返回結(jié)果個(gè)數(shù)k和關(guān)鍵詞集合K ;所述查詢方位包括從查詢點(diǎn)出發(fā)的兩條直線與指定坐標(biāo)軸方向的夾角范圍內(nèi)的區(qū)域;隊(duì)列創(chuàng)建模塊,創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Qk和QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和興趣點(diǎn);查詢分解模塊,根據(jù)所述查詢方位將所述查詢分解到相應(yīng)各坐標(biāo)系地圖中;查詢定位模塊,計(jì)算查詢點(diǎn)與相應(yīng)各坐標(biāo)系地圖原點(diǎn)的距離,根據(jù)所述距離確定查詢點(diǎn)所在環(huán)區(qū)域并將其加入Qk中;其中,Qe中的區(qū)域按距離原點(diǎn)的距離從近至遠(yuǎn)排序;興趣點(diǎn)查詢模塊,按順序遍歷Qk中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn);結(jié)果返回模塊,將查找結(jié)果返回至用戶端;所述查找結(jié)果包括Qp中滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn);其中,所述索引通過如下模塊構(gòu)建:地圖信息獲取模塊,獲取地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)0,建立四個(gè)坐標(biāo)系地圖,并調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性至與另外一個(gè)坐標(biāo)系地圖屬性相同;其中所述地圖信息包括各興趣點(diǎn)在經(jīng)緯度和各興趣點(diǎn)的關(guān)鍵詞集合;徑向區(qū)域切分模塊,針對(duì)每一個(gè)坐標(biāo)系地圖,以所述原點(diǎn)為圓心,按照到原點(diǎn)的距離,通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域Ri (I ( i ( N),所述每個(gè)環(huán)區(qū)域包括的興趣點(diǎn)個(gè)數(shù)相似;弧度區(qū)域切分模塊,針對(duì)所述切分后的每個(gè)區(qū)域,通過沿半徑方向多條直線將所述環(huán)區(qū)域切分為M個(gè)子區(qū)域,所述每個(gè)子區(qū)域中包括的興趣點(diǎn)個(gè)數(shù)相似;并計(jì)算每個(gè)興趣點(diǎn)與指定正半軸夾角,和每個(gè)子區(qū)域各興趣點(diǎn)所在的夾角范圍[Θ i,^),θ ,其中Θ表示Ri, j (I彡j彡Μ)中的角度最小點(diǎn)的角度;索引建立模塊,關(guān)鍵詞匕到包括該關(guān)鍵詞的子區(qū)域的倒排索引LkiK,并建立關(guān)鍵詞h到包括該關(guān)鍵詞的興趣點(diǎn)的倒排索引Lkip ;所述子區(qū)域與該子區(qū)域的所述興趣點(diǎn)對(duì)應(yīng)并且所述兩個(gè)索引序關(guān)系相同,所述序關(guān)系按照距原點(diǎn)的從近到遠(yuǎn)排序;所述各子區(qū)域中興趣點(diǎn)按與特征方向正半軸的夾角排序。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):本申請(qǐng)通過以地圖平面中的四個(gè)頂點(diǎn)為坐標(biāo)原點(diǎn),以地圖平面中從各原點(diǎn)出發(fā)的相鄰兩條邊為軸建立四個(gè)坐標(biāo)系地圖;對(duì)于每個(gè)坐標(biāo)系地圖按POI點(diǎn)的位置先進(jìn)行徑向區(qū)域切分,然后進(jìn)行弧向區(qū)域切分,使切分完畢的每個(gè)子區(qū)域包括相似的POI點(diǎn)個(gè)數(shù),然后再針對(duì)子區(qū)域地圖和各POI點(diǎn)分別建立索引;其中,因?yàn)槭前凑請(qǐng)A的方式劃分的子區(qū)域,所以可以很方便的得到各POI點(diǎn)的相對(duì)指定坐標(biāo)系坐標(biāo)軸的角度,和子區(qū)域的角度范圍。如此,對(duì)于用戶端帶有方位信息的請(qǐng)求,即可根據(jù)索引的構(gòu)建方法方便快捷的查詢到符合方位信息的POI點(diǎn)。本申請(qǐng)根據(jù)POI點(diǎn)的位置建立一種全新的索引結(jié)構(gòu),能夠方便地支持本發(fā)明希望實(shí)現(xiàn)的查詢技術(shù),當(dāng)系統(tǒng)接收到查詢時(shí),本申請(qǐng)從請(qǐng)求中獲得查詢位置、指定方向、關(guān)鍵詞以及期望返回的結(jié) 果數(shù),然后利用已建立存儲(chǔ)的索引檢索滿足條件的結(jié)果并排序,返回給用戶。
圖1是本申請(qǐng)一種空間方向感知地圖興趣點(diǎn)搜索方法流程示意圖;圖2是本申請(qǐng)最優(yōu)的查詢流程示意圖;圖3是本申請(qǐng)剪枝示意圖;圖4是本申請(qǐng)一種索引示例圖;圖5是本申請(qǐng)一種空間方向感知地圖興趣點(diǎn)搜索裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。參照?qǐng)D1,示出了本申請(qǐng)一種空間方向感知地圖興趣點(diǎn)搜索方法流程示意圖,包括:步驟NI,接收用戶查詢請(qǐng)求,所述請(qǐng)求包括查詢點(diǎn)經(jīng)緯度、查詢方位、返回結(jié)果個(gè)數(shù)k和關(guān)鍵詞集合K ;所述查詢方位包括從查詢點(diǎn)出發(fā)的兩條直線與指定坐標(biāo)軸方向的夾角范圍內(nèi)的區(qū)域;步驟N2,創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Q1^P QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和興趣點(diǎn);
步驟N3,根據(jù)所述查詢方位將所述查詢分解到相應(yīng)各坐標(biāo)系地圖中;步驟N4,計(jì)算查詢點(diǎn)與相應(yīng)各坐標(biāo)系地圖原點(diǎn)的距離,根據(jù)所述距離確定查詢點(diǎn)所在環(huán)區(qū)域并將其加入Qk中;其中,Qe中的區(qū)域按距離遠(yuǎn)點(diǎn)的距離從近至遠(yuǎn)排序;步驟N5,按順序遍歷%中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn);步驟N6,將查找結(jié)果返回至用戶端;所述查找結(jié)果包括Qp中滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn);其中,所述索引通過如下步驟構(gòu)建:步驟M1,獲取地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)0,建立四個(gè)坐標(biāo)系地圖,并調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性至與另外一個(gè)坐標(biāo)系地圖屬性相同;其中所述地圖信息包括各興趣點(diǎn)在經(jīng)緯度和各興趣點(diǎn)的關(guān)鍵詞集合;步驟M2,針對(duì)每一個(gè)坐標(biāo)系地圖,以所述原點(diǎn)為圓心,按照到原點(diǎn)的距離,通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域Ri (I < i < N),所述每個(gè)環(huán)區(qū)域包括的興趣點(diǎn)個(gè)數(shù)相似;步驟M3,針對(duì)所述切分后的每個(gè)區(qū)域,通過沿半徑方向多條直線將所述環(huán)區(qū)域切分為M個(gè)子區(qū)域,所述每個(gè)子區(qū)域中包括的興趣點(diǎn)個(gè)數(shù)相似;并計(jì)算每個(gè)興趣點(diǎn)與指定正半軸夾角,和每個(gè)子區(qū)域各興趣點(diǎn)所在的夾角范圍[Qi, (H),Qi,P,其中Θ i, Μ)表示Ri,j(l彡j彡Μ)中的角度最小點(diǎn)的角度;步驟Μ4,關(guān)鍵詞h到包括該關(guān)鍵詞的子區(qū)域的倒排索引LkiK,并建立關(guān)鍵詞Ici到包括該關(guān)鍵詞的興趣點(diǎn)的倒排索引Lkip ;所述子區(qū)域與該子區(qū)域的所述興趣點(diǎn)對(duì)應(yīng)并且所述兩個(gè)索引序關(guān)系相同,所述序關(guān)系按照距原點(diǎn)的從近到遠(yuǎn)排序;所述各子區(qū)域中興趣點(diǎn)按與特征方向正半軸的夾角排序。`在本申請(qǐng)進(jìn)行查詢之前,需要預(yù)先建立一個(gè)有關(guān)方位的地圖索引,期間了步驟如上:步驟M1,獲取地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)0,建立四個(gè)坐標(biāo)系地圖,并調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性至與另外一個(gè)坐標(biāo)系地圖屬性相同;其中所述地圖信息包括各興趣點(diǎn)在經(jīng)緯度和各興趣點(diǎn)的關(guān)鍵詞集合;本申請(qǐng)需要預(yù)先收集地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)0,建立四個(gè)坐標(biāo)系。ItiW,以地圖左下角頂點(diǎn)Olb為原點(diǎn),正東方向?yàn)閄軸正方向,正北方向?yàn)閥軸正方向建立坐標(biāo)系,記為Map1 ;以地圖右下角頂點(diǎn)Oa為原點(diǎn),正北方向?yàn)閄軸正方向,正西方向?yàn)閥軸正方向建立坐標(biāo)系,記為Map2 ;以地圖右上角頂點(diǎn)Ort為原點(diǎn),正西方向?yàn)閄軸正方向,正南方向?yàn)閥軸正方向建立坐標(biāo)系,記為Map3 ;以地圖左上角頂點(diǎn)Olt為原點(diǎn),正南方向?yàn)閄軸正方向,正東方向?yàn)閥軸正方向建立坐標(biāo)系,記為Map4。經(jīng)過上述的設(shè)定,Mapn(I彡η彡4)具有完全相同的屬性,在所述四個(gè)坐標(biāo)系中按相同的方式建立索引。在地圖上,有POI集合P = {ρ1;ρ2,...,ρ|ρ|},對(duì)于所有Pi e P,信息包括:經(jīng)度 Iati,諱度 1ni,關(guān)鍵詞集合 keywordn, keywordi2,..., keyworaim, P 中 POI 點(diǎn)按經(jīng)諱度標(biāo)記在Map上。步驟M2,針對(duì)每一個(gè)坐標(biāo)系地圖,以所述原點(diǎn)為圓心,按照到原點(diǎn)的距離,通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域Ri (1 ≤ i ≤ N),所述每個(gè)環(huán)區(qū)域包括的興趣點(diǎn)個(gè)數(shù)相似。因?yàn)榻?jīng)過上述的設(shè)定,Mapn(1≤n≤4)具有完全相同的屬性,在所述四個(gè)坐標(biāo)系中按相同的方式建立索引。不失一般性,在下面的描述中,統(tǒng)一用Map表不。針對(duì)每一個(gè)坐標(biāo)系地圖Map,按照到原點(diǎn)的距離將Map分為N個(gè)1/4圓環(huán),使得每個(gè)1/4圓環(huán)中的點(diǎn)數(shù)一般為λ = [ρ/Ν] ο在Map中,所有Pi e P都已經(jīng)按照距離原點(diǎn)的位置排好序,即若i < j,有dist (Pi,O) ( dist(pj, O), (dist (Pi, O)表示POI點(diǎn)到原點(diǎn)的距離)將其均分入N個(gè)不相交的集合中,使每個(gè)集合分別映射到Map中的一個(gè)圓環(huán):步驟al,對(duì)于有序的興趣點(diǎn)Pl,P2, , P1p1,將其平均放入N個(gè)不相交的集合中,即對(duì)于 I € i € N-1,有 Bi — {p X a +1,...,Pix λ},Bn — {ρ (N-ι) χλ,...,Ρ|Ν|}。如果存在dist(pXXi+1, O) = dist(pXXi, 0),則將 ρλΧ +1 放入 Bi 中,否則放入 Bi+1 中。步驟a2,記集合Bi中(1≤i≤N)的點(diǎn)到原點(diǎn)O的最短距離為r^,以O(shè)為圓心,r1 Y2, , rN_!為半徑作N-1個(gè)1/4圓弧,貝U這N-1個(gè)圓弧將Map分為N個(gè)區(qū)域,分別記為R1, R2, , Rn, R1是半徑為A的圓弧與X、y軸所包圍的區(qū)域,Rn是半徑為IV1的圓弧之外的區(qū)域,Ri是半徑為IV1的圓弧和半徑為&的圓弧之間的區(qū)域(1/4圓環(huán)),所有Bi中的點(diǎn)都落入到區(qū)域 Ri 中,則:若 P e Ri, p’ e Rj,且 i < j,有 dist (ρ, O) < dist(p’,O)。步驟M3,針對(duì)所述切分后的每個(gè)區(qū)域,通過沿半徑方向多條直線將所述環(huán)區(qū)域切分為M個(gè)子區(qū)域,所述每個(gè)子區(qū)域中包括的興趣點(diǎn)個(gè)數(shù)相似;并計(jì)算每個(gè)興趣點(diǎn)與指定正半軸夾角,和每個(gè)子區(qū)域各興趣點(diǎn)所在的夾角范圍[Qi, (H),Qi,P,其中Θ i, Μ)表示Bi,j(l彡j彡Μ)中的角度最小點(diǎn)的角度。在步驟M2中進(jìn)行徑向切分后,再對(duì)圓環(huán)進(jìn)行進(jìn)一步劃分,使得每個(gè)圓環(huán)包含M段,每段圓環(huán)中POI點(diǎn)數(shù)相同,一般等于λ/Μ。進(jìn)一步對(duì)區(qū)域進(jìn)行切分,將每一個(gè)區(qū)域Ri中的λ個(gè)POI點(diǎn)按照其與X軸正向的夾角(Mapn不同,X軸正方向不相同,根據(jù)定義確定)均勻地分成不相交的M份,再用徑向的線段將Ri劃分成M個(gè)子區(qū)域(sub-region),使得每一份POI點(diǎn)恰好映射到一個(gè)子區(qū)域中:其中,可通過以下步驟計(jì)算每個(gè)子區(qū)域的各興趣點(diǎn)所在的夾角范圍:獲取每個(gè)子區(qū)域中與X軸正方向夾角最小的興趣點(diǎn),和與X軸正方向夾角最大的興趣點(diǎn);將與X軸正方向夾角最小的興趣點(diǎn)的夾角作為該子區(qū)域的夾角范圍下限,并根據(jù)該子區(qū)域相鄰的下一個(gè)子區(qū)域的下界確定該子區(qū)域的上限。其中上限一般為開區(qū)間,比如某區(qū)域的夾角范圍為[Qi, θ i+1) ο其中也可將與X軸正方向夾角最大的興趣點(diǎn)的夾角作為該子區(qū)域的夾角范圍上限。另外,具體的每個(gè)子區(qū)域的各興趣點(diǎn)所在的夾角范圍也可采用其他形式,只需要保證各子區(qū)域的夾角范圍包括了該子區(qū)域中各個(gè)興趣點(diǎn),并且同一環(huán)區(qū)域中相鄰兩個(gè)子區(qū)域的夾角范圍不相交即可。
具體的,比如:步驟bl:對(duì)于Ri中所有POI點(diǎn),與X軸正方向都有一個(gè)夾角,用pe表示,根據(jù)Mapn的劃分及定義可知O彡P(guān)0 ( /2,則:ρ0 = arctan((p.y-0.y)/(ρ.χ-0.X)) = arctan (p.y/p.x)。步驟b2:將民中的點(diǎn)均勻的置于1個(gè)集合民,1,民,2,...,民, 中,每個(gè)集合中有|P|/(MXN)個(gè)POI點(diǎn)。假設(shè)Θ i (j_D表示Ri jQ彡j彡M)中的角度最小的點(diǎn),則用M-1條半徑方向的直線將Ri劃分為M個(gè)子區(qū)域,分別記為Ri^ Ri^...,Ri,則第j個(gè)子區(qū)域中POI的點(diǎn)與X軸正半軸夾角的范圍為[9U1, θ^),并且:若ρ e Rijs, e Ru,且s <七,有?0〈P θ。步驟M4,關(guān)鍵詞h到包括該關(guān)鍵詞的子區(qū)域的倒排索引LkiK,并建立關(guān)鍵詞Ici到包括該關(guān)鍵詞的興趣點(diǎn)的倒排索引Lkip ;所述子區(qū)域與該子區(qū)域的所述興趣點(diǎn)對(duì)應(yīng)并且所述兩個(gè)索引序關(guān)系相同,所述序關(guān)系按照距原點(diǎn)的從近到遠(yuǎn)排序;所述各子區(qū)域中興趣點(diǎn)按與特征方向正半軸的夾角排序。倒排索引是信息檢索領(lǐng)域一種最常用的索引方式,原因在于它能根據(jù)關(guān)鍵詞,快速定位到包含該關(guān)鍵詞的文檔。在倒排索引中,每個(gè)屬性值對(duì)應(yīng)了一個(gè)列表,列表中的元素是滿足這個(gè)屬性的記錄的位置信息。為了在較短時(shí)間內(nèi)找到滿足關(guān)鍵詞條件的POI點(diǎn)及子區(qū)域,需要對(duì)Map及相關(guān)信息建立兩個(gè)倒排索引(其中,不同Mapn可分別建立索引;或用統(tǒng)一索引,用統(tǒng)一索引時(shí)可在列表中除基本信息外,附加一個(gè)關(guān)于η的屬性標(biāo)識(shí)該索引對(duì)于某個(gè)坐標(biāo)系地圖),同時(shí)利用指針表示POI點(diǎn)及子區(qū)域之間的包含關(guān)系:步驟Cl:建立從關(guān)鍵詞到子區(qū)域的倒排索引,即每個(gè)關(guān)鍵詞Ici對(duì)應(yīng)一個(gè)由子區(qū)域ID組成的有序列表LkiK,列表中的子區(qū)域包含Ici (即子區(qū)域中至少存在一個(gè)包含Ici的POI點(diǎn))。在 LkiK 中,若 i < j,則 Ri,s < Rjjt ;若 s < t,則 Ri,s < Rijto步驟c2:建立從關(guān)鍵詞到POI點(diǎn)的倒排索引,即每個(gè)關(guān)鍵詞Iii對(duì)應(yīng)一個(gè)由POI ID組成的有序列表Lkip,列表中的元素是包含Iii的Ρ0Ι。在對(duì)POIID進(jìn)行排序時(shí),首先比較它們所在子區(qū)域的先后順序,序關(guān)系和步驟Cl中的序關(guān)系相同,然后位于同一個(gè)子區(qū)域中的點(diǎn)按照它們與X軸正半軸的夾 角排序。步驟c3:在LkiK中,給每一個(gè)Rq附加一個(gè)指針,指向LkiP中的一個(gè)POI點(diǎn),這個(gè)POI點(diǎn)是Ri,」n Lkip中的POI ID最小值,記為Ii,通過這樣的方式,可以實(shí)現(xiàn)從子區(qū)域到POI點(diǎn)的快速定位,即若Ri,」包含Ici,則LkiHj, Ii, j+1)是區(qū)域Ri,」中包含關(guān)鍵詞Ici的點(diǎn)。比如:對(duì)于POI 集合 P,= {ρ/, ρ2,,..., ρ|Ρ丨,}, p/ = {pu,= (Plat/ , Ploni J ),keywords/ = (keywordn’,keywordi2’,每個(gè)關(guān)鍵詞對(duì)應(yīng)一個(gè)由經(jīng)諱度表示的位置和一個(gè)和這個(gè)點(diǎn)相關(guān)的關(guān)鍵詞集合。設(shè)latmin、latmax、1nmin> 1nmax分別表示集合中經(jīng)度的最大值、最小值,纟韋度的最大值、最小值。以(Iatmin, 1nmin)為原點(diǎn)O,正東方向?yàn)閄軸正半軸,正北方向?yàn)閥軸正半軸建立平面直角坐標(biāo)系,則P中所有POI點(diǎn)均在(latmin,1nmin),Qatmax, O), Qatmax, 1nmax), (O, 1nmax)四個(gè)點(diǎn)圍成的矩形范圍內(nèi),記為Map。P中每個(gè)點(diǎn)p/與 X 軸正半軸夾角記為 Pi/ = (Plati,-W)/(Ploni,-W),有 0<p",( π/2。將P中點(diǎn)按到原點(diǎn)距離排序,用歐式距離計(jì)算公式!disi^p/, O) = sqrt((plati’ -1atmin’)2+(Pioni -1onmin’)2),排序后的集合記為 P = {p1; P2, , P|p|},即若 i < j,則有 disth’,O)< dist(p/, O),其余表示和原集合相同。再進(jìn)行區(qū)域劃分,即通過N-1個(gè)以O(shè)為圓心半徑不等的1/4圓弧(O彡圓心角θ ( JI/2)和NX (M-1)條沿半徑方向端點(diǎn)在圓弧上的線段將Map分為NXM個(gè)區(qū),每個(gè)區(qū)中POI點(diǎn)的個(gè)數(shù)相同(邊界部分除外)。每?jī)蓷l圓弧之間的區(qū)域從內(nèi)到外依次記為民(1≤i≤N),在Ri中,由徑向線段切分后的區(qū)域從南向北依次記為民,」(1彡j彡Μ)。然后建立從關(guān)鍵詞到Ri, j和POI點(diǎn)的倒排索引Lkip和LkiK。若Ry中的POI點(diǎn)pk包含關(guān)鍵詞keywords,將Ri,」加入到Index1中keywords對(duì)應(yīng)的倒排列表中,pk加入到Index2中keywords對(duì)應(yīng)的倒排列表中,列表均有序。所有點(diǎn)、子區(qū)域添加完成后,添加從Index1到Index2的指針,表示POI點(diǎn)和子區(qū)域的包含關(guān)系。在上述步驟結(jié)束后,得到一個(gè)支持相應(yīng)查詢的索引結(jié)構(gòu),當(dāng)內(nèi)存空間不夠時(shí),索引數(shù)據(jù)可以存放在磁盤上,后續(xù)查詢算法中的剪枝策略能夠幫助減少磁盤I/o次數(shù),縮短查詢時(shí)間。再通過上述步驟建立完各坐標(biāo)系地圖的索引后,即可接收用戶端的請(qǐng)求進(jìn)行查詢工作。步驟NI,接收用戶查詢請(qǐng)求,所述請(qǐng)求包括查詢點(diǎn)經(jīng)緯度、查詢方位、返回結(jié)果個(gè)數(shù)k和關(guān)鍵詞集合K ;所述查詢方位包括從查詢點(diǎn)出發(fā)的兩條直線與指定坐標(biāo)軸方向的夾角范圍內(nèi)的區(qū)域。系統(tǒng)首先會(huì)獲取并解析查詢,在本申請(qǐng)涉及的查詢中,用來確定空間信息和方向感知的參數(shù)主要包括查詢點(diǎn)qgl (精確經(jīng)緯度qg.X,Qg- y)和查詢方位(通過兩個(gè)角度來定義,aMw表示初始方位與指定坐標(biāo)系X軸正方向的夾角,表示結(jié)束方位與指定坐標(biāo)系X軸正方向的夾角),所述兩個(gè)方位參數(shù)aMw和用來確定查詢的范圍,即從q點(diǎn)出發(fā),做兩條與正東方向夾角分別為aMw與的射線,查詢目標(biāo)就是從這兩條射線圍成的區(qū)域中找到滿足條件的POI點(diǎn)。該方位參數(shù)可以通過移動(dòng)設(shè)備上的感應(yīng)設(shè)備獲得(例如GPS定位,陀螺儀等),也可以由用戶通過電腦等終端給定。本申請(qǐng)請(qǐng)求中還包括兩個(gè)參數(shù)分別是:整數(shù)k用于確定返回的結(jié)果數(shù),關(guān)鍵詞集合K用于確定關(guān)鍵詞這一約束條件。在獲取并解析完用戶端的請(qǐng)求后,即可根據(jù)請(qǐng)求在系統(tǒng)中檢索查詢。在步驟NI中獲得了用戶自定義參數(shù):qg.x,qg.y,[ a Mw,β Mw],k,K,具體定義見步驟NI中描述,可以利用前述步驟中的索引結(jié)構(gòu)1^^和LkiP獲得符合用戶需求的查詢結(jié)果集:Pqk,結(jié)果集k個(gè)POI點(diǎn)組成,這k個(gè)POI點(diǎn):①都能覆蓋K中包含的所有關(guān)鍵詞;②并且位于由qg.x、qg.y和[a raw,βΓΜ]確定的查詢區(qū)域中,記這個(gè)區(qū)域?yàn)镽g。在所有滿足①②條件的點(diǎn)中,這k個(gè)點(diǎn)是距離查詢位置(qg.X,Qg.Y)最近的k個(gè)點(diǎn)。具體的查詢過程通過以下幾個(gè)步驟完成:步驟N2,創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Q1^P QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和興趣點(diǎn)。創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Q1^P QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和POI點(diǎn),鍵值(key)為q到相應(yīng)區(qū)域(具體計(jì)算方式會(huì)在后面的步驟中提及)和POI點(diǎn)(歐氏距離)的距離,初始化為空。用變量dk記錄Qp中第k小的元素對(duì)應(yīng)的鍵值,即當(dāng)前top-k的閾值。步驟N3,根據(jù)所述查詢方位將所述查詢分解到相應(yīng)各坐標(biāo)系地圖中。根據(jù)索引的建立方式及計(jì)算的簡(jiǎn)便性,根據(jù)查詢所覆蓋的區(qū)域?qū)⑵浞纸獾組apn(1 ≤ n ≤ 4)中,以下的描述中用[α,β ]表示在某一個(gè)Map中查詢的初始方位和結(jié)束方位,α,β的角度是相對(duì)于相應(yīng)Mapn的X軸正半軸:①若0≤α≤β≤π/2,則用Map1中的索引執(zhí)行查詢,查詢?yōu)镼1 = {(q.x,q.y);[α,β ] ;Κ ;k} , [ α,β ] = [ α raw,β raw];②若31/2彡α彡β彡π,則用Map2中的索引執(zhí)行查詢,查詢?yōu)閝2 = {(q.x,q.y) ; [ α,β ] ;K ;k},[ α,β ] = [ a raw- Ji /2,β raw_ π /2];③若Ji彡α彡β彡3 JI/2,則用Map3中的索引執(zhí)行查詢,查詢?yōu)閝3 = {(q.x,
q.y) ; [ α,β ] ;K ;k} , [ α,β ] = [ a raw- Ji,β raw- Ji ];④若3 /2彡α彡β彡2 π,則用Map4中的索引執(zhí)行查詢,查詢?yōu)閝4 = {(q.x,q.y) ; [ α,β ] ;K ;k},[ α,β ] = [ a raw-3 π /2,β raw_3 π /2]。對(duì)于更加復(fù)雜的情況,我們可以將其分解為前面四種基本查詢的組合,例如
、[π/2, π ) Π [ α , β]、[π,3π/2) Π [ α , β]、[3π/2,2π) Π [ α ,
β]等,最后將分解后的查詢結(jié)果綜合。通過上述分解方法,可將[α,β]都統(tǒng)一到
這個(gè)區(qū)間上,并且與Mapn上的索引吻合,這樣在查詢時(shí),只需對(duì)其附加一個(gè)和η相關(guān)的屬性,所有的查詢就可以統(tǒng)一處理。步驟Ν4,計(jì)算查詢點(diǎn)與相應(yīng)各坐標(biāo)系地圖原點(diǎn)的距離,根據(jù)所述距離確定查詢點(diǎn)所在環(huán)區(qū)域并將其加入Qk中;其中,Qe中的區(qū)域按距離遠(yuǎn)點(diǎn)的距離從近至遠(yuǎn)排序。在步驟Ν3進(jìn)行查詢分解以后,需要對(duì)進(jìn)行查詢定位。對(duì)于每 個(gè)qn(l4),在對(duì)應(yīng)Map中為查詢定位,即確定分解后的查詢位置所在的區(qū)域RA加入Qk中,鍵值為O。計(jì)算dist(qnl,O)后可根據(jù)每個(gè)Mapn中的r1; r2,...,
rN 二分查找。步驟N5,按順序遍歷%中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn)。只要Qk不為空,則還有潛在的可行解需要繼續(xù)探查。通過步驟N4已經(jīng)獲得初始化的Qk,按序遍歷Qk中元素(區(qū)域)。所述按序?yàn)榘凑站嚯x原點(diǎn)從近至遠(yuǎn)的距離。每次獲得隊(duì)頭元素(區(qū)域)Ri"1,在這個(gè)區(qū)域中查找。先確定可能包含滿足條件的解的子區(qū)域,然后再到每一個(gè)子區(qū)域中查找。由于每次處理qn,只需要調(diào)用Mapn對(duì)應(yīng)的索引,所以查詢統(tǒng)一用q=Iqi = (q.x, q.y) ; [ α , β ] ;Κ ;k}表示,Mapn 統(tǒng)一用 Map 表示,qnl 與[α,β ]確定的查詢區(qū)域用R表示。優(yōu)選的,通過如下步驟按順序遍歷Qk中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn):步驟N51,從Qk中取出第一個(gè)區(qū)域Ri,獲得從q到Ri的距離最小值MINDIST (q,Ri);步驟N52,當(dāng)MINDIST (q,Ri)彡dk,則將當(dāng)前Qp中的前k個(gè)滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn)作為查找結(jié)果;所述dk記錄Qp中第k小的興趣點(diǎn)到查詢點(diǎn)的距離;從Qk中取出第一個(gè)元素Ri,獲得從9到Ri的距離最小值MINDIST (q,Ri),即用于維護(hù)優(yōu)先級(jí)隊(duì)列的鍵值。若MINDIST (q,Ri) ^ dk,表明當(dāng)前Qp中的前k個(gè)元素就是滿足關(guān)鍵詞與方向約束的用于返回給用戶的top-k個(gè)解,Qe中還未被探查到的剩余區(qū)域不可能產(chǎn)生更優(yōu)的解,搜索結(jié)束。否則,繼續(xù)執(zhí)行步驟N53。步驟N53,當(dāng)MINDIST(QiRi) < dk,通過利用方位信息對(duì)Ri中的子區(qū)域剪枝和判斷查詢點(diǎn)q到子區(qū)域民」的最短距離是否小于等于dk兩個(gè)剪枝策略剪去不可能產(chǎn)生可行興趣點(diǎn)的子區(qū)域,并根據(jù)剪枝完畢的結(jié)果中查詢滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn)。在民中剪去不可能產(chǎn)生可行解的子區(qū)域,即返回Ri中需要進(jìn)一步搜索以獲得結(jié)果的子區(qū)域集合CKin,集合有序。具體的剪枝策略包括:(I)利用方位信息對(duì)Ri中的子區(qū)域剪枝。記qe為查詢位置q與X軸正半軸的夾角,q/Yq/i)為從q出發(fā),沿α (β)方向的射線與Ri外側(cè)邊界(半徑為巧的圓弧)的交點(diǎn)。連接q/Yq/i)與原點(diǎn)0,記連線與X軸正方向的夾角為θ^(θ^)。通過0q,與θ,,,可以大致確定R與Ri相交區(qū)域的角度范圍[τ嚴(yán),τ:],其中τ嚴(yán)=min ( Θ q/i,qe),xuEi = min(0q/i,q0)。從索引結(jié)構(gòu)的定義與建立可知,對(duì)于所有Ri,」e Ri,區(qū)域中的POI點(diǎn)與X軸正半軸的夾角范圍是[Qi, j+ Qi,」),因此,若Θιη〉τ:或Θμ< τ嚴(yán),Ri,」中的任何POI點(diǎn)都不可能在R內(nèi),即不可能是查詢q的解。(2)判斷查詢點(diǎn)q到子區(qū)域Rm的最短距離是否小于等于dk。每個(gè)子區(qū)域Rm,都是圓環(huán)的一部分,它與q的相對(duì)位置,決定了從q到Rm的最短距離。下面給出一種點(diǎn)到子區(qū)域的最短距離的計(jì)算·方式。設(shè)Ri的內(nèi)側(cè)邊界(即半徑為IV1的圓弧)與外側(cè)邊界(即半徑為A的圓弧)將Ri分為三部分,位于Ri內(nèi)側(cè)的部分記為Ri<,位于Ri外側(cè)的部分記為Ri>。記Ri,」右下角的點(diǎn)為P1-^1, q與Pm, ^之間的連線與X軸正半軸的夾角為Θ (q, P1-!,j-:),從q出發(fā)沿α ( β )方向的射線與Ri的內(nèi)側(cè)圓弧的交點(diǎn)為(q/^),從q出發(fā)沿α (β)方向的射線與從O出發(fā)沿的射線的交點(diǎn)為qa 0i^qfZi'(W),從q出發(fā)沿qe方向的射線與Ri內(nèi)側(cè)圓弧的交點(diǎn)為與q之間的距離為qd。由幾何知識(shí)可以得到表一中的最短距離公式:
權(quán)利要求
1.一種空間方向感知地圖興趣點(diǎn)搜索方法,其特征在于,包括: 步驟NI,接收用戶查詢請(qǐng)求,所述請(qǐng)求包括查詢點(diǎn)經(jīng)緯度、查詢方位、返回結(jié)果個(gè)數(shù)k和關(guān)鍵詞集合K ;所述查詢方位包括從查詢點(diǎn)出發(fā)的兩條直線與指定坐標(biāo)軸方向的夾角范圍內(nèi)的區(qū)域; 步驟N2,創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Q1^P QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和興趣占.步驟N3,根據(jù)所述查詢方位將所述查詢分解到相應(yīng)各坐標(biāo)系地圖中; 步驟N4,計(jì)算查詢點(diǎn)與相應(yīng)各坐標(biāo)系地圖原點(diǎn)的距離,根據(jù)所述距離確定查詢點(diǎn)所在環(huán)區(qū)域并將其加入Qk中;其中,Qe中的區(qū)域按距離遠(yuǎn)點(diǎn)的距離從近至遠(yuǎn)排序; 步驟N5,按順序遍歷Qk中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn); 步驟N6,將查找結(jié)果返回至用戶端;所述查找結(jié)果包括Qp中滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn); 其中,所述索引通過如下步驟構(gòu)建: 步驟M1,獲取地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)O,建立四個(gè)坐標(biāo)系地圖,并調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性至與另外一個(gè)坐標(biāo)系地圖屬性相同;其中所述地圖信息包括各興趣點(diǎn)在經(jīng)緯度和各興趣點(diǎn)的關(guān)鍵詞集合; 步驟M2,針對(duì)每一個(gè)坐標(biāo)系地圖,以所述原點(diǎn)為圓心,按照到原點(diǎn)的距離,通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域Ri (I ( i SN),所述每個(gè)環(huán)區(qū)域包括的興趣點(diǎn)個(gè)數(shù)相似; 步驟M3,針對(duì)所述 切分后的每個(gè)區(qū)域,通過沿半徑方向多條直線將所述環(huán)區(qū)域切分為M個(gè)子區(qū)域,所述每個(gè)子區(qū)域中包括的興趣點(diǎn)個(gè)數(shù)相似;并計(jì)算每個(gè)興趣點(diǎn)與指定正半軸夾角,和每個(gè)子區(qū)域各興趣點(diǎn)所在的夾角范圍[Qi,p,其中Θ i, Μ)表示Bi,j (I ^ j ^ Μ)中的角度最小點(diǎn)的角度; 步驟M4,關(guān)鍵詞h到包括該關(guān)鍵詞的子區(qū)域的倒排索引LkiK,并建立關(guān)鍵詞h到包括該關(guān)鍵詞的興趣點(diǎn)的倒排索引Lkip ;所述子區(qū)域與該子區(qū)域的所述興趣點(diǎn)對(duì)應(yīng)并且所述兩個(gè)索引序關(guān)系相同,所述序關(guān)系按照距原點(diǎn)的從近到遠(yuǎn)排序;所述各子區(qū)域中興趣點(diǎn)按與特征方向正半軸的夾角排序。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過如下步驟調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性與另外一個(gè)坐標(biāo)系地圖屬性相同: 以地圖左下角頂點(diǎn)為原點(diǎn),正東方向?yàn)閄軸正方向,正北方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map1 ; 以地圖右下角頂點(diǎn)為原點(diǎn),正北方向?yàn)閄軸正方向,正西方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map2 ; 以地圖右上角頂點(diǎn)為原點(diǎn),正西方向?yàn)閄軸正方向,正南方向?yàn)閅軸正方向建立坐標(biāo)系地圖Map3 ; 以地圖左上角頂點(diǎn)為原點(diǎn),正南方向?yàn)閄軸正方向,正東方向?yàn)閥軸正方向建立坐標(biāo)系地圖Map4。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,通過以下步驟通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域: 將有序的P個(gè)興趣點(diǎn)P1, p2,...,Pp7均勻放入N個(gè)不相交的集合中Bi,每個(gè)集合Bi ={Ρ( -1)ΧΛ+1 …,piXA},I 彡 i 彡 N-1 ;其中,所述的 λ = [ρ/Ν]; 計(jì)算Bi中(I ^ i ^ N)的點(diǎn)到原點(diǎn)O的最短距離Iv1 ; 以O(shè)為圓心,T1, r2,..., Iv1為半徑作N-1個(gè)1/4圓環(huán),得到N個(gè)環(huán)區(qū)域R1, R2,...,RN。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于: 如果存在dist(pAXi+1,0) = dist(pAXi,0),則將ρλΧ +1放入Bi中,否則放入Bi+1中;其中所述(Iist(PyO)表示興趣點(diǎn)Pi到原點(diǎn)O的距離。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,通過以下步驟計(jì)算每個(gè)子區(qū)域的各興趣點(diǎn)所在的夾角范圍: 獲取每個(gè)子區(qū)域中與X軸正方向夾角最小的興趣點(diǎn),和與X軸正方向夾角最大的興趣占.將與X軸正方向夾角最小的興趣點(diǎn)的夾角作為該子區(qū)域的夾角范圍下限,并根據(jù)該子區(qū)域相鄰的下一個(gè)子區(qū)域的下界確定該子區(qū)域的上限。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,通過以下步驟根據(jù)所述查詢方位將所述查詢轉(zhuǎn)換到相應(yīng)坐標(biāo)系地圖中: 計(jì)算從查詢點(diǎn)出發(fā)的初始方位直線與特定坐標(biāo)系地圖的X軸正半軸的夾角α和結(jié)束方位直線與特定坐標(biāo)系地圖的X軸正半軸的夾角β ; 將所述兩條直線的夾角范圍[α,β ]分解統(tǒng)一到相應(yīng)
區(qū)間的坐標(biāo)系地圖上。
7.根據(jù)權(quán)利要求1、2、3之一所述的方法,其特征在于通過如下步驟按順序遍歷Qk中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn): 步驟N51,從Qe中取出第一個(gè)區(qū)域Ri,獲得從q到Ri的距離最小值MINDIST (q,Ri); 步驟N52,當(dāng)MINDIST (q,Ri) ^ dk,則將當(dāng)前Qp中的前k個(gè)滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn)作為查找結(jié)果;所述dk記錄Qp中第k小的興趣點(diǎn)到查詢點(diǎn)的距離; 步驟N53,當(dāng)MINDIST(QiRi) < dk,通過利用方位信息對(duì)Ri中的子區(qū)域剪枝和判斷查詢點(diǎn)q到子區(qū)域民」的最短距離是否小于等于dk兩個(gè)剪枝策略剪去不可能產(chǎn)生可行興趣點(diǎn)的子區(qū)域,并根據(jù)剪枝完畢的結(jié)果中查詢滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,通過如下步驟通過利用方位信息對(duì)Ri中的子區(qū)域剪枝和判斷查詢點(diǎn)q到子區(qū)域Ru的最短距離是否小于等于dk兩個(gè)剪枝策略剪去不可能產(chǎn)生可行興趣點(diǎn)的子區(qū)域,并根據(jù)剪枝完畢的結(jié)果中查詢k個(gè)滿足關(guān)鍵詞與方向約束的最小的k個(gè)興趣點(diǎn): 步驟N531,計(jì)算方位信息覆蓋區(qū)域R與所述Ri的相交區(qū)域的角度范圍[τ嚴(yán),τ uKi],獲取Ri中Θ 彡τ嚴(yán)且Θ i, η ( τ嚴(yán)的子區(qū)域Ri, j ; 步驟Ν532,對(duì)關(guān)鍵詞集合K中的每個(gè)關(guān)鍵詞ki;獲取對(duì)應(yīng)的子區(qū)域倒排索引LkiK,對(duì)其求交獲得包含所有關(guān)鍵詞的子區(qū)域LkK = H kie KLkiE ; 步驟N533,計(jì)算獲得同時(shí)滿足區(qū)域與關(guān)鍵詞約束的子區(qū)域Ι^κ[α,β] =RiLa,β] H LkE;步驟N534,遍歷Ri,j e RiIa,β ],如果MINDIST (q,Riij)彡dk,則剪掉該子區(qū)域,否則,將Ru加入到子區(qū)域集合CKim中; 步驟N535,遍歷步驟N534中得到的CKim中的每一個(gè)子區(qū)域Ri,」,如果MINDIST (q,Ri,P彡dk,停止遍歷,否則,在Riij中查找可行興趣點(diǎn); 步驟N536,對(duì)所有K中關(guān)鍵詞ki;獲得它在Ry中對(duì)應(yīng)的興趣點(diǎn)倒排索引LkipO^j); 步驟N537,計(jì)算所有關(guān)鍵詞對(duì)應(yīng)的倒排列表的交集,即包含所有K中關(guān)鍵詞的興趣點(diǎn)Lk —門 ki e K^ki (Ri, j); 步驟N538,驗(yàn)證步驟N537中得到L/中的興趣點(diǎn)P是否滿足范圍約束,如果是,判斷該點(diǎn)P是否dist (P, q)小于dk,如果dist (p,q) < dk,則將它加入到優(yōu)先級(jí)隊(duì)列Qp中,并更新dk ; 步驟N539,判斷查詢點(diǎn)q到Ri+1的最小距離MINDIST (q,Ri+1)是否小于dk,如果MINDIST (q,Ri+1) < dk,則將Ri+1加入Qe中,并轉(zhuǎn)入步驟N51。
9.一種空間方向感知地圖興趣點(diǎn)搜索裝置,其特征在于,包括: 請(qǐng)求接收模塊,接收用戶查詢請(qǐng)求,所述請(qǐng)求包括查詢點(diǎn)經(jīng)緯度、查詢方位、返回結(jié)果個(gè)數(shù)k和關(guān)鍵詞集合K ;所述查詢方位包括從查詢點(diǎn)出發(fā)的兩條直線與指定坐標(biāo)軸方向的夾角徂圍內(nèi)的區(qū)域; 隊(duì)列創(chuàng)建模塊,創(chuàng)建兩個(gè)優(yōu)先級(jí)隊(duì)列Q1^P QP,分別用于存放有待進(jìn)一步探查的子區(qū)域和興趣點(diǎn); 查詢分解模塊,根據(jù)所述查詢方位將所述查詢分解到相應(yīng)各坐標(biāo)系地圖中; 查詢定位模塊,計(jì)算查詢點(diǎn)與相應(yīng)各坐標(biāo)系地圖原點(diǎn)的距離,根據(jù)所述距離確定查詢點(diǎn)所在環(huán)區(qū)域并將其加入Qk中;其中,Qe中的區(qū)域按距離原點(diǎn)的距離從近至遠(yuǎn)排序; 興趣點(diǎn)查詢模塊,按順序遍歷Qk中的區(qū)域,并根據(jù)索引查找符合查詢方位覆蓋區(qū)域、關(guān)鍵詞集合K條件的k個(gè)興趣點(diǎn); 結(jié)果返回模塊,將查找結(jié)果返回至用戶端;所述查找結(jié)果包括Qp中滿足關(guān)鍵詞與方向約束的距查詢點(diǎn)距離最小的k個(gè)興趣點(diǎn); 其中,所述索引通過如下模塊構(gòu)建: 地圖信息獲取模塊,獲取地圖信息,分別以地圖平面中的四個(gè)頂點(diǎn)作為坐標(biāo)原點(diǎn)O,建立四個(gè)坐標(biāo)系地圖,并調(diào)整其中三個(gè)坐標(biāo)系地圖的屬性至與另外一個(gè)坐標(biāo)系地圖屬性相同;其中所述地圖信息包括各興趣點(diǎn)在經(jīng)緯度和各興趣點(diǎn)的關(guān)鍵詞集合; 徑向區(qū)域切分模塊,針對(duì)每一個(gè)坐標(biāo)系地圖,以所述原點(diǎn)為圓心,按照到原點(diǎn)的距離,通過N個(gè)1/4圓環(huán)將所述坐標(biāo)系地圖切分為N個(gè)環(huán)區(qū)域Ri (I < i < N),所述每個(gè)環(huán)區(qū)域包括的興趣點(diǎn)個(gè)數(shù)相似; 弧度區(qū)域切分模塊,針對(duì)所述切分后的每個(gè)區(qū)域,通過沿半徑方向多條直線將所述環(huán)區(qū)域切分為M個(gè)子區(qū)域,所述每個(gè)子區(qū)域中包括的興趣點(diǎn)個(gè)數(shù)相似;并計(jì)算每個(gè)興趣點(diǎn)與指定正半軸夾角,和每個(gè)子區(qū)域各興趣點(diǎn)所在的夾角范圍[Qi,^), Qi,P,其中0UH)表示Ri, j (I彡j彡Μ)中的角度最小點(diǎn)的角度; 索引建立模塊,關(guān)鍵詞ki到包括該關(guān)鍵詞的子區(qū)域的倒排索引LkiK,并建立關(guān)鍵詞Ici到包括該關(guān)鍵詞的興趣點(diǎn)的倒排索引Lkip ;所述子區(qū)域與該子區(qū)域的所述興趣點(diǎn)對(duì)應(yīng)并且所述兩個(gè)索引序關(guān)系相同,所述序關(guān)系按照距原點(diǎn)的從近到遠(yuǎn)排序;所述各子區(qū)域中興趣點(diǎn)按與特征方向正半軸 的夾角排序。
全文摘要
本申請(qǐng)?zhí)峁┝艘环N空間方向感知地圖興趣點(diǎn)搜索方法和系統(tǒng),涉及地圖搜索領(lǐng)域。本申請(qǐng)通過以地圖平面中的四個(gè)頂點(diǎn)為坐標(biāo)原點(diǎn),以地圖平面中從各原點(diǎn)出發(fā)的相鄰兩條邊為軸建立四個(gè)坐標(biāo)系地圖;對(duì)于每個(gè)坐標(biāo)系地圖按POI點(diǎn)的位置先進(jìn)行徑向區(qū)域切分,然后進(jìn)行弧向區(qū)域切分,使切分完畢的每個(gè)子區(qū)域包括相似的POI點(diǎn)個(gè)數(shù),然后再針對(duì)子區(qū)域地圖和各POI點(diǎn)分別建立索引;其中,因?yàn)槭前凑請(qǐng)A的方式劃分的子區(qū)域,所以可以很方便的得到各POI點(diǎn)的相對(duì)指定坐標(biāo)系坐標(biāo)軸的角度,和子區(qū)域的角度范圍。如此,對(duì)于用戶端帶有方位信息的請(qǐng)求,即可根據(jù)索引的構(gòu)建方法方便快捷的查詢到符合方位信息的POI點(diǎn)。
文檔編號(hào)G06F17/30GK103150309SQ20111040279
公開日2013年6月12日 申請(qǐng)日期2011年12月7日 優(yōu)先權(quán)日2011年12月7日
發(fā)明者李國(guó)良, 黃維篁, 馮建華 申請(qǐng)人:清華大學(xué)