GeoHash 算法

【GeoHash 算法】对于很多初学者来说,“附近的人”或者类似功能,在技术实现上还有点摸不着头脑 。本文将简要的为你讲解“附近的人”的基本理论原理,并以redis的GEO系列地理位置操作指令为例,理论联系实际地为你讲解它们是如何被高效实现的 。
 
阅读提示:本文适合有一定Redis使用经验和经纬度知识的服务器后端开发人员阅读 。
 
经纬度常识 

  • 经线是纵的,经度是横的,用于表示不同的经线,纬线是横的,纬度是纵的,用于表示不同的纬线,如下图
 
GeoHash 算法

文章插图
 

GeoHash 算法

文章插图
 
  • 纬线:地球仪上的横线,lat,赤道是最大的纬线,从赤道开始分为北纬和南纬,都是0-90°,纬线是角度数值,并不是米;
  • 经线:地球仪上的竖线,lng,子午线为0°,分为西经和东经,都是0-180°,经线也是角度数值;
  • 经纬线和米的换算:经度或者纬度0.00001度,约等于1米,这个在GPS测算距离的时候可以体会到,GPS只要精确到小数点后五位,就是10米范围内的精度
  • 经度0度的位置为本初子午线,在180度的位置转为西经,数字由大到小依次经过北美洲到达西欧.纬度0度的位置为赤道
  • 为了便于理解,将地球看成一个基于经纬度线的坐标系 。纬线就是平行于赤道平面的那些平面的周线,经线就是连接南北两极的大圆线的半圆弧 。纬度分为北纬(正),南纬(负),赤道所在的纬度值为0 。经度以本初子午线界(本初子午线经度为0),分为东经(正),西经(负) 。故纬度范围可表示为[-90o, 0o),(0o, 90o],经度范围可表示为[-180o, 0o),(0o, 180o]
 
什么是geohash 


    推荐阅读