简介
Geohash是用于将二维经纬度映射成一个一维编码,可以排序,可以比较。方便计算机存储与索引。
原理
分别将经纬度进行二等分逐渐逼近真正的目标经纬度,以维度(39.92324)为例:
- 将维度范围[-90,90]二等分成两个区间[-90,0][0,90],如果目标维度位于前一个区间,则编码为0,否则为1.
- 维度(39.92324)在[0,90]区间内,所以第一个编码为1。
- 再将[0,90]区间二等分成[0,45][45,90],维度(39.92324)在[[0,45]]区间内所以为0
- 以此类推到自己想要的精度
这里就推到第三次维度编码为:101
同理经度(116.39569)为例对(-180, 180)依次细分推出编码为:110 - 接下来将经纬度合并奇维偶经,奇数位是维度,偶数位是经度。得到111001
- 最后,用0-9,b-z(去掉ailo)这32个字符 进行base32编码,得到wx
111001转成十进制是57=28+29 即是wx
解码算法与编码算法相反,先进行base32解码,然后分离出经纬度,最后根据二进制编码对经纬度范围进行细分即可。也可以直接去geohash.org网站上解析。这里不再赘述。