本發(fā)明涉及一種基于地圖的海量數(shù)據(jù)聚合顯示方法,屬于地圖的海量數(shù)據(jù)聚合顯示技術(shù)領(lǐng)域。
背景技術(shù):
互聯(lián)網(wǎng)技術(shù)飛速發(fā)展帶來的各類信息化產(chǎn)品越來越多,特別近兩年大數(shù)據(jù)技術(shù)的慢慢成熟為大型政企的管理提供了更精細化的數(shù)據(jù)支持,如基于海量數(shù)據(jù)地圖展示的指揮管理及調(diào)度系統(tǒng)應(yīng)用也越來越多。
海量數(shù)據(jù)的前端顯示與傳統(tǒng)的顯示技術(shù)最大的區(qū)別就是數(shù)據(jù)量變的很大,由于傳統(tǒng)的地圖引擎大多是基于關(guān)系型數(shù)據(jù)庫的,其數(shù)據(jù)量到百萬級查詢速度就已經(jīng)很慢了,在地圖上展現(xiàn)效率更是低下,而基于大數(shù)據(jù)的系統(tǒng)往往數(shù)據(jù)量都在數(shù)十億條以上,相應(yīng)需要展示的數(shù)據(jù)量也隨之很大,所以急需一種為海量數(shù)據(jù)提供基于地圖的展示方法。
當(dāng)前一些類似應(yīng)用中,為了解決該問題,大多采用將數(shù)據(jù)結(jié)合進地圖后將地圖進行切片,再由前端展現(xiàn),該方法雖然可以解決顯示效率問題,但無法展現(xiàn)實時變化的數(shù)據(jù)。而在實際應(yīng)用中經(jīng)常會碰到例如地圖上車輛位置展示、天氣實況展示、設(shè)備地域分布展示等等情況,該方法則無法滿足需求。
技術(shù)實現(xiàn)要素:
針對上述現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種基于地圖的海量數(shù)據(jù)聚合顯示方法,可解決現(xiàn)有技術(shù)中海量數(shù)據(jù)在地圖上展示的性能問題。
為了實現(xiàn)上述目的,本發(fā)明采用的一種基于地圖的海量數(shù)據(jù)聚合顯示方法,其具體步驟如下:
步驟1、調(diào)用任一地圖作為底圖;
步驟2、在調(diào)用的地圖上添加網(wǎng)格覆蓋物層,網(wǎng)格覆蓋物層中的網(wǎng)格數(shù)為當(dāng)前要顯示的數(shù)據(jù)數(shù);
步驟3、從服務(wù)端獲取需要展示的數(shù)據(jù),遍歷數(shù)據(jù)與每個網(wǎng)格所包含的經(jīng)緯度范圍進行比較,將落入同一網(wǎng)格內(nèi)的數(shù)據(jù)進行聚合,聚合方式可根據(jù)需求而定;
步驟4、通過前三步得到當(dāng)前屏幕要展示的聚合后數(shù)據(jù),將所有數(shù)據(jù)定位到其對應(yīng)的網(wǎng)格經(jīng)緯度并渲染到地圖中,即達到數(shù)據(jù)聚合展示的目的。
當(dāng)?shù)貓D層級變化時,即地圖放大或縮小時,只需重復(fù)執(zhí)行步驟2至步驟4即可。
上述步驟1中調(diào)用的地圖是百度在線地圖、高德在線地圖或各種離線地圖。
上述步驟3中的聚合方式取同一網(wǎng)格內(nèi)數(shù)據(jù)的平均值,或者取同一網(wǎng)格內(nèi)數(shù)據(jù)的數(shù)量。
本發(fā)明使用聚合顯示方法,通過地圖顯示級別,將地理位置相近的數(shù)據(jù)聚合為一個數(shù)據(jù)點,以按當(dāng)前屏幕經(jīng)緯度范圍來獲取數(shù)據(jù)展示,以達到地圖標(biāo)注數(shù)據(jù)高速顯示的目的,解決了現(xiàn)有技術(shù)中海量數(shù)據(jù)在地圖上展示的性能問題。
附圖說明
圖1為本發(fā)明的流程示意圖;
圖2為本發(fā)明在底圖上添加網(wǎng)格覆蓋物層后的示意圖;
圖3為本發(fā)明經(jīng)過前四個步驟后的數(shù)據(jù)渲染示意圖;
圖4為本發(fā)明地圖放大后的數(shù)據(jù)渲染示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明。該實施例用于舉例說明,并不用于限制本發(fā)明,如聚合的方式可靈活修改。
以基于web地圖的氣象格點圖為例,具體按以下步驟實施:
步驟1、調(diào)用百度在線地圖做為底圖。
步驟2、在地圖上添加網(wǎng)格覆蓋物層,覆蓋物層以當(dāng)前間隔尺度(interval)為柵格格點單位均勻的分布在地圖上,間隔尺度是地圖上每個網(wǎng)格的長寬,即取當(dāng)前屏幕長(像素)和寬(像素)除以需要顯示的網(wǎng)格數(shù),該網(wǎng)格數(shù)即為當(dāng)前要顯示的氣象要素數(shù)。如圖2所示,在底圖上添加網(wǎng)格,網(wǎng)格的長寬根據(jù)當(dāng)前需要顯示的聚合后的數(shù)據(jù)數(shù)量而定。
步驟3、通過當(dāng)前屏幕的地圖最大經(jīng)緯度和最小經(jīng)緯度從服務(wù)端獲取需要展示的數(shù)據(jù),遍歷數(shù)據(jù),將數(shù)據(jù)的經(jīng)緯度屬性與網(wǎng)格覆蓋物層中每個網(wǎng)格所包含的經(jīng)緯度范圍進行比較,將落入同一網(wǎng)格內(nèi)的數(shù)據(jù)進行聚合,并記錄下對應(yīng)網(wǎng)格中心點的經(jīng)緯度,聚合的方式可根據(jù)需求而定,在這里采用求平均值的方式,即將落入同一網(wǎng)格內(nèi)的要素值求和后除以同一網(wǎng)格內(nèi)的要素數(shù)量得到平均值。
步驟4、通過前三步得到當(dāng)前屏幕要展示的聚合后要素值,將所有要素定位到其對應(yīng)的網(wǎng)格經(jīng)緯度并渲染到web地圖中,即達到數(shù)據(jù)聚合展示的目的。
如圖3為渲染后的地圖數(shù)據(jù)格點展示效果,該圖展示的是采用平均值方式聚合后的要素值渲染效果。
而當(dāng)?shù)貓D層級變化時,即地圖放大或縮小時,只要重復(fù)執(zhí)行步驟2至步驟4即可。如圖4為地圖放大后格點渲染的效果,屏幕中顯示的格點數(shù)沒有改變,但展示的數(shù)據(jù)粒度更細。
上述步驟1中調(diào)用的地圖也可以是高德在線地圖或各種離線地圖。
上述步驟3中的聚合方式是取同一網(wǎng)格內(nèi)數(shù)據(jù)的平均值。此外,也可取同一網(wǎng)格內(nèi)數(shù)據(jù)的數(shù)量。
實施例一:
以氣象精細化預(yù)報格點數(shù)據(jù)為例,以高德地圖為底圖,先通過當(dāng)前屏幕顯示范圍的坐標(biāo)取最小坐標(biāo)與最大坐標(biāo),定義間隔尺度,生成方格,將預(yù)報格點數(shù)值依次判斷其坐標(biāo)落點,將落入同一方格的數(shù)據(jù)進行平均值計算得出一系列代表點,同時記下屏幕范圍內(nèi)代表點的最大值與最小值并取整,根據(jù)預(yù)先定義好的圖例色階計算每個顏色所對應(yīng)的數(shù)值范圍。
調(diào)用高德地圖polygon類循環(huán)畫出覆蓋物,根計算據(jù)代表點的經(jīng)度long、緯度lat計算生成輪廓線的節(jié)點坐標(biāo)數(shù)組:[newamap.lnglat((long,lat)),newamap.lnglat((long+interval/1000,lat)),newamap.lnglat((ong+interval/1000,lat-interval/1000)),newamap.lnglat((long,lat-interval/1000))],該格點的顏色由當(dāng)前的值去映射關(guān)系中獲取,循環(huán)結(jié)束,畫出格點層;在格點上展示平均值時,可以調(diào)用marker類循環(huán)添加marker層,marker的顯示位置為代表點的經(jīng)度long、緯度lat,marker的內(nèi)容是代表點的平均值。
最后通過調(diào)用地圖api和預(yù)先計算好圖例數(shù)值將圖例畫出。
綜上所述,通過本發(fā)明算法可將幾十甚至上百萬預(yù)報格點數(shù)據(jù)快速的展示到地圖上,從而達到讓預(yù)報員更加直觀的了解天氣情況。
實施例二:
以車輛監(jiān)控系統(tǒng)為例,以高德地圖為底圖,取當(dāng)前屏幕坐標(biāo)最小與最大值,定義間隔尺度,生成方格,取出所有要顯示的車輛信息,循環(huán)取出車輛當(dāng)前坐標(biāo),將落入同一方格的車輛數(shù)據(jù)累加,得出同一區(qū)域內(nèi)聚合了多少輛車,并將方格坐標(biāo)做為代表點。
調(diào)用高德地圖的marker類循環(huán)添加marker層的圖標(biāo),marker的顯示位置為代表點的坐標(biāo)位置,marker的顯示內(nèi)容為代表點的車輛數(shù)量總和。
綜上所述,通過聚合算法實現(xiàn)大量的車輛數(shù)據(jù)高速高效的同時在地圖上展示,用戶可一目了然的查看車輛數(shù)量和位置。