首先将纬度分为[-90,0)和[0,90]两个区间,分别称为左区间和右区间
判断39.928167归属于左区间或是右区间,此例位于右区间记为1
继续判断39.928167位于[0,45)或[45,90],此例位于做区间记为0
递归上述过程,通过二分查找不断逼近精确的纬度
随着二分查找的次数增加,收获101110001100011的序列
同理,对经度116.389550进行编码。通过上述计算经度产生的编码为101110001100011
奇数位放纬度,偶数位放经度,两条序列交织组成以下序列
将组成的序列按照Base32进行编码(0-9,以及b-z去掉i,l,o等易混淆字符),得到编码wx4g0e
不同的编码长度表示不同的范围区间,字符串越长表示的范围越精确。
Peano曲线会发生突变(如示意图0111到1000),即序号连续的区域在位置上并不紧邻 。可以通过处理边界条件或选用更好的空间填充曲线进行解决,如Hilbert曲线。
具有相同前缀的Geohash索引空间上紧邻,但区域边缘会出现前缀不同但位置上紧邻的情况。可以通过查询临近区域,并对临近区域再次计算的方式进行解决。