GeoHash算法

2021-09-13  本文已影响0人  poteman

一句话概括:将经纬度编码成字符串。

1. 对经度而言,例如一个位置的经度为30.01242,首先将经度区间切分成两部分,(-90,0)
和(0,90),若处于第一个区间,则第一位编码为0,否则为1;接着再将区间切成两部分(0,45)和(45,90),同理,若若处于第一个区间,则编码为0,否则为1;不断重复这个步骤,例如切分10次,可以获得一个十位数字的二进制编码;
2. 对纬度也同样进行上述操作,同样获得一个十位数字的二进制编码;
3. 将经纬度的二进制编码合并,奇数位放置经度编码,偶数位放置纬度编码,交错放置,获得一个20位数字的二进制编码;
4. 对获得的20位数字二进制编码进行base32编码,每5位二进制数字会获得一个编码,最终获得的编码长度是4位。
对于geohash编码,前缀编码一致的位数越多,两者距离越近。但是反之不成立。
上一篇下一篇

猜你喜欢

热点阅读