geohash是一种分层的空间数据结构,将空间网格化.并将二维坐标用一个字符串表示.
一....空间的网格化
先说明下什么是空间的网格化
将区域一分为二,分别用0,1表示,并将划分的区域继续一分为二的划分下去,如此迭代;
如图,绿色区域便可使用字符串[01]表示;
第一位0,代表蓝色区域的上半部分...二. geohash算法
geohash算法便是基于上面空间网格化的思想,对经纬度分别进行网格化的分层处理,最后再组合一起.
1. 经纬度的分层.
以北京的经纬度116.46和39.92为例....,地理位置也还是符合北京的实际情况的....Peano空间填充曲线
空间填充曲线是指二维上穿过单位平方的所有点的连续曲线.
geohash算法使用的是Peano空间填充曲线,填充过程如下图.
当填充空间变多时,会按下图方式扩展.