一種地理編碼方法、位置查詢系統(tǒng)及方法
【專利摘要】本發(fā)明公開(kāi)了一種地理編碼方法,包括:a.根據(jù)預(yù)設(shè)查詢范圍確定編碼精度;b.進(jìn)行第i劃分,將地球表面劃分成多個(gè)子區(qū)域,并進(jìn)行編號(hào),對(duì)每個(gè)子區(qū)域繼續(xù)劃分編號(hào),直至劃分出的每個(gè)子區(qū)域與編碼精度相關(guān);c.獲取指定地理位置落入的相應(yīng)子區(qū)域的編號(hào)并判斷是否落在相應(yīng)子區(qū)域的邊界區(qū)域,編碼得到一維的第i地理編碼和第i邊界標(biāo)識(shí);b~c重復(fù)N次,使得對(duì)任意指定地理位置都至少有一個(gè)中心區(qū)域的邊界標(biāo)識(shí);d.組合所述N個(gè)地理編碼和邊界標(biāo)識(shí)。本發(fā)明還公開(kāi)了一種采用所述地理編碼方法的位置查詢系統(tǒng)及方法。本發(fā)明適合于實(shí)時(shí)、海量的任意指定位置的預(yù)設(shè)查詢范圍和無(wú)查詢范圍的附近位置近似查詢。
【專利說(shuō)明】一種地理編碼方法、位置查詢系統(tǒng)及方法【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及位置服務(wù)領(lǐng)域,特別地涉及一種地理編碼方法、位置查詢系統(tǒng)及方法?!颈尘凹夹g(shù)】
[0002]位置服務(wù)(Location Based Services, LBS)指的是通過(guò)移動(dòng)終端、衛(wèi)星和移動(dòng)網(wǎng)絡(luò)的配合,確定用戶的實(shí)際地理位置,從而為用戶提供與位置相關(guān)的服務(wù)信息。地理編碼(Geo-coding)又稱地址匹配,是為識(shí)別點(diǎn)、線、面的位置和屬性而設(shè)置的編碼,它將全部實(shí)體按照預(yù)先擬定的分類系統(tǒng),選擇最適宜的量化方法,按實(shí)體的屬性特征和集合坐標(biāo)的數(shù)據(jù)結(jié)構(gòu)記錄在計(jì)算機(jī)的儲(chǔ)存設(shè)備上。在位置服務(wù)中,地理編碼的應(yīng)用非常廣泛,可用于空間索引、可進(jìn)行查詢排序統(tǒng)計(jì)、可作為URLs、可在地圖中顯示、還可識(shí)別信息中所包含的模式。目前常用的GIS軟件和空間數(shù)據(jù)庫(kù)都具備地理編碼功能,例如,ArcGIS的Geocoding和MapInfo 的 MapMarker 等。
[0003]geohash是一種地理編碼,它把二維的經(jīng)緯度編碼成一維的字符串。其思想為先將地球看成一個(gè)二維平面,將二維平面坐標(biāo)均分為4格,按照順序進(jìn)行編號(hào),之后再對(duì)每個(gè)子格以同樣的方式進(jìn)行劃分,得到另一編號(hào),一直按照這個(gè)規(guī)則劃分下去,最終編號(hào)越來(lái)越多,而子格越來(lái)越小,直到能表達(dá)坐標(biāo)所需要的精度為止。而在劃分之中得到的每個(gè)編號(hào)對(duì)應(yīng)一維坐標(biāo)之中的一段,這些編號(hào)最后可以編碼成一個(gè)字符串。例如,上海新天地(31.21980 121.47516)的編碼是 wtw3s5rs82。geohash 有以下幾個(gè)特點(diǎn):首先,geohash 用一個(gè)字符串表示經(jīng)度和緯度兩個(gè)坐標(biāo),只需在一列上應(yīng)用索引即可。其次,geohash表示的并不是一個(gè)點(diǎn),而是一個(gè)矩形區(qū)域。例如編碼wtw3s5rs82s,它表示的是一個(gè)矩形區(qū)域。第三,編碼的前綴可以表示更大的區(qū)域。例如編碼wtw3s5rs82,它的前綴wtw3s5rs8表示包含編碼wtw3s5rs82在內(nèi)的更大范圍。NoSQL數(shù)據(jù)庫(kù)MongoDB利用geohash進(jìn)行地理位置索引,這也是全球流行的LBS服務(wù)Foursquare選擇MongoDB的原因之一。
[0004]但是,geohash也存在一些問(wèn)題和限制:在位置服務(wù)中,附近位置查詢往往對(duì)精確度有要求,但要求不嚴(yán)格,例如,搜索附近200米內(nèi)的目標(biāo),搜到的目標(biāo)實(shí)際距離為150米或220米對(duì)用戶來(lái)說(shuō)并沒(méi)有多大區(qū)別,搜到的目標(biāo)數(shù)多幾個(gè)或少幾個(gè)對(duì)用戶來(lái)說(shuō)也沒(méi)多大問(wèn)題,因此大多采用近似查詢。由于geohash的網(wǎng)格是4分的,各次劃分間子格的邊長(zhǎng)呈2倍關(guān)系,跨度很大(例如,緯度第12~16次劃分,子格邊長(zhǎng)分別為0.02197,0.01099,0.00549、
0.00275,0.00137,0.00069度,這里保留5位小數(shù)),雖然利用前綴匹配可以進(jìn)行附近位置近似查詢,但卻無(wú)法直接實(shí)現(xiàn)指定范圍(例如,100米內(nèi)、200米內(nèi)、800米內(nèi),近似10000米/度)的附近位置近似查詢。目前的解決方法是先指定一個(gè)深度,然后將指定范圍所覆蓋的所有子格全部找出來(lái),再逐個(gè)在這些子格內(nèi)查找,但這增加了近似查詢的復(fù)雜性;深度越深,查詢?cè)骄_,查詢的復(fù)雜性也越高。
[0005]根據(jù)geohash,赤道和本初子午線兩側(cè)的位置由于從一開(kāi)始就處于不同的子格,因此即使兩個(gè)位置很近,編碼及前綴也完全不同,利用前綴匹配進(jìn)行附近位置的近似查詢無(wú)法查到。同樣是因?yàn)閯澐謫?wèn)題,處于網(wǎng)格邊界兩側(cè)的位置,即使兩個(gè)位置很近,編碼也不同,利用前綴匹配進(jìn)行附近位置近似查詢不一定查到。目前的解決方法是對(duì)當(dāng)前子格周邊8個(gè)子格都進(jìn)行計(jì)算,但這增加了近似查詢的復(fù)雜性。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明的目的是提供一種地理編碼方法和采用該地理編碼方法的位置查詢系統(tǒng)和方法,其在預(yù)先設(shè)定查詢范圍情況下,可以解決geohash的上述問(wèn)題,簡(jiǎn)單快速地實(shí)現(xiàn)任意指定位置的預(yù)設(shè)查詢范圍和無(wú)查詢范圍的附近位置近似查詢,滿足實(shí)時(shí)、海量的系統(tǒng)性能要求。
[0007]為達(dá)到上述目的,本發(fā)明采用如下的技術(shù)方案:
一種地理編碼方法,其特征在于,所述方法包括:
a.根據(jù)預(yù)先設(shè)定的查詢范圍確定編碼精度;
b.進(jìn)行第i劃分,將地球表面劃分成多個(gè)子區(qū)域,并進(jìn)行編號(hào),對(duì)每個(gè)子區(qū)域繼續(xù)劃分編號(hào),直至劃分出的每個(gè)子區(qū)域與編碼精度相關(guān);
c.獲取指定地理位置落入的相應(yīng)子區(qū)域的編號(hào)并判斷是否落在相應(yīng)子區(qū)域的邊界區(qū)域,編碼得到一維的第i地理編碼和第i邊界標(biāo)識(shí);
ITc重復(fù)N次,使得對(duì)任意指定地理位置都至少有一個(gè)中心區(qū)域的邊界標(biāo)識(shí);
d.組合所述N個(gè)地理編碼和邊界標(biāo)識(shí);
其中,i為1、的整數(shù),N為大于零的整數(shù)。
[0008]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟ITc采用的N種劃分方式為:
將地球表面近似成一個(gè)二維平面,進(jìn)行9種劃分;
每種劃分,首先將二維平面原點(diǎn)按宮格邊長(zhǎng)等于或近似等于1/3編碼精度的九宮格的各宮格固定位置進(jìn)行錯(cuò)位,再進(jìn)行首次網(wǎng)格劃分,并進(jìn)行編號(hào),之后對(duì)劃分出的每個(gè)子格遞歸進(jìn)行網(wǎng)格劃分,使得每個(gè)網(wǎng)格邊長(zhǎng)為其每個(gè)子格邊長(zhǎng)的M倍,并進(jìn)行另一編號(hào),直至劃分出的每個(gè)子格邊長(zhǎng)等于或近似等于編碼精度,獲取指定地理位置各次劃分落入的子格的編號(hào),對(duì)所得編號(hào)進(jìn)行壓縮編碼,得到一維的第i地理編碼,并判斷指定地理位置是否落在最小子格的邊界區(qū)域,得到第i邊界標(biāo)識(shí);
或者,每種劃分,首先進(jìn)行首次網(wǎng)格劃分,并進(jìn)行編號(hào),之后對(duì)劃分出的每個(gè)子格遞歸進(jìn)行網(wǎng)格劃分,使得每個(gè)網(wǎng)格邊長(zhǎng)為其每個(gè)子格邊長(zhǎng)的M倍,并進(jìn)行另一編號(hào),直至劃分出的每個(gè)子格邊長(zhǎng)等于或近似等于編碼精度,將指定地理位置在二維平面按宮格邊長(zhǎng)等于或近似等于1/3編碼精度的九宮格的各宮格固定位置進(jìn)行錯(cuò)位,獲取其各次劃分落入的子格的編號(hào),對(duì)所得編號(hào)進(jìn)行壓縮編碼,得到一維的第i地理編碼,并判斷指定地理位置是否落在最小子格的邊界區(qū)域,得到第i邊界標(biāo)識(shí);
其中,M為2~10的整數(shù)。
[0009]作為本發(fā)明的進(jìn)一步改進(jìn),所述對(duì)所得編號(hào)進(jìn)行壓縮編碼的方式為:首次網(wǎng)格劃分經(jīng)度、緯度編號(hào)各轉(zhuǎn)化為一個(gè)字符,之后網(wǎng)格劃分經(jīng)度、緯度編號(hào)合并轉(zhuǎn)化為字符。
[0010]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟a進(jìn)一步包括步驟:確定地區(qū)修正因子,根據(jù)地區(qū)修正因子調(diào)整編碼精度。
[0011]一種位置查詢系統(tǒng),包括:輸入模塊,用于獲取地理位置;輸出模塊,用于給出指定地理位置的查詢結(jié)果;其特在在于,所述系統(tǒng)進(jìn)一步包括: 編碼模塊,用于采用所述地理編碼方法根據(jù)所述系統(tǒng)預(yù)先設(shè)定的查詢范圍生成指定地理位置的地理編碼和邊界標(biāo)識(shí);
數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)所述系統(tǒng)中各地理位置的地理編碼、邊界標(biāo)識(shí)和相關(guān)信息;查詢匹配模塊,用于根據(jù)邊界標(biāo)識(shí)確定查找的第i地理編碼,在數(shù)據(jù)存儲(chǔ)模塊中查找具有與指定地理位置的第i地理編碼相同或相似的第i地理編碼的所有其它地理位置;其中,i為1、的整數(shù),N為一組地理編碼和邊界標(biāo)識(shí)的個(gè)數(shù),為大于零的整數(shù)。
[0012]作為本發(fā)明的進(jìn)一步改進(jìn),所述系統(tǒng)預(yù)先設(shè)定的查詢范圍是一個(gè)或多個(gè),每個(gè)對(duì)應(yīng)一組N個(gè)地理編碼和邊界標(biāo)識(shí)。
[0013]作為本發(fā)明的進(jìn)一步改進(jìn),所述位置查詢系統(tǒng)包含于位置匹配系統(tǒng)、提供基于位置的服務(wù)的系統(tǒng)、地理信息系統(tǒng)(GIS)或數(shù)據(jù)庫(kù)系統(tǒng)。
[0014]作為本發(fā)明的進(jìn)一步改進(jìn),所述查找采用對(duì)地理編碼HASH、快速前綴匹配。
[0015]一種位置查詢方法,其特征在于,所述方法包括:
a.采用所述地理編碼方法根據(jù)所述系統(tǒng)預(yù)先設(shè)定的查詢范圍生成所述系統(tǒng)中各地理位置的地理編碼和邊界標(biāo)識(shí)并存儲(chǔ);
b.獲取地理位置;
c.獲取該地理位置的地理編碼和邊界標(biāo)識(shí);
d.根據(jù)中心區(qū)域的邊界標(biāo)識(shí)確定查找的第i地理編碼;
e.查找具有與該地理位置的第i地理編碼相同的第i地理編碼的所有其它地理位置;
f.給出該地理位置的所述系統(tǒng)預(yù)先設(shè)定的查詢范圍的查詢結(jié)果;
其中,i為1、的整數(shù),N為一組地理編碼和邊界標(biāo)識(shí)的個(gè)數(shù),為大于零的整數(shù)。
[0016]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟e中的查找采用對(duì)地理編碼HASH匹配。
[0017]一種位置查詢方法,其特征在于,所述方法包括:
a.采用所述地理編碼方法根據(jù)所述系統(tǒng)預(yù)先設(shè)定的查詢范圍生成所述系統(tǒng)中各地理位置的地理編碼和邊界標(biāo)識(shí)并存儲(chǔ);
b.獲取地理位置;
c.獲取該地理位置的地理編碼和邊界標(biāo)識(shí);
d.確定查找的K個(gè)地理編碼;
e.查找與該地理位置的相應(yīng)地理編碼相同或相似的所有其它地理位置;
f.給出該地理位置的查詢結(jié)果;
其中,K〈=N,N為一組地理編碼和邊界標(biāo)識(shí)的個(gè)數(shù),K、N為大于零的整數(shù)。
[0018]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟e中的查找采用對(duì)地理編碼HASH、快速前綴匹配。
[0019]從本發(fā)明的技術(shù)方案可以看出,在預(yù)設(shè)查詢范圍情況下,將區(qū)域劃分至編碼精度,并增加地區(qū)修正因子消除地區(qū)誤差,使得每個(gè)子區(qū)域包含可用距離信息;由于得到的是一組一維的盡量短的地理編碼和邊界標(biāo)識(shí),且任意位置至少有一個(gè)中心區(qū)域的地理編碼,查詢時(shí)選擇該中心區(qū)域的地理編碼,使得任意位置在查詢時(shí)都是非邊界的,從而解決了geohash的邊界點(diǎn)問(wèn)題、赤道/本初子午線問(wèn)題。從而可以直接利用所述地理編碼進(jìn)行任意指定位置的預(yù)設(shè)查詢范圍和無(wú)查詢范圍的附近位置近似查詢。
[0020]本發(fā)明的有益效果是,在預(yù)設(shè)查詢范圍,對(duì)精度要求不高,但對(duì)實(shí)時(shí)性、數(shù)據(jù)量要求較高的情況下,可將任意指定位置的預(yù)設(shè)查詢范圍和無(wú)查詢范圍的附近位置查詢中的距離計(jì)算/判定直接近似轉(zhuǎn)化為所述地理編碼字符串HASH匹配、快速前綴匹配,以緊湊空間換時(shí)間,從而實(shí)現(xiàn)實(shí)時(shí)、海量的位置匹配近似查詢。
[0021]本發(fā)明的另一有益效果是,在對(duì)精度要求不高的情況下,獲取任意位置的預(yù)設(shè)查詢范圍的所述地理編碼相當(dāng)于對(duì)任意位置設(shè)定了指定范圍的地理圍欄(Geofencing),從而系統(tǒng)中的任何用戶都可以有Geofencing,并且該Geofencing可以隨用戶的位置改變而動(dòng)態(tài)改變,從而可以在此基礎(chǔ)上簡(jiǎn)單靈活地開(kāi)發(fā)多種與位置相關(guān)的功能,例如美國(guó)蘋果公司的Passbook、美國(guó)移動(dòng)支付公司Square的移動(dòng)客戶端附近商戶提醒功能。
【專利附圖】
【附圖說(shuō)明】
[0022]圖1是根據(jù)本發(fā)明的地理編碼方法的流程示意圖;
圖2是根據(jù)本發(fā)明的地理編碼方法的優(yōu)選實(shí)施方式的九宮錯(cuò)位的示意圖;
圖3是根據(jù)本發(fā)明的地理編碼方法的優(yōu)選實(shí)施方式的九宮錯(cuò)位第I種正方網(wǎng)格劃分示意圖;
圖4是根據(jù)本發(fā)明的位置查詢系統(tǒng)的結(jié)構(gòu)示意圖;
圖5是根據(jù)本發(fā)明的位置查詢方法的流程示意圖;
圖6是根據(jù)本發(fā)明的另一位置查詢方法的流程示意圖。
【具體實(shí)施方式】
[0023]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
[0024]圖1是根據(jù)本發(fā)明的地理編碼方法的流程示意圖。如圖1所示,根據(jù)本發(fā)明的地理編碼方法,包括如下步驟:
步驟11,根據(jù)預(yù)先設(shè)定的查詢范圍確定編碼精度;
步驟12,進(jìn)行第i劃分,將地球表面劃分成多個(gè)子區(qū)域,并進(jìn)行編號(hào),對(duì)每個(gè)子區(qū)域繼續(xù)劃分編號(hào),直至劃分出的每個(gè)子區(qū)域與編碼精度相關(guān);
步驟13,獲取指定地理位置落入的相應(yīng)子區(qū)域的編號(hào)并判斷是否落在相應(yīng)子區(qū)域的邊界區(qū)域,編碼得到一維的第i地理編碼和第i邊界標(biāo)識(shí);所述地理位置通常以double類型的經(jīng)緯度表示,也可是其它形式的表示,可從信息或網(wǎng)頁(yè)中分離/提取,也可由用戶指定;通常只需判斷是否落在最小子區(qū)域的邊界區(qū)域;
步驟14,將步驟12?13重復(fù)N次,使得對(duì)任意指定地理位置都至少有一個(gè)中心區(qū)域的邊界標(biāo)識(shí);
步驟15,組合所述N個(gè)地理編碼和邊界標(biāo)識(shí),并進(jìn)行壓縮存儲(chǔ);
其中,i為1、的整數(shù),N為大于零的整數(shù)。
[0025]在本發(fā)明中,步驟11,所述查詢范圍通常由系統(tǒng)預(yù)先設(shè)定,例如:100米、500米、1000米,一個(gè)或多個(gè),現(xiàn)實(shí)情形例如,美國(guó)移動(dòng)支付公司Square,在用戶與商戶距離100米內(nèi)時(shí)會(huì)推送通知給用戶,當(dāng)然它采用的是Geofencing等技術(shù)。為了能直接進(jìn)行指定范圍的近似查詢,需要根據(jù)查詢范圍確定相應(yīng)的編碼精度。眾所周知,對(duì)于兩個(gè)地理位置,在緯度相等的情況下經(jīng)度每隔0.00001度,距離相差約I米;每隔0.0001度,距離相差約10米;每隔0.0Ol度,距離相差約100米;每隔0.01度,距離相差約1000米;每隔0.1度,距離相差約10000米;在經(jīng)度相等的情況下緯度每隔0.00001度,距離相差約1.1米;每隔0.0001度,距離相差約11米;每隔0.001度,距離相差約111米;每隔0.01度,距離相差約1113米;每隔0.1度,距離相差約11132米;各經(jīng)度圈大致相等,各緯度圈不等。在精度要求不高的情況下,可以近似認(rèn)為100000*β米/度,其中,β為地區(qū)修正因子,用于修正不同地區(qū)的誤差,可以按照時(shí)區(qū)、國(guó)家、城市等進(jìn)行修正。例如:進(jìn)行100米范圍內(nèi)的近似查詢,取編碼精度為0.002度,即該地理編碼可以有200米范圍左右的誤差,其實(shí)際表示一個(gè)200米范圍左右的圓形區(qū)域,則在該區(qū)域內(nèi)的任意兩個(gè)地理位置距離都在大約200米內(nèi),在該區(qū)域內(nèi)的任意地理位置與該區(qū)域中心的距離都在大約100米內(nèi),進(jìn)一步可將該圓形區(qū)域近似為外接或內(nèi)接正方形或正多邊形區(qū)域。
[0026]在本發(fā)明中,步驟12所述劃分可采用多種方式,例如直接對(duì)球面進(jìn)行劃分,將地球表面近似成二維平面再進(jìn)行劃分,可以采用正方形、三角形、矩形、圓形、多邊形、蜂窩等等。另一方面,通過(guò)對(duì)每個(gè)子區(qū)域繼續(xù)劃分,使得不同劃分深度間子區(qū)域成倍數(shù)/函數(shù)關(guān)系,并使子區(qū)域快速達(dá)到與編碼精度相關(guān),從而獲得盡量短的地理編碼。所述子區(qū)域與編碼精度相關(guān)包括邊長(zhǎng)/半徑/對(duì)角線等于編碼精度、邊長(zhǎng)/半徑/對(duì)角線近似等于編碼精度、邊長(zhǎng)/半徑/對(duì)角線/周長(zhǎng)與編碼精度成倍數(shù)關(guān)系、邊長(zhǎng)/半徑/對(duì)角線/面積與編碼精度成函數(shù)關(guān)系等等,從而可以直接推導(dǎo)出區(qū)域內(nèi)任意兩個(gè)位置間的近似最大距離信息。
[0027]圖2是根據(jù)本發(fā)明的地理編碼方法的優(yōu)選實(shí)施方式的九宮錯(cuò)位的示意圖。如圖2所示,優(yōu)選地,在步驟12~14,采用九宮錯(cuò)位正方網(wǎng)格劃分方式:
在步驟12,將地球表面近似成一個(gè)二維平面(-180-180,-90-9()),進(jìn)行9種劃分。設(shè)置一個(gè)宮格邊長(zhǎng)等于或近似等于1/3編碼精度的正方九宮格。
[0028]第I種劃分,首先將二維平面原點(diǎn)錯(cuò)位至九宮格宮格I的指定位置,如左下角,一側(cè)偏移溢出的部分循環(huán)移入另一側(cè),經(jīng)度、緯度首次優(yōu)選地分別按(X,Y)等份進(jìn)行網(wǎng)格劃分,按照順序進(jìn)行編號(hào),同一網(wǎng)格對(duì)溢出部分和未溢出部分經(jīng)度采用相同編號(hào)、緯度采用不同編號(hào);之后對(duì)劃分出的每個(gè)子格遞歸進(jìn)行網(wǎng)格劃分,使得每個(gè)網(wǎng)格邊長(zhǎng)為其每個(gè)子格邊長(zhǎng)的M倍,每次按照順序進(jìn)行另一編號(hào),直至劃分出的每個(gè)子格邊長(zhǎng)等于或近似等于編碼精度,獲取指定地理位置各次劃分落入的子格的編號(hào),對(duì)所得編號(hào)進(jìn)行壓縮編碼,得到一維的第I地理編碼,并判斷指定地理位置是否落在最小子格的邊界區(qū)域,得到第I邊界標(biāo)識(shí);第2種劃分,首先將二維平面原點(diǎn)錯(cuò)位至九宮格宮格2的同一指定位置,如左下角,后續(xù)步驟同第I種劃分;以同樣的方式進(jìn)行第3、種劃分。
[0029]或者,第I種劃分,經(jīng)度、緯度首次優(yōu)選地分別按(Χ,y)等份進(jìn)行網(wǎng)格劃分,按照順序進(jìn)行編號(hào),同一網(wǎng)格對(duì)溢出部分和未溢出部分經(jīng)度采用相同編號(hào)、緯度采用不同編號(hào);之后對(duì)劃分出的每個(gè)子格遞歸進(jìn)行網(wǎng)格劃分,使得每個(gè)網(wǎng)格邊長(zhǎng)為其每個(gè)子格邊長(zhǎng)的M倍,每次按照順序進(jìn)行另一編號(hào),直至劃分出的每個(gè)子格邊長(zhǎng)等于或近似等于編碼精度,將指定地理位置在二維平面錯(cuò)位至九宮格宮格I的指定位置,如左下角,一側(cè)偏移溢出的部分循環(huán)移入另一側(cè),獲取其各次劃分落入的子格的編號(hào),對(duì)所得編號(hào)進(jìn)行壓縮編碼,得到一維的第I地理編碼,并判斷指定地理位置是否落在最小子格的邊界區(qū)域,得到第I邊界標(biāo)識(shí);第2種劃分,將指定地理位置在二維平面錯(cuò)位至九宮格宮格2的同一指定位置,如左下角,其它步驟同第I種劃分;以同樣的方式進(jìn)行第3、種劃分。[0030]其中,(X,Y)表示首次網(wǎng)格劃分等份,優(yōu)選地,X=360/ (PXMa ),Y=180/ (PXMa ),且Χ〈64,y〈64,以方便用ASCII字符編碼,同時(shí)方便M和a取整,且在不影響無(wú)查詢范圍的附近位置近似查詢的同時(shí)縮短地理編碼;P表示編碼精度;M表示網(wǎng)格邊長(zhǎng)與其子格邊長(zhǎng)的倍數(shù)關(guān)系,為疒10的整數(shù),如果系統(tǒng)主要進(jìn)行預(yù)設(shè)查詢范圍的附近位置近似查詢,則為了使得快速接近編碼精度從而地理編碼盡量短,M優(yōu)選10,如果系統(tǒng)同時(shí)要進(jìn)行預(yù)設(shè)查詢范圍和無(wú)查詢范圍的附近位置近似查詢,則為提高無(wú)查詢范圍的附近位置近似查詢的有效性,M優(yōu)選2 ;a為整數(shù),表示不包括首次網(wǎng)格劃分的網(wǎng)格劃分深度。
[0031]在步驟13,對(duì)獲取的相應(yīng)子區(qū)域的編號(hào)進(jìn)行壓縮編碼是為了獲得盡量短的地理編碼,形成一維編碼是為了方便字符串索引和匹配。根據(jù)九宮錯(cuò)位正方網(wǎng)格劃分優(yōu)選實(shí)施方式,優(yōu)選地,每個(gè)字節(jié)采用ASCII字符064-127(01000000-01111111)表示,由于首次網(wǎng)格劃分編號(hào)較多,經(jīng)度、緯度需各占一個(gè)字節(jié),之后網(wǎng)格劃分,經(jīng)度、緯度編號(hào)合并轉(zhuǎn)化為字符,優(yōu)選地,字節(jié)最高兩位“01”保留,當(dāng)M取10時(shí),高三位為經(jīng)度編號(hào),低三位為緯度編號(hào),當(dāng)M取2時(shí),經(jīng)度、緯度編號(hào)各一位,交錯(cuò)排列。
[0032]在步驟13,判斷指定地理位置是否落在最小子區(qū)域的邊界區(qū)域,獲取邊界標(biāo)識(shí)。根據(jù)九宮錯(cuò)位正方網(wǎng)格劃分優(yōu)選實(shí)施方式,采用如下方法:當(dāng)指定地理位置位于相應(yīng)子區(qū)域各邊中心1/3區(qū)域時(shí)認(rèn)為中心區(qū)域或者非邊界區(qū)域,置標(biāo)識(shí)為O ;超過(guò)各邊中心1/3區(qū)域時(shí)認(rèn)為邊界區(qū)域,置標(biāo)識(shí)為I ;此時(shí)的中心與邊界比為1:8。
[0033]圖3是根據(jù)本發(fā)明的地理編碼方法的優(yōu)選實(shí)施方式的九宮錯(cuò)位第I種正方網(wǎng)格劃分示意圖。如圖3所示,假設(shè)系統(tǒng)預(yù)設(shè)的查詢范圍為600米,地區(qū)修正因子β=1,則近似認(rèn)為0.00001度/米,編碼精度P為1200米即近似為0.012度,九宮格宮格邊長(zhǎng)為0.04度,M取10,不包括首次網(wǎng)格劃分的網(wǎng)格劃分深度a取3,則首次網(wǎng)格劃分等份(Χ,y)=(30,15),圖3反映的是首次劃分后進(jìn)行到劃分深度I的情形。根據(jù)該劃分,上海新天地(31.21980
121.47516)的地理編碼和邊界標(biāo)識(shí)如表1所示:
【權(quán)利要求】
1.一種地理編碼方法,其特征在于,所述方法包括: a.根據(jù)預(yù)先設(shè)定的查詢范圍確定編碼精度; b.進(jìn)行第i劃分,將地球表面劃分成多個(gè)子區(qū)域,并進(jìn)行編號(hào),對(duì)每個(gè)子區(qū)域繼續(xù)劃分編號(hào),直至劃分出的每個(gè)子區(qū)域與編碼精度相關(guān); c.獲取指定地理位置落入的相應(yīng)子區(qū)域的編號(hào)并判斷是否落在相應(yīng)子區(qū)域的邊界區(qū)域,編碼得到一維的第i地理編碼和第i邊界標(biāo)識(shí); ITc重復(fù)N次,使得對(duì)任意指定地理位置都至少有一個(gè)中心區(qū)域的邊界標(biāo)識(shí); d.組合所述N個(gè)地理編碼和邊界標(biāo)識(shí); 其中,i為1、的整數(shù),N為大于零的整數(shù)。
2.根據(jù)權(quán)利要求1所述的地理編碼方法,其特征在于,所述步驟ITc采用的N種劃分方式為: 將地球表面近似成一個(gè)二維平面,進(jìn)行9種劃分; 每種劃分,首先將二維平面原點(diǎn)按宮格邊長(zhǎng)等于或近似等于1/3編碼精度的九宮格的各宮格固定位置進(jìn)行錯(cuò)位,再進(jìn)行首次網(wǎng)格劃分,并進(jìn)行編號(hào),之后對(duì)劃分出的每個(gè)子格遞歸進(jìn)行網(wǎng)格劃分,使得 每個(gè)網(wǎng)格邊長(zhǎng)為其每個(gè)子格邊長(zhǎng)的M倍,并進(jìn)行另一編號(hào),直至劃分出的每個(gè)子格邊長(zhǎng)等于或近似等于編碼精度,獲取指定地理位置各次劃分落入的子格的編號(hào),對(duì)所得編號(hào)進(jìn)行壓縮編碼,得到一維的第i地理編碼,并判斷指定地理位置是否落在最小子格的邊界區(qū)域,得到第i邊界標(biāo)識(shí); 或者,每種劃分,首先進(jìn)行首次網(wǎng)格劃分,并進(jìn)行編號(hào),之后對(duì)劃分出的每個(gè)子格遞歸進(jìn)行網(wǎng)格劃分,使得每個(gè)網(wǎng)格邊長(zhǎng)為其每個(gè)子格邊長(zhǎng)的M倍,并進(jìn)行另一編號(hào),直至劃分出的每個(gè)子格邊長(zhǎng)等于或近似等于編碼精度,將指定地理位置在二維平面按宮格邊長(zhǎng)等于或近似等于1/3編碼精度的九宮格的各宮格固定位置進(jìn)行錯(cuò)位,獲取其各次劃分落入的子格的編號(hào),對(duì)所得編號(hào)進(jìn)行壓縮編碼,得到一維的第i地理編碼,并判斷指定地理位置是否落在最小子格的邊界區(qū)域,得到第i邊界標(biāo)識(shí); 其中,M為2~10的整數(shù)。
3.根據(jù)權(quán)利要求2所述的地理編碼方法,其特征在于,所述對(duì)所得編號(hào)進(jìn)行壓縮編碼的方式為:首次網(wǎng)格劃分經(jīng)度、緯度編號(hào)各轉(zhuǎn)化為一個(gè)字符,之后網(wǎng)格劃分經(jīng)度、緯度編號(hào)合并轉(zhuǎn)化為字符。
4.根據(jù)權(quán)利要求1所述的地理編碼方法,其特征在于,所述步驟a進(jìn)一步包括步驟:確定地區(qū)修正因子,根據(jù)地區(qū)修正因子調(diào)整編碼精度。
5.一種位置查詢系統(tǒng),包括:輸入模塊,用于獲取地理位置;輸出模塊,用于給出指定地理位置的查詢結(jié)果;其特在在于,所述系統(tǒng)進(jìn)一步包括: 編碼模塊,用于采用所述地理編碼方法根據(jù)所述系統(tǒng)預(yù)先設(shè)定的查詢范圍生成指定地理位置的地理編碼和邊界標(biāo)識(shí); 數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)所述系統(tǒng)中各地理位置的地理編碼、邊界標(biāo)識(shí)和相關(guān)信息; 查詢匹配模塊,用于根據(jù)邊界標(biāo)識(shí)確定查找的第i地理編碼,在數(shù)據(jù)存儲(chǔ)模塊中查找具有與指定地理位置的第i地理編碼相同或相似的第i地理編碼的所有其它地理位置; 其中,i為1、的整數(shù),N為一組地理編碼和邊界標(biāo)識(shí)的個(gè)數(shù),為大于零的整數(shù)。
6.根據(jù)權(quán)利要求5所述的位置查詢系統(tǒng),其特征在于,所述系統(tǒng)預(yù)先設(shè)定的查詢范圍是一個(gè)或多個(gè)。
7.根據(jù)權(quán)利要求5所述的位置查詢系統(tǒng),其特征在于,所述查找采用對(duì)地理編碼HASH、快速前綴匹配。
8.根據(jù)權(quán)利要求5所述的位置查詢系統(tǒng),其特征在于,所述位置查詢系統(tǒng)包含于位置匹配系統(tǒng)、提供基于位置的服務(wù)的系統(tǒng)、地理信息系統(tǒng)(GIS)或數(shù)據(jù)庫(kù)系統(tǒng)。
9.一種位置查詢方法,其特征在于,所述方法包括: a.采用所述地理編碼方法根據(jù)所述系統(tǒng)預(yù)先設(shè)定的查詢范圍生成所述系統(tǒng)中各地理位置的地理編碼和邊界標(biāo)識(shí)并存儲(chǔ); b.獲取地理位置; c.獲取該地理位置的地理編碼和邊界標(biāo)識(shí); d.根據(jù)中心區(qū)域的邊界標(biāo)識(shí)確定查找的第i地理編碼; e.查找具有與該地理位置的第i地理編碼相同的第i地理編碼的所有其它地理位置; f.給出該地理位置的所述系統(tǒng)預(yù)先設(shè)定的查詢范圍的查詢結(jié)果; 其中,i為1、的整數(shù),N為一組地理編碼和邊界標(biāo)識(shí)的個(gè)數(shù),為大于零的整數(shù)。
10.根據(jù)權(quán)利要求9所述的位置查詢方法,其特征在于,所述步驟e中的查找采用對(duì)地理編碼HASH匹配。
11.一種位置查詢方法,其特征在于,所述方法包括: a.采用所述地理編碼方法根據(jù)所述系統(tǒng)預(yù)先設(shè)定的查詢范圍生成所述系統(tǒng)中各地理位置的地理編碼和邊界標(biāo)識(shí)并存儲(chǔ); b.獲取地理位置; c.獲取該地理位置的地理編碼和邊界標(biāo)識(shí); d.確定查找的K個(gè)地理編碼; e.查找與該地理位置的相應(yīng)地理編碼相同或相似的所有其它地理位置; f.給出該地理位置的查詢結(jié)果; 其中,K〈=N,N為一組地理編碼和邊界標(biāo)識(shí)的個(gè)數(shù),K、N為大于零的整數(shù)。
12.根據(jù)權(quán)利要求11所述的位 置查詢方法,其特征在于,所述步驟e中的查找采用對(duì)地理編碼HASH、快速前綴匹配。
【文檔編號(hào)】G06F17/30GK103810194SQ201210446695
【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2012年11月11日 優(yōu)先權(quán)日:2012年11月11日
【發(fā)明者】劉龍 申請(qǐng)人:劉龍