关于GeoHash的了解是我在做爬虫时发现一些网站比如美团、饿了么都会把一些地理位置进行编码,在检索时能够更快的进行地理空间上的检索,找到距离相近的位置。
GeoHash 原理
将二维的经纬度坐标点转换为一维的字符串,也就是编码,某一个字符串表示了某一个矩形区域,也就是说在这个矩形区域中的所有经纬度点都共享一套编码也就是字符串。
内部的实现采用的是GeoHash算法,其实质其实是二分法。
纬度范围在[-90,90],经度范围在[-180,180]
拿到一个location时(116.389550, 39.928167)
对纬度区间[-90,90]二分,[-90,0]及[0,90],显然纬度39.928167在[0,90]
得到第一次二分的结果,得到第一次二分结果1
同样继续二分[0,90],[0,45]及[45,90],39.928167在[0,45],得到第二次二分结果0。
不断进行二分,39.928167总是属于某个区间[a,b]。随着每次迭代区间[a,b]总在缩小,并越来越逼近39.928167。
而二分停止时区间的长度也就决定了编码的长度,也决定了所表示范围的精确程度。
这样纬度二分结束,可以得到一串0-1编码,纬度产生的编码为10111 00011