Geohash
GeoHash是目前比较主流的实现位置服务的技术,Geohash算法将通过纬度二维数据编码为一个字符串,本质上是一个降维的过程,
一个栗子
地点
经纬度
Geohash
鸟巢
116.402843,39.999375
wx4g8c9v
水立方
116.3967,39.99932
wx4g89tk
故宫
116.40382,39.918118
wx4g0ffe
水立方就在鸟巢在附近,距离600米左右,而故宫到鸟巢直线距离9公里左右,体现在Geohash上,鸟巢和水立方的前五位是一样的,而鸟巢和故宫只有前4位是一样的,根本Geohash前面相同的越多,两个位置越近,但是反过来说,却不一定正确,这个在后面会详细介绍。
原理
将经纬度转换为Geohash大体可以分为三步曲:
将纬度(-90,90)平均两个两个区间(-90,0),(0,90),如果坐标位置的纬度值在第一区间,则编码是0,否则编码为1。我们用39.918118体现,由于39.918118属于(0,90),所以编码为1,然后我们继续将(0,90)分为(0,45),(45,90)两个区间,而39.918118位
1