通俗的了解geohash
1.從地圖直觀上看geohash
geohash 打個(gè)比方就是把世界地圖平鋪填充到一個(gè)矩形殼子里,然后像切蛋糕一樣,分成若干份兒;每份又可以細(xì)分;當(dāng)分的粒度越小時(shí),蛋糕也就越小,代表的面積也就越小。這個(gè)時(shí)候?qū)@些小塊進(jìn)行編號(hào),就可以通過唯一的標(biāo)識(shí)定位到”一塊“對(duì)應(yīng)大小蛋糕。

2.從數(shù)據(jù)的轉(zhuǎn)變看geohash
這讓我想到如果在一個(gè)平面中如果我們需要定位一個(gè)點(diǎn),一般都會(huì)引入坐標(biāo)系(比如地球的經(jīng)緯度就是一個(gè)坐標(biāo)系),最早我們學(xué)習(xí)經(jīng)緯度的時(shí)候,我們會(huì)拿著尺子,在X軸上在對(duì)應(yīng)的數(shù)值畫一豎線,平行于Y軸,然后在Y軸上畫一道橫線平行于X軸,我們畫的兩條線會(huì)交差于一點(diǎn),我們稱為目標(biāo)點(diǎn),這個(gè)目標(biāo)點(diǎn)我們就可以用X軸上的數(shù)字
和Y軸上的數(shù)字來表示(10,10)。
如果我們像用類似geohash方式來表達(dá)這個(gè)目標(biāo)點(diǎn)的時(shí)候呢?我們就需要用類似一條線一樣的東西,把所有點(diǎn)都串起來,這樣就可以通過線上的某一點(diǎn)來標(biāo)識(shí)出目標(biāo)點(diǎn)的位置。

如果直接用geohash的開發(fā)包(java的ch.hsr.geohash),我們可以省去實(shí)現(xiàn)geohash的算法,我們可以通過一組經(jīng)緯度坐標(biāo)獲得指定精度的geohash值。我們可以通過這個(gè)geohash值獲取中心點(diǎn)的位置。
當(dāng)前工作中負(fù)責(zé)開發(fā)的系統(tǒng)叫做LBS(實(shí)時(shí)空間地理系統(tǒng)),顧名思義,幾乎所有的業(yè)務(wù)線都是和地理信息有關(guān)。經(jīng)緯度解析、POI(興趣點(diǎn))信息查詢、等,最近一些功能優(yōu)化,接觸到geohash算法,解決了我們?nèi)舾尚枨螅?/p>
- 熱力圖展示中,用于geohash點(diǎn)聚合功能,可以提高大量點(diǎn)前端渲染的性能
- 地址聚類中,通過geohash計(jì)算,進(jìn)行地址歸類
- 地址信息緩存時(shí),通過geohash為key,來索引緩存信息