本發(fā)明涉及電子地圖技術(shù)領(lǐng)域,尤其涉及一種地圖點(diǎn)位聚合方法及裝置。
背景技術(shù):
在電子地圖上通常用一個(gè)幾何點(diǎn)來表示一個(gè)真實(shí)空間中的地理位置,該幾何點(diǎn)叫做地理點(diǎn)位或者點(diǎn)位要素,簡稱點(diǎn)位。在某個(gè)區(qū)域上常常包含成千上萬個(gè)點(diǎn)位。如果將所有的點(diǎn)位直接顯示出來,這些點(diǎn)位會(huì)覆蓋掉地圖底圖,讓用戶感覺電子地圖非常紛亂。因此,需要將多個(gè)普通的點(diǎn)位聚合成一個(gè)代表性的聚合點(diǎn)位,然后將代表性的聚合點(diǎn)位顯示給用戶。
目前大部分電子地圖廠商均提供了包含點(diǎn)位聚合功能的地圖應(yīng)用程序編程接口api,它們基本上都采用了javascript語言來實(shí)現(xiàn),而這種語言是一種前端語言技術(shù),因此在面臨較大數(shù)量的點(diǎn)位要素的情況下,聚合算法的計(jì)算量十分巨大,會(huì)給客戶端造成很大的負(fù)荷,有可能引發(fā)客戶端的崩潰或者卡頓,系統(tǒng)的穩(wěn)定性較差,嚴(yán)重影響了用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
為此,本發(fā)明的第一個(gè)目的在于提出一種地圖點(diǎn)位聚合方法,用于解決現(xiàn)有技術(shù)中聚合算法計(jì)算量大,導(dǎo)致客戶端穩(wěn)定性差,用戶體驗(yàn)差的問題。
本發(fā)明的第二個(gè)目的在于提出一種地圖點(diǎn)位聚合裝置。
本發(fā)明的第三個(gè)目的在于提出另一種地圖點(diǎn)位聚合裝置。
本發(fā)明的第四個(gè)目的在于提出一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
本發(fā)明的第五個(gè)目的在于提出一種計(jì)算機(jī)程序產(chǎn)品。
為達(dá)上述目的,本發(fā)明第一方面實(shí)施例提出了一種地圖點(diǎn)位聚合方法,包括:
接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,所述地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;
根據(jù)所述待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到所述待聚合的地圖中的點(diǎn)位信息;所述點(diǎn)位信息包括:點(diǎn)位的經(jīng)緯度坐標(biāo);
對所述點(diǎn)位的經(jīng)緯度坐標(biāo)進(jìn)行哈希計(jì)算,獲取所述點(diǎn)位信息對應(yīng)的哈希值;
根據(jù)所述層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與所述層級(jí)信息對應(yīng)的n值;
將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,所述小組的標(biāo)識(shí)為所述前n位;所述小組的點(diǎn)位信息為根據(jù)所述前n位計(jì)算得到的點(diǎn)位信息;
將所述各個(gè)小組的點(diǎn)位信息發(fā)送給所述客戶端,以使所述客戶端在所述待聚合的地圖上顯示所述各個(gè)小組的點(diǎn)位信息。
本發(fā)明實(shí)施例的地圖點(diǎn)位聚合方法,通過接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息,并進(jìn)行哈希計(jì)算獲取對應(yīng)的哈希值;根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值;將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中并計(jì)算小組的點(diǎn)位信息,將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。本實(shí)施例中,服務(wù)端通過結(jié)合層級(jí)信息對應(yīng)的n值以及待添加到待聚合的地圖中的點(diǎn)位信息對應(yīng)的哈希值,對添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行聚合分組并提供給客戶端,降低了客戶端的計(jì)算量,提高了計(jì)算速度,避免了客戶端的崩潰或卡頓,降低了傳輸數(shù)據(jù)量,提高了客戶端用戶的使用體驗(yàn)。
為達(dá)上述目的,本發(fā)明第二方面實(shí)施例提出了一種地圖點(diǎn)位聚合裝置,包括:
接收模塊,用于接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,所述地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;
第一查詢模塊,用于根據(jù)所述待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到所述待聚合的地圖中的點(diǎn)位信息;所述點(diǎn)位信息包括:點(diǎn)位的經(jīng)緯度坐標(biāo);
第一計(jì)算模塊,用于對所述點(diǎn)位的經(jīng)緯度坐標(biāo)進(jìn)行哈希計(jì)算,獲取所述點(diǎn)位信息對應(yīng)的哈希值;
第二查詢模塊,用于根據(jù)所述層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與所述層級(jí)信息對應(yīng)的n值;
聚合模塊,用于將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,所述小組的標(biāo)識(shí)為所述前n位;所述小組的點(diǎn)位信息為根據(jù)所述前n位計(jì)算得到的點(diǎn)位信息;
發(fā)送模塊,用于將所述各個(gè)小組的點(diǎn)位信息發(fā)送給所述客戶端,以使所述客戶端在所述待聚合的地圖上顯示所述各個(gè)小組的點(diǎn)位信息。
本發(fā)明實(shí)施例的地圖點(diǎn)位聚合裝置,通過接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息,并進(jìn)行哈希計(jì)算獲取對應(yīng)的哈希值;根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值;將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中并計(jì)算小組的點(diǎn)位信息,將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。本實(shí)施例中,服務(wù)端通過結(jié)合層級(jí)信息對應(yīng)的n值以及待添加到待聚合的地圖中的點(diǎn)位信息對應(yīng)的哈希值,對添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行聚合分組并提供給客戶端,降低了客戶端的計(jì)算量,提高了計(jì)算速度,避免了客戶端的崩潰或卡頓,降低了傳輸數(shù)據(jù)量,提高了客戶端用戶的使用體驗(yàn)。
為達(dá)上述目的,本發(fā)明第三方面實(shí)施例提出了另一種地圖點(diǎn)位聚合裝置,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如上所述的地圖點(diǎn)位聚合方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明第四方面實(shí)施例提出了一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述存儲(chǔ)介質(zhì)中的指令被處理器執(zhí)行時(shí),實(shí)現(xiàn)如上所述的方法。
為達(dá)上述目的,本發(fā)明第五方面實(shí)施例提出了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)所述計(jì)算機(jī)程序產(chǎn)品中的指令處理器執(zhí)行時(shí),執(zhí)行一種地圖點(diǎn)位聚合方法,所述方法包括:
接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,所述地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;
根據(jù)所述待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到所述待聚合的地圖中的點(diǎn)位信息;所述點(diǎn)位信息包括:點(diǎn)位的經(jīng)緯度坐標(biāo);
對所述點(diǎn)位的經(jīng)緯度坐標(biāo)進(jìn)行哈希計(jì)算,獲取所述點(diǎn)位信息對應(yīng)的哈希值;
根據(jù)所述層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與所述層級(jí)信息對應(yīng)的n值;
將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,所述小組的標(biāo)識(shí)為所述前n位;所述小組的點(diǎn)位信息為根據(jù)所述前n位計(jì)算得到的點(diǎn)位信息;
將所述各個(gè)小組的點(diǎn)位信息發(fā)送給所述客戶端,以使所述客戶端在所述待聚合的地圖上顯示所述各個(gè)小組的點(diǎn)位信息。
本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1為本發(fā)明實(shí)施例提供的一種地圖點(diǎn)位聚合方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合方法的流程示意圖;
圖3為本發(fā)明實(shí)施例提供的一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
下面參考附圖描述本發(fā)明實(shí)施例的地圖點(diǎn)位聚合方法及裝置。
圖1為本發(fā)明實(shí)施例提供的一種地圖點(diǎn)位聚合方法的流程示意圖。如圖1所示,該地圖點(diǎn)位聚合方法包括以下步驟:
s101、接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息。
本發(fā)明提供的地圖點(diǎn)位聚合方法的執(zhí)行主體為地圖點(diǎn)位聚合裝置,地圖點(diǎn)位聚合裝置具體可以為與客戶端對應(yīng)的服務(wù)端或者服務(wù)端上的軟件或者硬件??蛻舳死缡謾C(jī)、pad、觸摸顯示屏等,或者其他可以顯示地圖的終端或者顯示屏等。
本實(shí)施例中,客戶端用戶在打開地圖軟件或者在瀏覽器中瀏覽地圖,以查詢附近的美食、超市或者其他信息時(shí),客戶端獲取當(dāng)前地圖的標(biāo)識(shí),以及當(dāng)前地圖的層級(jí)信息,將當(dāng)前地圖的標(biāo)識(shí)和層級(jí)信息發(fā)送給服務(wù)端。
其中,一般情況下,地圖的層級(jí)可以分為1至18級(jí)。
s102、根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息;點(diǎn)位信息包括:點(diǎn)位的經(jīng)緯度坐標(biāo)。
本實(shí)施例中,預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫中可以包括各個(gè)實(shí)體的點(diǎn)位信息,例如人、車、建筑物等物理實(shí)體的點(diǎn)位信息。地圖點(diǎn)位聚合裝置根據(jù)待聚合的地圖的標(biāo)識(shí)可以確定待聚合的地圖上點(diǎn)位所需要滿足的條件,采用所述條件查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,就可以獲取到待添加到待聚合的地圖中的點(diǎn)位信息。點(diǎn)位數(shù)據(jù)庫可以預(yù)先保存在服務(wù)端或者其他硬件設(shè)備上,以便查詢。
s103、對點(diǎn)位的經(jīng)緯度坐標(biāo)進(jìn)行哈希計(jì)算,獲取點(diǎn)位信息對應(yīng)的哈希值。
其中,進(jìn)行哈希計(jì)算的算法可以為geohash算法。geohash算法可以將二維的經(jīng)緯度坐標(biāo)轉(zhuǎn)換成字符串,比如北京幾個(gè)城區(qū)的字符串可以為wx4er、wx4g2、wx4g3等等,每一個(gè)字符串代表了某一矩形區(qū)域。也就是說,這個(gè)矩形區(qū)域內(nèi)所有的點(diǎn)位都共享相同的geohash字符串,這樣比較容易做緩存。
s104、根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值。
其中,n值指的是點(diǎn)位信息對應(yīng)的哈希值的前n位相同位數(shù)。
本實(shí)施例中,預(yù)設(shè)的地圖層級(jí)映射表可以如表1所示。
表1
s105、將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,小組的標(biāo)識(shí)為前n位;小組的點(diǎn)位信息為根據(jù)前n位計(jì)算得到的點(diǎn)位信息。
本實(shí)施例中,將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,在待聚合的地圖上只顯示小組的點(diǎn)位信息,而不顯示小組中的各個(gè)點(diǎn)位信息,從而減少電子地圖中顯示的點(diǎn)位的數(shù)量。
s106、將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。
進(jìn)一步地,在圖1所示實(shí)施例的基礎(chǔ)上,地圖點(diǎn)位聚合請求中還攜帶:客戶端當(dāng)前的視窗范圍。步驟106之前,所述的方法還可以包括:根據(jù)客戶端當(dāng)前的視窗范圍,確定可以顯示到視窗范圍中的待顯示的小組。對應(yīng)的,步驟106具體可以為,將待顯示的小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)待顯示的小組的點(diǎn)位信息。
本實(shí)施例中,當(dāng)前的視窗范圍中可以包括:客戶端當(dāng)前視窗的四個(gè)角的經(jīng)緯度坐標(biāo)。根據(jù)四個(gè)角的經(jīng)緯度坐標(biāo),地圖點(diǎn)位聚合裝置就可以根據(jù)點(diǎn)位信息中的經(jīng)緯度坐標(biāo)確定可以顯示到視窗范圍中的待顯示的小組,并發(fā)送給客戶端進(jìn)行顯示。
另外,還需要進(jìn)行說明的是,為了提高服務(wù)端的處理速度,還可以對點(diǎn)位信息等的處理進(jìn)行分布式處理,即將點(diǎn)位信息分成幾個(gè)大組,由不同的處理器進(jìn)行分布式處理,提高處理速度。因此,步驟103之前,所述的方法還可以包括:對待添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行分組,得到至少一個(gè)大組;對所述至少一個(gè)大組依次執(zhí)行步驟103至步驟105,針對每個(gè)大組中的點(diǎn)位信息進(jìn)行聚合處理,得到對應(yīng)標(biāo)識(shí)為前n位的各個(gè)小組的點(diǎn)位信息。對應(yīng)的,步驟105之后,所述的方法還可以包括:對各個(gè)大組中具備相同標(biāo)識(shí)的小組進(jìn)行合并。然后再執(zhí)行步驟106。
本發(fā)明實(shí)施例的地圖點(diǎn)位聚合方法,通過接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息,并進(jìn)行哈希計(jì)算獲取對應(yīng)的哈希值;根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值;將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中并計(jì)算小組的點(diǎn)位信息,將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。本實(shí)施例中,服務(wù)端通過結(jié)合層級(jí)信息對應(yīng)的n值以及待添加到待聚合的地圖中的點(diǎn)位信息對應(yīng)的哈希值,對添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行聚合分組并提供給客戶端,降低了客戶端的計(jì)算量,提高了計(jì)算速度,避免了客戶端的崩潰或卡頓,降低了傳輸數(shù)據(jù)量,提高了客戶端用戶的使用體驗(yàn)。
圖2為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合方法的流程示意圖,如圖2所示,在圖1所示實(shí)施例的基礎(chǔ)上,步驟101之前,還可以包括:
s107、獲取待聚合的地圖的所有層級(jí)信息以及點(diǎn)位信息樣本。
其中,點(diǎn)位信息樣本中可以包括提前收集的部分點(diǎn)位信息。
s108、針對待聚合的地圖的各個(gè)層級(jí)信息,獲取待聚合的地圖的各個(gè)區(qū)域的點(diǎn)位信息。
本實(shí)施例中,針對待聚合的地圖,層級(jí)不同,劃分得到的區(qū)域不同。例如,層級(jí)較低時(shí),可能劃分得到北京市、上海市、廣州市等等。層級(jí)較高時(shí),可能劃分得到大興區(qū)、豐臺(tái)區(qū)、海淀區(qū)、朝陽區(qū)等等。層級(jí)越高,劃分越詳細(xì),劃分得到的區(qū)域越小。
s109、計(jì)算點(diǎn)位信息樣本中各個(gè)點(diǎn)位信息與各個(gè)區(qū)域的點(diǎn)位信息之間的誤差。
本實(shí)施例中,步驟109具體可以包括:計(jì)算獲取點(diǎn)位信息樣本中各點(diǎn)位信息對應(yīng)的哈希值;計(jì)算獲取各個(gè)區(qū)域的點(diǎn)位信息對應(yīng)的哈希值;由于哈希值為多位二維碼,將點(diǎn)位信息樣本中點(diǎn)位信息對應(yīng)的哈希值與區(qū)域的樣本信息對應(yīng)的哈希值做差值處理,得到點(diǎn)位信息樣本中各個(gè)點(diǎn)位信息與各個(gè)區(qū)域的點(diǎn)位信息之間的誤差。
s110、根據(jù)誤差確定各個(gè)點(diǎn)位信息所屬的區(qū)域。
其中,若某個(gè)點(diǎn)位信息與區(qū)域的點(diǎn)位信息之間的誤差小于預(yù)設(shè)的誤差值,則確定該點(diǎn)位信息屬于該區(qū)域;若某個(gè)點(diǎn)位信息與區(qū)域的點(diǎn)位信息之間的誤差大于或等于預(yù)設(shè)的誤差值,則確定該點(diǎn)位信息不屬于該區(qū)域。
s111、根據(jù)點(diǎn)位信息樣本中的各個(gè)點(diǎn)位信息以及點(diǎn)位信息所屬的區(qū)域,確定各個(gè)層級(jí)信息對應(yīng)的待聚合的地圖中各個(gè)點(diǎn)位信息與所屬區(qū)域的點(diǎn)位信息的前n位相同位數(shù)。
本實(shí)施例中,針對各個(gè)層級(jí)信息,將點(diǎn)位信息樣本中的點(diǎn)位信息的哈希值與所屬區(qū)域的點(diǎn)位信息的哈希值進(jìn)行比對,確定從哈希值前部開始完全且連續(xù)相同的位數(shù),綜合點(diǎn)位信息樣本中的各個(gè)點(diǎn)位信息得到的該位數(shù),確定各個(gè)層級(jí)信息對應(yīng)的n值。具體的,可以將點(diǎn)位信息樣本中的各個(gè)點(diǎn)位信息得到的該位數(shù)中,最小的位數(shù)確定為n值。
s112、將層級(jí)信息與n值的映射關(guān)系存儲(chǔ)到地圖層級(jí)映射表中。
本發(fā)明實(shí)施例的地圖點(diǎn)位聚合方法,通過先結(jié)合待聚合的地圖的所有層級(jí)信息以及點(diǎn)位信息樣本,獲取地圖層級(jí)映射表;然后接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息,并進(jìn)行哈希計(jì)算獲取對應(yīng)的哈希值;根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值;將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中并計(jì)算小組的點(diǎn)位信息,將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。本實(shí)施例中,服務(wù)端通過結(jié)合層級(jí)信息對應(yīng)的n值以及待添加到待聚合的地圖中的點(diǎn)位信息對應(yīng)的哈希值,對添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行聚合分組并提供給客戶端,降低了客戶端的計(jì)算量,提高了計(jì)算速度,避免了客戶端的崩潰或卡頓,降低了傳輸數(shù)據(jù)量,提高了客戶端用戶的使用體驗(yàn)。
圖3為本發(fā)明實(shí)施例提供的一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖。如圖3所示,包括:接收模塊31、第一查詢模塊32、第一計(jì)算模塊33、第二查詢模塊34、聚合模塊35和發(fā)送模塊36。
其中,接收模塊31,用于接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,所述地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;
第一查詢模塊32,用于根據(jù)所述待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到所述待聚合的地圖中的點(diǎn)位信息;所述點(diǎn)位信息包括:點(diǎn)位的經(jīng)緯度坐標(biāo);
第一計(jì)算模塊33,用于對所述點(diǎn)位的經(jīng)緯度坐標(biāo)進(jìn)行哈希計(jì)算,獲取所述點(diǎn)位信息對應(yīng)的哈希值;
第二查詢模塊34,用于根據(jù)所述層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與所述層級(jí)信息對應(yīng)的n值;
聚合模塊35,用于將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,所述小組的標(biāo)識(shí)為所述前n位;所述小組的點(diǎn)位信息為根據(jù)所述前n位計(jì)算得到的點(diǎn)位信息;
發(fā)送模塊36,用于將所述各個(gè)小組的點(diǎn)位信息發(fā)送給所述客戶端,以使所述客戶端在所述待聚合的地圖上顯示所述各個(gè)小組的點(diǎn)位信息。
本發(fā)明提供的地圖點(diǎn)位聚合裝置具體可以為與客戶端對應(yīng)的服務(wù)端或者服務(wù)端上的軟件或者硬件。客戶端例如手機(jī)、pad、觸摸顯示屏等,或者其他可以顯示地圖的終端或者顯示屏等。
本實(shí)施例中,預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫中可以包括各個(gè)實(shí)體的點(diǎn)位信息,例如人、車、建筑物等物理實(shí)體的點(diǎn)位信息。地圖點(diǎn)位聚合裝置根據(jù)待聚合的地圖的標(biāo)識(shí)可以確定待聚合的地圖上點(diǎn)位所需要滿足的條件,采用所述條件查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,就可以獲取到待添加到待聚合的地圖中的點(diǎn)位信息。點(diǎn)位數(shù)據(jù)庫可以預(yù)先保存在服務(wù)端或者其他硬件設(shè)備上,以便查詢。
其中,進(jìn)行哈希計(jì)算的算法可以為geohash算法。geohash算法可以將二維的經(jīng)緯度坐標(biāo)轉(zhuǎn)換成字符串,比如北京幾個(gè)城區(qū)的字符串可以為wx4er、wx4g2、wx4g3等等,每一個(gè)字符串代表了某一矩形區(qū)域。也就是說,這個(gè)矩形區(qū)域內(nèi)所有的點(diǎn)位都共享相同的geohash字符串,這樣比較容易做緩存。
本發(fā)明實(shí)施例的地圖點(diǎn)位聚合裝置,通過接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息,并進(jìn)行哈希計(jì)算獲取對應(yīng)的哈希值;根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值;將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中并計(jì)算小組的點(diǎn)位信息,將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。本實(shí)施例中,服務(wù)端通過結(jié)合層級(jí)信息對應(yīng)的n值以及待添加到待聚合的地圖中的點(diǎn)位信息對應(yīng)的哈希值,對添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行聚合分組并提供給客戶端,降低了客戶端的計(jì)算量,提高了計(jì)算速度,避免了客戶端的崩潰或卡頓,降低了傳輸數(shù)據(jù)量,提高了客戶端用戶的使用體驗(yàn)。
進(jìn)一步地,結(jié)合參考圖4,在圖3所示實(shí)施例的基礎(chǔ)上,所述的裝置還可以包括:分組模塊37、處理模塊38和合并模塊39。
其中,分組模塊37,用于對待添加到所述待聚合的地圖中的點(diǎn)位信息進(jìn)行分組,得到至少一個(gè)大組;
處理模塊38,用于針對每個(gè)大組中的點(diǎn)位信息進(jìn)行聚合處理,得到對應(yīng)標(biāo)識(shí)為前n位的各個(gè)小組的點(diǎn)位信息;
合并模塊39,用于對所述各個(gè)大組中具備相同標(biāo)識(shí)的小組進(jìn)行合并。
進(jìn)一步地,結(jié)合參考圖5,在圖3所示實(shí)施例的基礎(chǔ)上,所述的裝置還可以包括:第一獲取模塊40、第二獲取模塊41、第二計(jì)算模塊42、第一確定模塊43、第二確定模塊44和存儲(chǔ)模塊45。
其中,第一獲取模塊40,用于獲取待聚合的地圖的所有層級(jí)信息以及點(diǎn)位信息樣本;
第二獲取模塊41,用于針對所述待聚合的地圖的各個(gè)層級(jí)信息,獲取所述待聚合的地圖的各個(gè)區(qū)域的點(diǎn)位信息;
第二計(jì)算模塊42,用于計(jì)算點(diǎn)位信息樣本中各個(gè)點(diǎn)位信息與各個(gè)區(qū)域的點(diǎn)位信息之間的誤差;
第一確定模塊43,用于根據(jù)所述誤差確定各個(gè)點(diǎn)位信息所屬的區(qū)域;
第二確定模塊44,用于根據(jù)點(diǎn)位信息樣本中的各個(gè)點(diǎn)位信息以及點(diǎn)位信息所屬的區(qū)域,確定各個(gè)層級(jí)信息對應(yīng)的待聚合的地圖中各個(gè)點(diǎn)位信息與所屬區(qū)域的點(diǎn)位信息的前n位相同位數(shù);
存儲(chǔ)模塊45,用于將所述層級(jí)信息與所述n值的映射關(guān)系存儲(chǔ)到所述地圖層級(jí)映射表中。
本實(shí)施例中,第二計(jì)算模塊42具體用于,計(jì)算獲取點(diǎn)位信息樣本中各點(diǎn)位信息對應(yīng)的哈希值;計(jì)算獲取各個(gè)區(qū)域的點(diǎn)位信息對應(yīng)的哈希值;由于哈希值為多位二維碼,將點(diǎn)位信息樣本中點(diǎn)位信息對應(yīng)的哈希值與區(qū)域的樣本信息對應(yīng)的哈希值做差值處理,得到點(diǎn)位信息樣本中各個(gè)點(diǎn)位信息與各個(gè)區(qū)域的點(diǎn)位信息之間的誤差。
本實(shí)施例中,針對各個(gè)層級(jí)信息,將點(diǎn)位信息樣本中的點(diǎn)位信息的哈希值與所屬區(qū)域的點(diǎn)位信息的哈希值進(jìn)行比對,確定從哈希值前部開始完全且連續(xù)相同的位數(shù),綜合點(diǎn)位信息樣本中的各個(gè)點(diǎn)位信息得到的該位數(shù),確定各個(gè)層級(jí)信息對應(yīng)的n值。具體的,可以將點(diǎn)位信息樣本中的各個(gè)點(diǎn)位信息得到的該位數(shù)中,最小的位數(shù)確定為n值。
本發(fā)明實(shí)施例的地圖點(diǎn)位聚合裝置,通過先結(jié)合待聚合的地圖的所有層級(jí)信息以及點(diǎn)位信息樣本,獲取地圖層級(jí)映射表;然后接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;根據(jù)待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到待聚合的地圖中的點(diǎn)位信息,并進(jìn)行哈希計(jì)算獲取對應(yīng)的哈希值;根據(jù)層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與層級(jí)信息對應(yīng)的n值;將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中并計(jì)算小組的點(diǎn)位信息,將各個(gè)小組的點(diǎn)位信息發(fā)送給客戶端,以使客戶端在待聚合的地圖上顯示各個(gè)小組的點(diǎn)位信息。本實(shí)施例中,服務(wù)端通過結(jié)合層級(jí)信息對應(yīng)的n值以及待添加到待聚合的地圖中的點(diǎn)位信息對應(yīng)的哈希值,對添加到待聚合的地圖中的點(diǎn)位信息進(jìn)行聚合分組并提供給客戶端,降低了客戶端的計(jì)算量,提高了計(jì)算速度,避免了客戶端的崩潰或卡頓,降低了傳輸數(shù)據(jù)量,提高了客戶端用戶的使用體驗(yàn)。
進(jìn)一步地,結(jié)合參考圖6,在圖3所示實(shí)施例的基礎(chǔ)上,所述地圖點(diǎn)位聚合請求中還攜帶:所述客戶端當(dāng)前的視窗范圍。
對應(yīng)的,所述的裝置還可以包括:第三確定模塊46,用于根據(jù)所述客戶端當(dāng)前的視窗范圍,確定可以顯示到所述視窗范圍中的待顯示的小組;
所述發(fā)送模塊36,具體用于將所述待顯示的小組的點(diǎn)位信息發(fā)送給所述客戶端,以使所述客戶端在所述待聚合的地圖上顯示各個(gè)待顯示的小組的點(diǎn)位信息。
本實(shí)施例中,當(dāng)前的視窗范圍中可以包括:客戶端當(dāng)前視窗的四個(gè)角的經(jīng)緯度坐標(biāo)。根據(jù)四個(gè)角的經(jīng)緯度坐標(biāo),地圖點(diǎn)位聚合裝置就可以根據(jù)點(diǎn)位信息中的經(jīng)緯度坐標(biāo)確定可以顯示到視窗范圍中的待顯示的小組,并發(fā)送給客戶端進(jìn)行顯示。
圖7為本發(fā)明實(shí)施例提供的另一種地圖點(diǎn)位聚合裝置的結(jié)構(gòu)示意圖。該地圖點(diǎn)位聚合裝置包括:
存儲(chǔ)器1001、處理器1002及存儲(chǔ)在存儲(chǔ)器1001上并可在處理器1002上運(yùn)行的計(jì)算機(jī)程序。
處理器1002執(zhí)行所述程序時(shí)實(shí)現(xiàn)上述實(shí)施例中提供的地圖點(diǎn)位聚合方法。
進(jìn)一步地,地圖點(diǎn)位聚合裝置還包括:
通信接口1003,用于存儲(chǔ)器1001和處理器1002之間的通信。
存儲(chǔ)器1001,用于存放可在處理器1002上運(yùn)行的計(jì)算機(jī)程序。
存儲(chǔ)器1001可能包含高速ram存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。
處理器1002,用于執(zhí)行所述程序時(shí)實(shí)現(xiàn)上述實(shí)施例所述的地圖點(diǎn)位聚合方法。
如果存儲(chǔ)器1001、處理器1002和通信接口1003獨(dú)立實(shí)現(xiàn),則通信接口1003、存儲(chǔ)器1001和處理器1002可以通過總線相互連接并完成相互間的通信。所述總線可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(industrystandardarchitecture,簡稱為isa)總線、外部設(shè)備互連(peripheralcomponent,簡稱為pci)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(extendedindustrystandardarchitecture,簡稱為eisa)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖7中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
可選的,在具體實(shí)現(xiàn)上,如果存儲(chǔ)器1001、處理器1002及通信接口1003,集成在一塊芯片上實(shí)現(xiàn),則存儲(chǔ)器1001、處理器1002及通信接口1003可以通過內(nèi)部接口完成相互間的通信。
處理器1002可能是一個(gè)中央處理器(centralprocessingunit,簡稱為cpu),或者是特定集成電路(applicationspecificintegratedcircuit,簡稱為asic),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。
本實(shí)施例還提供一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的地圖點(diǎn)位聚合方法。
本實(shí)施例還提供一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)所述計(jì)算機(jī)程序產(chǎn)品中的指令處理器執(zhí)行時(shí),執(zhí)行一種地圖點(diǎn)位聚合方法,所述方法包括:
接收客戶端發(fā)送的地圖點(diǎn)位聚合請求,所述地圖點(diǎn)位聚合請求中攜帶:待聚合的地圖的標(biāo)識(shí)以及層級(jí)信息;
根據(jù)所述待聚合的地圖的標(biāo)識(shí)查詢預(yù)設(shè)的點(diǎn)位數(shù)據(jù)庫,獲取待添加到所述待聚合的地圖中的點(diǎn)位信息;所述點(diǎn)位信息包括:點(diǎn)位的經(jīng)緯度坐標(biāo);
對所述點(diǎn)位的經(jīng)緯度坐標(biāo)進(jìn)行哈希計(jì)算,獲取所述點(diǎn)位信息對應(yīng)的哈希值;
根據(jù)所述層級(jí)信息查詢預(yù)設(shè)的地圖層級(jí)映射表,確定與所述層級(jí)信息對應(yīng)的n值;
將對應(yīng)的哈希值前n位相同的點(diǎn)位信息聚合到一個(gè)小組中,所述小組的標(biāo)識(shí)為所述前n位;所述小組的點(diǎn)位信息為根據(jù)所述前n位計(jì)算得到的點(diǎn)位信息;
將所述各個(gè)小組的點(diǎn)位信息發(fā)送給所述客戶端,以使所述客戶端在所述待聚合的地圖上顯示所述各個(gè)小組的點(diǎn)位信息。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。在本發(fā)明的描述中,“多個(gè)”的含義是至少兩個(gè),例如兩個(gè),三個(gè)等,除非另有明確具體的限定。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)定制邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲(chǔ)器(ram),只讀存儲(chǔ)器(rom),可擦除可編輯只讀存儲(chǔ)器(eprom或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤只讀存儲(chǔ)器(cdrom)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時(shí)以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。如,如果用硬件來實(shí)現(xiàn)和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實(shí)施例進(jìn)行變化、修改、替換和變型。