本發(fā)明涉及計(jì)算機(jī)及其軟件技術(shù)領(lǐng)域,特別地涉及一種電子地圖點(diǎn)位聚合方法以及服務(wù)端裝置。
背景技術(shù):
在電子地圖上通常用一個(gè)幾何點(diǎn)來表示一個(gè)真實(shí)空間中的地理位置,該幾何點(diǎn)叫做地理點(diǎn)位或者點(diǎn)位要素,簡(jiǎ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(Application Programming Interface),它們基本上都采用了JavaScript語言來實(shí)現(xiàn)。由于JavaScript是一種前端語言技術(shù),因此在面臨較大數(shù)量的點(diǎn)位要素的情況下(例如百萬數(shù)量級(jí)點(diǎn)位要素),聚合算法的計(jì)算量十分巨大,會(huì)給前端(通常是瀏覽器)造成很大的負(fù)荷,有可能引發(fā)前端的崩潰或者卡頓,系統(tǒng)的穩(wěn)定性較差,嚴(yán)重影響了用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種穩(wěn)定可靠、用戶體驗(yàn)良好的電子地圖點(diǎn)位聚合方法以及服務(wù)端裝置。
為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種電子地圖點(diǎn)位聚合方法。
本發(fā)明的電子地圖點(diǎn)位聚合方法包括:服務(wù)端接收客戶端發(fā)送的待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù);所述服務(wù)端根據(jù)所述待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù),采用聚合算法計(jì)算得到聚合點(diǎn)坐標(biāo)集合;所述服務(wù)端將所述聚合點(diǎn)坐標(biāo)集合發(fā)送給所述客戶端。
可選地,所述聚合算法為基于方格和距離的點(diǎn)位聚合算法。
可選地,所述聚合算法參數(shù)包括坐標(biāo)類型,還包括如下的一項(xiàng)或多項(xiàng):聚合點(diǎn)顯示模式、最大聚合顯示級(jí)別、最少聚合點(diǎn)數(shù)量、外包正方形尺寸。
可選地,所述服務(wù)端將所述聚合點(diǎn)坐標(biāo)集合發(fā)送給所述客戶端的步驟包括:所述服務(wù)端將所述聚合點(diǎn)坐標(biāo)集合以json格式數(shù)據(jù)發(fā)送給所述客戶端。
可選地,在所述服務(wù)端根據(jù)所述待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù),采用聚合算法計(jì)算得到聚合點(diǎn)坐標(biāo)集合的步驟之后,還包括:分別計(jì)算所述聚合點(diǎn)坐標(biāo)集合中的各個(gè)聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量;若所述聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量小于所述最少聚合點(diǎn)數(shù)量,則從所述聚合點(diǎn)坐標(biāo)集合中刪除該聚合點(diǎn),并且將該聚合點(diǎn)對(duì)應(yīng)的所有原始待聚合點(diǎn)加入所述聚合點(diǎn)坐標(biāo)集合中。
根據(jù)本發(fā)明的另一方面,提供了一種電子地圖點(diǎn)位聚合服務(wù)端裝置。
本發(fā)明的電子地圖點(diǎn)位聚合服務(wù)端裝置包括:接收模塊,用于接收客戶端發(fā)送的待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù);計(jì)算模塊,用于根據(jù)所述待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù),采用聚合算法計(jì)算得到聚合點(diǎn)坐標(biāo)集合;發(fā)送模塊,用于將所述聚合點(diǎn)坐標(biāo)集合發(fā)送給所述客戶端。
可選地,所述聚合算法為基于方格和距離的點(diǎn)位聚合算法。
可選地,所述聚合算法參數(shù)包括坐標(biāo)類型,還包括如下的一項(xiàng)或多項(xiàng):聚合點(diǎn)顯示模式、最大聚合顯示級(jí)別、最少聚合點(diǎn)數(shù)量、外包正方形尺寸。
可選地,所述發(fā)送模塊還用于:將所述聚合點(diǎn)坐標(biāo)集合以json格式數(shù)據(jù)發(fā)送給所述客戶端。
可選地,所述計(jì)算模塊還用于:分別計(jì)算所述聚合點(diǎn)坐標(biāo)集合中的各個(gè)聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量;若所述聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量小于所述最少聚合點(diǎn)數(shù)量,則從所述聚合點(diǎn)坐標(biāo)集合中刪除該聚合點(diǎn),并且將該聚合點(diǎn)對(duì)應(yīng)的所有原始待聚合點(diǎn)加入所述聚合點(diǎn)坐標(biāo)集合中。
根據(jù)本發(fā)明的技術(shù)方案,采用后端運(yùn)行策略,將點(diǎn)位聚合運(yùn)算從前臺(tái)的客戶端轉(zhuǎn)移到后臺(tái)的服務(wù)端中,能夠提升運(yùn)算效率及穩(wěn)定性,從而提升用戶體驗(yàn)。
附圖說明
附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:
圖1是根據(jù)本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合方法的主要步驟的示意圖;
圖2是根據(jù)本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合服務(wù)端裝置的主要模塊的示意圖;
圖3是根據(jù)本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合服務(wù)端裝置的工作過程示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施方式做出說明,其中包括本發(fā)明實(shí)施方式的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,可以對(duì)這里描述的實(shí)施方式做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡(jiǎn)明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。
圖1是根據(jù)本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合方法的主要步驟的示意圖。如圖1所示,本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合方法可以主要包括如下的步驟A至步驟C。
步驟A:服務(wù)端接收客戶端發(fā)送的待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù)。
其中,待聚合點(diǎn)坐標(biāo)集合的元素就是各個(gè)待聚合的電子地圖點(diǎn)位的坐標(biāo)數(shù)據(jù)。聚合算法參數(shù)可以包括坐標(biāo)類型,還包括如下的一項(xiàng)或多項(xiàng):聚合點(diǎn)顯示模式、最大聚合顯示級(jí)別、最少聚合點(diǎn)數(shù)量、外包正方形尺寸。需要說明的是,聚合算法參數(shù)的具體內(nèi)容可以根據(jù)具體的聚合算法類型來靈活設(shè)置。例如“外包正方形尺寸”這一參數(shù)是適用于基于方格和距離的點(diǎn)位聚合算法的?!巴獍叫纬叽纭眳?shù)的釋義如下:以某個(gè)點(diǎn)為中心點(diǎn)繪制外包正方形,該外包正方形的大小就是“外包正方形尺寸”。
步驟B:服務(wù)端根據(jù)待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù),采用聚合算法計(jì)算得到聚合點(diǎn)坐標(biāo)集合。需要說明的是,步驟B中當(dāng)采用不同類型的聚合算法時(shí),相應(yīng)地,步驟A中的服務(wù)端接收不同類型的聚合算法參數(shù)。
具體地,聚合算法可以為基于方格和距離的點(diǎn)位聚合算法計(jì)算。基于方格和距離的點(diǎn)位聚合算法技術(shù)成熟,能夠兼顧計(jì)算結(jié)果準(zhǔn)確率和計(jì)算效率。
另外,聚合算法還可以為基于網(wǎng)格的點(diǎn)位聚合算法、基于距離的點(diǎn)位聚合算法或者其他類型的點(diǎn)位聚合算法。具體介紹如下:(a)基于網(wǎng)格的點(diǎn)位聚合算法:將地圖劃分成預(yù)設(shè)尺寸的正方形的網(wǎng)格(各個(gè)縮放級(jí)別對(duì)應(yīng)不同尺寸的網(wǎng)格),然后將落在對(duì)應(yīng)網(wǎng)格中的點(diǎn)聚合到該網(wǎng)格的中心位置,以網(wǎng)格的中心位置點(diǎn)為顯示聚合點(diǎn)。(b)基于距離的點(diǎn)位聚合算法:即根據(jù)兩點(diǎn)間的距離進(jìn)行聚合,對(duì)每個(gè)點(diǎn)迭代計(jì)算,如果迭代點(diǎn)的距離在某個(gè)聚合點(diǎn)的指定閥值范圍內(nèi),則聚合到該聚合點(diǎn),否則創(chuàng)建新的聚合點(diǎn)。
步驟C:服務(wù)端將聚合點(diǎn)坐標(biāo)集合發(fā)送給客戶端。
具體地,服務(wù)端可以將聚合點(diǎn)坐標(biāo)集合以json格式數(shù)據(jù)發(fā)送給客戶端。json格式數(shù)據(jù)具有通用性強(qiáng)等優(yōu)點(diǎn)。
根據(jù)本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合方法,在步驟B和步驟C之間,還可以包括如下步驟:分別計(jì)算聚合點(diǎn)坐標(biāo)集合中的各個(gè)聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量;若聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量小于最少聚合點(diǎn)數(shù)量,則從聚合點(diǎn)坐標(biāo)集合中刪除該聚合點(diǎn),并且將該聚合點(diǎn)對(duì)應(yīng)的所有原始待聚合點(diǎn)加入聚合點(diǎn)坐標(biāo)集合中。該本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合方法中,篩除了聚合原始點(diǎn)位數(shù)量不達(dá)標(biāo)的聚合點(diǎn),優(yōu)化了聚合處理結(jié)果。
本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合方法可以基于JAVA語言來實(shí)現(xiàn)。選擇JAVA語言的主要原因在于:
(1)JAVA語言具有跨平臺(tái)性和可移植性,在不同平臺(tái)上只要可以安裝JAVA虛擬機(jī)即可運(yùn)行,靈活性高,適用范圍廣。
(2)JAVA語言可以實(shí)現(xiàn)分布式部署,使得原本只能通過一臺(tái)機(jī)器進(jìn)行的聚合計(jì)算分散到多臺(tái)機(jī)器上去計(jì)算。這樣一方面可以減輕單一服務(wù)端的壓力,另一方面也提高了運(yùn)算效率,從而提高了聚合結(jié)果展示的響應(yīng)效率,提升用戶體驗(yàn)。
(3)由于JAVA語言不支持指針,一切對(duì)內(nèi)存的訪問都必須通過對(duì)象的實(shí)例變量來實(shí)現(xiàn),從而更好的防止了一些木馬的入侵,避免了指針操作中容易產(chǎn)生的錯(cuò)誤,因此使用JAVA語言能夠使本發(fā)明實(shí)施方式的點(diǎn)位聚合方法安全穩(wěn)定地運(yùn)行。
圖2是根據(jù)本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合服務(wù)端裝置的主要模塊的示意圖。如圖2所示,本發(fā)明實(shí)施方式的點(diǎn)位聚合服務(wù)端裝置20包括:接收模塊21、計(jì)算模塊22和發(fā)送模塊23。其中:接收模塊21用于接收客戶端發(fā)送的待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù)。計(jì)算模塊22用于根據(jù)待聚合點(diǎn)坐標(biāo)集合和聚合算法參數(shù),采用聚合算法得到聚合點(diǎn)坐標(biāo)集合。發(fā)送模塊23用于將聚合點(diǎn)坐標(biāo)集合發(fā)送給客戶端。
聚合算法可以為基于方格和距離的點(diǎn)位聚合算法。基于方格和距離的點(diǎn)位聚合算法技術(shù)成熟,能夠兼顧計(jì)算結(jié)果準(zhǔn)確率和計(jì)算效率。另外,聚合算法也可以為基于網(wǎng)格的點(diǎn)位聚合算法、基于距離的點(diǎn)位聚合算法或者其他類型的點(diǎn)位聚合算法。
聚合算法參數(shù)可以包括坐標(biāo)類型,還包括如下的一項(xiàng)或多項(xiàng):聚合點(diǎn)顯示模式、最大聚合顯示級(jí)別、最少聚合點(diǎn)數(shù)量、外包正方形尺寸。
發(fā)送模塊23還可以用于將聚合點(diǎn)坐標(biāo)集合以json格式數(shù)據(jù)發(fā)送給客戶端。json格式數(shù)據(jù)具有通用性強(qiáng)等優(yōu)點(diǎn)。
計(jì)算模塊22還可以用于:分別計(jì)算聚合點(diǎn)坐標(biāo)集合中的各個(gè)聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量;若聚合點(diǎn)對(duì)應(yīng)的原始待聚合點(diǎn)數(shù)量小于最少聚合點(diǎn)數(shù)量,則從聚合點(diǎn)坐標(biāo)集合中刪除該聚合點(diǎn),并且將該聚合點(diǎn)對(duì)應(yīng)的所有原始待聚合點(diǎn)加入聚合點(diǎn)坐標(biāo)集合中。該本發(fā)明實(shí)施方式的電子地圖點(diǎn)位聚合服務(wù)端裝置中,篩除了聚合原始點(diǎn)位數(shù)量不達(dá)標(biāo)的聚合點(diǎn),優(yōu)化了聚合處理結(jié)果。
根據(jù)本發(fā)明的技術(shù)方案,采用后端運(yùn)行策略,將點(diǎn)位聚合運(yùn)算從前臺(tái)的客戶端轉(zhuǎn)移到后臺(tái)的服務(wù)端中,能夠提升運(yùn)算效率及穩(wěn)定性,從而提升用戶體驗(yàn)。
為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明的內(nèi)容,下面結(jié)合具體實(shí)施例作詳細(xì)描述。
圖3是根據(jù)本發(fā)明實(shí)施方式的點(diǎn)位聚合服務(wù)端裝置的工作過程示意圖。
首先,該實(shí)施方式的點(diǎn)位聚合服務(wù)端裝置接收一些輸入項(xiàng)數(shù)據(jù)。這些輸入項(xiàng)包括待聚合點(diǎn)坐標(biāo)集合以及一些聚合算法中要用到的參數(shù)。這些參數(shù)具體介紹如下:
(1)坐標(biāo)類型(必選參數(shù)):目前使用較多電子地圖分別為百度地圖和谷歌地圖,因此支持這兩種地圖類型的坐標(biāo)數(shù)據(jù)計(jì)算。
(2)聚合點(diǎn)顯示模式(可選參數(shù)):是指聚合點(diǎn)最終呈現(xiàn)在頁面上時(shí)的展示位置模式??梢詫⒕酆宵c(diǎn)的展示位置選為該聚合點(diǎn)所代表的多個(gè)被聚合點(diǎn)的質(zhì)心,也可以選為該聚合點(diǎn)所代表的多個(gè)被聚合點(diǎn)中的第一個(gè)被聚合點(diǎn)。默認(rèn)設(shè)置為選第一個(gè)被聚合點(diǎn)。
(3)最大聚合顯示級(jí)別(可選參數(shù)):用戶可以設(shè)置電子地圖的最大聚合顯示級(jí)別,大于該級(jí)別就不進(jìn)行相應(yīng)的聚合。默認(rèn)值為18級(jí)。
(4)最少聚合點(diǎn)數(shù)量(可選參數(shù)):用戶可以設(shè)置最少的聚合點(diǎn)數(shù)量,小于該數(shù)量的不能進(jìn)行聚合操作。默認(rèn)值為2個(gè)點(diǎn)。
(5)外包正方形尺寸(可選參數(shù)):用戶可以設(shè)置聚合算法中的外包的方格的尺寸大小。默認(rèn)值為100×100像素。
然后,基于以上的輸入項(xiàng)按照基于方格和距離的點(diǎn)聚合算法進(jìn)行計(jì)算。具體地,即迭代每個(gè)點(diǎn),按照外包正方形尺寸繪制其外包正方形,如果兩個(gè)點(diǎn)之間的外包正方形不相交,則這兩個(gè)點(diǎn)分別作為一個(gè)聚合點(diǎn),如果相交,則聚合到之前的聚合點(diǎn)中,如果多個(gè)相交,則計(jì)算距離,聚合到最近的聚合點(diǎn)上。如此循環(huán),直到所有的待聚合點(diǎn)都遍歷完畢。需要說明的是,在計(jì)算過程中,點(diǎn)位聚合服務(wù)端裝置可以先根據(jù)輸入的坐標(biāo)類型對(duì)不同的坐標(biāo)類型數(shù)據(jù)進(jìn)行轉(zhuǎn)換,然后再進(jìn)行計(jì)算。經(jīng)過計(jì)算可以得到中間項(xiàng),該中間項(xiàng)即初步聚合結(jié)果,包括聚合點(diǎn)坐標(biāo)集合和聚合點(diǎn)數(shù)量集合,其中聚合點(diǎn)坐標(biāo)集合中的元素與聚合點(diǎn)數(shù)量集合中的元素一一對(duì)應(yīng)。例如,聚合點(diǎn)坐標(biāo)集合A={聚合點(diǎn)1的坐標(biāo),聚合點(diǎn)2的坐標(biāo),……聚合點(diǎn)n的坐標(biāo)},聚合點(diǎn)數(shù)量集合B={聚合點(diǎn)1所代表的原始點(diǎn)的數(shù)量,聚合點(diǎn)2所代表的原始點(diǎn)的數(shù)量,……聚合點(diǎn)n所代表的原始點(diǎn)的數(shù)量}。然后進(jìn)一步優(yōu)化聚合點(diǎn)坐標(biāo)集合,即:在初步得到的聚合點(diǎn)坐標(biāo)集合中,如果某個(gè)聚合點(diǎn)所代表的原始待聚合點(diǎn)的數(shù)量小于最少聚合點(diǎn)數(shù)量,那么刪除該不達(dá)標(biāo)的聚合點(diǎn),并且將該聚合點(diǎn)所對(duì)應(yīng)的原始待聚合點(diǎn)以“各個(gè)原始點(diǎn)位作為一個(gè)集合的元素”加入到聚合點(diǎn)坐標(biāo)集合中。
最后,輸出優(yōu)化后聚合點(diǎn)坐標(biāo)集合。需要說明的是,輸出項(xiàng)中還可以附帶一些其他的屬性信息,便于單個(gè)點(diǎn)定位時(shí)可進(jìn)行其他的地圖操作。
測(cè)試證明,本發(fā)明實(shí)施例的點(diǎn)位聚合服務(wù)端能夠在百萬級(jí)以上點(diǎn)位要素聚合的高效穩(wěn)定運(yùn)行,兼容性較好,可跨平臺(tái)使用。它能夠降低瀏覽器負(fù)荷,能夠加速點(diǎn)聚合結(jié)果展示過程,從而提升用戶體驗(yàn),
上述具體實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。