参考:https://www.cnblogs.com/LBSer/p/3310455.html
https://en.wikipedia.org/wiki/Geohash
引子
考虑一个问题,如何搜索某点附近一定范围内的满足要求的公交站。
(截了个高德的图、并不知道高德地图后台如何搜索的。。。)
- 无脑思路:把所有的公交站和当前位置都算距离筛选
- 简单思路:把当前城市/附近行政区的所有公交站和当前位置算距离筛选(天然范围)
- 优化思路:用格网剖分区域,每次都从附近的格网中搜索,如先找出附近1km的格网,再在格网中找点(人工范围)
人工范围除了要划分区域外,同时希望每个范围的名字(编码)能看出层级关系和一定程度的空间邻近关系
感性认识
所以Geohash就是把“经纬度”编码的一种方式,将地球/地图在经纬度坐标下划分网格形成。
- 标识位置。如wx4g0表示了覆盖天安门附近范围的方格
- 邻近关系。图中wx4g8、wx4g9、wx4gd….wx4g4都是五位编码,只有最后一位不同
- 层次关系。刚才所示的9个网格都在四位编码的wx4g的网格范围内,字符串越长,表