本發(fā)明涉及一種時(shí)空距離計(jì)算系統(tǒng)及方法,特別是涉及一種基于哈希區(qū)域映射的時(shí)空距離計(jì)算系統(tǒng)及方法。
背景技術(shù):
現(xiàn)有的利用地理位置信息進(jìn)行空間分析的系統(tǒng)中,常常會(huì)遇到求取某一連通域內(nèi)兩點(diǎn)間最短路徑和相應(yīng)的距離這類問題,通常上使用的歐氏距離對(duì)此有較大的局限性,其原因在于定義區(qū)域中兩點(diǎn)之間的距離時(shí),只考慮了兩點(diǎn)之間的抽象距離;現(xiàn)有的散列存儲(chǔ)算法效率較低、硬件資源消耗較高,已無法滿足大數(shù)據(jù)下海量的數(shù)據(jù)的存儲(chǔ)和計(jì)算。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種基于哈希區(qū)域映射的時(shí)空距離計(jì)算系統(tǒng)及方法,其能夠采用快速HASH算法,提高測(cè)地距離的準(zhǔn)確度,高效低耗。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:一種基于哈希區(qū)域映射的時(shí)空距離計(jì)算系統(tǒng),其包括地理位置數(shù)據(jù)庫模塊、網(wǎng)格劃分器、網(wǎng)格距離計(jì)算引擎模塊、快速HASH計(jì)算引擎模塊、網(wǎng)格定位器、查詢引擎模塊、點(diǎn)與點(diǎn)的測(cè)地距離模塊、分布式緩存模塊,網(wǎng)格劃分器、網(wǎng)格定位器都與地理位置數(shù)據(jù)庫模塊相連,網(wǎng)格距離計(jì)算引擎模塊位于網(wǎng)格劃分器和快速HASH計(jì)算引擎模塊之間,快速HASH計(jì)算引擎模塊與分布式緩存模塊相連,分布式緩存模塊、點(diǎn)與點(diǎn)的測(cè)地距離模塊都與查詢引擎模塊相連,查詢引擎模塊與網(wǎng)格定位器相連。
優(yōu)選地,所述網(wǎng)格劃分器用網(wǎng)格表達(dá)地理位置動(dòng)態(tài)時(shí)空變化的規(guī)律,根據(jù)經(jīng)緯度或坐標(biāo)位置以及海拔信息,將規(guī)劃區(qū)域劃分為更粗粒度的網(wǎng)格,并賦予唯一的網(wǎng)格編號(hào)以用于后續(xù)的計(jì)算。
優(yōu)選地,所述網(wǎng)格距離計(jì)算引擎模塊是針對(duì)非障礙物的網(wǎng)格,計(jì)算兩兩網(wǎng)格之間的測(cè)地距離;網(wǎng)格距離計(jì)算引擎模塊的輸入為成對(duì)的網(wǎng)格經(jīng)緯度和海拔高度,輸出為兩個(gè)網(wǎng)格間的實(shí)際測(cè)地距離。
優(yōu)選地,所述快速HASH計(jì)算引擎模塊采用HighwayHash算法。
優(yōu)選地,所述HighwayHash算法利用CPU的AVX-2、SIMD指令每次處理32字節(jié)數(shù)據(jù),根據(jù)輸入的256位秘鑰和變長參數(shù)計(jì)算出64-256位的哈希值,以網(wǎng)格ID為Key,將兩兩網(wǎng)格距離快速散列存儲(chǔ)到相應(yīng)存儲(chǔ)介質(zhì)中,以便于快速查詢。
優(yōu)選地,所述網(wǎng)格定位器是根據(jù)地理位置的經(jīng)緯度或者坐標(biāo)位置,將其定位至網(wǎng)格劃分器劃分好的相應(yīng)網(wǎng)格,也根據(jù)輸入的經(jīng)緯度或坐標(biāo)位置計(jì)算出對(duì)應(yīng)的網(wǎng)格。
優(yōu)選地,所述查詢引擎模塊是根據(jù)網(wǎng)格定位器的計(jì)算結(jié)果,按照網(wǎng)格ID,通過快速HASH找出要計(jì)算的點(diǎn)的測(cè)地距離作為最終距離。
本發(fā)明還提供一種基于哈希區(qū)域映射的時(shí)空距離計(jì)算方法,其包括以下步驟:
步驟一,使用網(wǎng)格規(guī)劃區(qū)域內(nèi)的點(diǎn),通過網(wǎng)格劃分器將規(guī)劃區(qū)劃分為多個(gè)網(wǎng)格,根據(jù)區(qū)域性質(zhì)和用戶密度適當(dāng)調(diào)整,網(wǎng)格大小在0.2-2平方公里之間,以網(wǎng)格為單位,用于描述或表達(dá)其中的屬性分類、統(tǒng)計(jì)分級(jí)以及變化參數(shù);
步驟二,針對(duì)非障礙物網(wǎng)格,計(jì)算兩兩之間的測(cè)地距離;通過網(wǎng)格距離計(jì)算引擎計(jì)算非障礙物的網(wǎng)格之間的測(cè)地距離;
步驟三,以網(wǎng)格位置作為key,通過快速HASH存入內(nèi)存或硬盤桶中;通過快速HASH計(jì)算引擎,將步驟二的計(jì)算結(jié)果存儲(chǔ)到存儲(chǔ)介質(zhì)中;
步驟四,計(jì)算某兩個(gè)點(diǎn)距離時(shí),通過網(wǎng)格計(jì)算對(duì)應(yīng)的點(diǎn)的網(wǎng)格位置;根據(jù)位置的經(jīng)緯度,通過網(wǎng)格定位器,將其定位到對(duì)應(yīng)的網(wǎng)格位置;
步驟五,根據(jù)網(wǎng)格位置,通過快速HASH找出要計(jì)算的點(diǎn)的測(cè)地距離作為最終距離;根據(jù)兩點(diǎn)的網(wǎng)格位置,通過查詢引擎查詢出步驟二中的相對(duì)應(yīng)網(wǎng)格間的測(cè)地距離作為最終結(jié)果。
本發(fā)明的積極進(jìn)步效果在于:本發(fā)明能夠采用快速HASH算法,提高測(cè)地距離的準(zhǔn)確度,高效低耗。
附圖說明
圖1為本發(fā)明的結(jié)構(gòu)示意圖。
圖2為本發(fā)明的流程圖。
具體實(shí)施方式
下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說明本發(fā)明的技術(shù)方案。
如圖1所示,本發(fā)明基于哈希區(qū)域映射的時(shí)空距離計(jì)算系統(tǒng)包括地理位置數(shù)據(jù)庫模塊、網(wǎng)格劃分器、網(wǎng)格距離計(jì)算引擎模塊、快速HASH(哈希)計(jì)算引擎模塊、網(wǎng)格定位器、查詢引擎模塊、點(diǎn)與點(diǎn)的測(cè)地距離模塊、分布式緩存模塊,網(wǎng)格劃分器、網(wǎng)格定位器都與地理位置數(shù)據(jù)庫模塊相連,網(wǎng)格距離計(jì)算引擎模塊位于網(wǎng)格劃分器和快速HASH計(jì)算引擎模塊之間,快速HASH計(jì)算引擎模塊與分布式緩存模塊相連,分布式緩存模塊、點(diǎn)與點(diǎn)的測(cè)地距離模塊都與查詢引擎模塊相連,查詢引擎模塊與網(wǎng)格定位器相連。
所述網(wǎng)格劃分器用網(wǎng)格表達(dá)地理位置動(dòng)態(tài)時(shí)空變化的規(guī)律,即用于描述或表達(dá)地理位置的屬性分類、統(tǒng)計(jì)分級(jí)以及變化參數(shù)等;根據(jù)經(jīng)緯度或坐標(biāo)位置以及海拔信息,將規(guī)劃區(qū)域劃分為更粗粒度的網(wǎng)格,并賦予唯一的網(wǎng)格編號(hào)以用于后續(xù)的計(jì)算;根據(jù)市政道路、河流、鐵路等作為邊界線,將住宅小區(qū)、校園、城中村以及商業(yè)圈等將規(guī)劃的區(qū)域劃分成網(wǎng)格。
所述網(wǎng)格距離計(jì)算引擎模塊是針對(duì)非障礙物的網(wǎng)格,計(jì)算兩兩網(wǎng)格之間的測(cè)地距離;網(wǎng)格距離計(jì)算引擎模塊的輸入為成對(duì)的網(wǎng)格經(jīng)緯度(或坐標(biāo)位置)和海拔高度,輸出為兩個(gè)網(wǎng)格間的實(shí)際測(cè)地距離。
所述快速HASH計(jì)算引擎模塊采用HighwayHash(高效哈希)算法,其特點(diǎn)為高吞吐量、低硬件消耗。
所述HighwayHash算法利用CPU(Central Processing Unit,中央處理器)的AVX-2(指令集)、SIMD(Single Instruction Multiple Data,單指令多數(shù)據(jù)流)指令每次處理32字節(jié)(Byte)數(shù)據(jù),根據(jù)輸入的256位秘鑰和變長參數(shù)計(jì)算出64-256位的哈希值,以網(wǎng)格ID(identification,身份證)為Key(鑰匙),將兩兩網(wǎng)格距離快速散列存儲(chǔ)到相應(yīng)存儲(chǔ)介質(zhì)中(如Reids(數(shù)據(jù)庫)),以便于快速查詢。
所述網(wǎng)格定位器是根據(jù)地理位置的經(jīng)緯度或者坐標(biāo)位置,將其定位至網(wǎng)格劃分器劃分好的相應(yīng)網(wǎng)格,也根據(jù)輸入的經(jīng)緯度或坐標(biāo)位置計(jì)算出對(duì)應(yīng)的網(wǎng)格。
所述查詢引擎模塊是根據(jù)網(wǎng)格定位器的計(jì)算結(jié)果,按照網(wǎng)格ID,通過快速HASH找出要計(jì)算的點(diǎn)的測(cè)地距離作為最終距離。
如圖2所示,本發(fā)明基于哈希區(qū)域映射的時(shí)空距離計(jì)算方法包括以下步驟:
步驟一,使用網(wǎng)格規(guī)劃區(qū)域內(nèi)的點(diǎn),通過網(wǎng)格劃分器將規(guī)劃區(qū)劃分為多個(gè)網(wǎng)格(賦予唯一網(wǎng)格編號(hào)),網(wǎng)格以市政道路、河流、鐵路等作為邊界圍成獨(dú)立區(qū)域,住宅小區(qū)、大學(xué)校園、居委會(huì)、城中村等可單獨(dú)劃為一個(gè)網(wǎng)格,可根據(jù)區(qū)域性質(zhì)和用戶密度適當(dāng)調(diào)整,網(wǎng)格大小在0.2-2平方公里之間,以網(wǎng)格為單位,用于描述或表達(dá)其中的屬性分類、統(tǒng)計(jì)分級(jí)以及變化參數(shù)等,即在地圖上表達(dá)動(dòng)態(tài)時(shí)空變化的規(guī)律;
步驟二,針對(duì)非障礙物網(wǎng)格,計(jì)算兩兩之間的測(cè)地距離;通過網(wǎng)格距離計(jì)算引擎計(jì)算非障礙物的網(wǎng)格之間的測(cè)地距離;
步驟三,以網(wǎng)格位置作為key,通過快速HASH存入內(nèi)存或硬盤桶中;通過快速HASH計(jì)算引擎,將步驟二的計(jì)算結(jié)果存儲(chǔ)到存儲(chǔ)介質(zhì)(建議使用分布式緩存,例如Redis)中;
步驟四,計(jì)算某兩個(gè)點(diǎn)距離時(shí),通過網(wǎng)格計(jì)算對(duì)應(yīng)的點(diǎn)的網(wǎng)格位置;根據(jù)位置的經(jīng)緯度,通過網(wǎng)格定位器,將其定位到對(duì)應(yīng)的網(wǎng)格位置;
步驟五,根據(jù)網(wǎng)格位置,通過快速HASH找出要計(jì)算的點(diǎn)的測(cè)地距離作為最終距離;根據(jù)兩點(diǎn)的網(wǎng)格位置,通過查詢引擎查詢出步驟二中的相對(duì)應(yīng)網(wǎng)格間的測(cè)地距離作為最終結(jié)果。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的解決的技術(shù)問題、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。