geohash的使用背景
从地理信息学角度来来分析,在地球中纬度的区间范围为[-90,90],而经度的区间范围为[-180,180]。当将指定位置经纬度获取,转换为geohash再与相应范围geohash相匹配,就可以为他推荐相同geohash的相关信息。甚至可以实现一定程度上地理坐标位置的保密性。
geohash介绍与理解
通常geohash代表着某一地图中的矩形区域,而不是某个坐标
字符串相似的表示距离相近,这样可以利用字符串的前缀匹配来查询附近的POI信息。如下两个图所示,一个在城区,一个在郊区,城区的GeoHash字符串之间比较相似,郊区的字符串之间也比较相似,而城区和郊区的GeoHash字符串相似程度要低些
geohash算法原理
geohash通过获取到的坐标点放入地球的经纬度区间中,通过二分查找法,找到记作1未找到记作0,如下图所示:
将经度与纬度都转化一种0和1的编码格式,再将其合并为一串,合并规则为去0到n的下标序号,将经度放在下标为偶数上,将纬度放在下标为奇数上,进行合并,如下图所示:
通过合并获得一串二进制数,将其转为10进制,再通过base32或者base36进行压缩,从而获得我们现在看到的geohash的字符串。