geohash是一种分层的空间数据结构,将空间网格化.并将二维坐标用一个字符串表示.
一....空间的网格化
先说明下什么是空间的网格化
将区域一分为二,分别用0,1表示,并将划分的区域继续一分为二的划分下去,如此迭代;
如图,绿色区域便可使用字符串[01]表示;
第一位0,代表蓝色区域的上半部分...第二位1,代表红色区域的下半部分,也就是绿色区域
黄色区域便可使用[010]表示,当降低精度表示时,区域值为[01],也就是绿色区域
字符串长度越长,精度也就越高....表示的并不是一个点,而是一个区域
3. geohash编码长度越短,精度越低,能表示的区域越大;反之,编码长度越长,精度越高,能表示的区域越小.
geohash算法已经被redis,elasticsearch...Peano空间填充曲线
空间填充曲线是指二维上穿过单位平方的所有点的连续曲线.
geohash算法使用的是Peano空间填充曲线,填充过程如下图.
当填充空间变多时,会按下图方式扩展.