如何计算 geohash 上的相邻网格。需要算法

How to calculate the neighbouring grids on geohash. Algorithms required

您好,我正在使用一个实现了 geohash 的数据库

因此,如上所示,随着缩放级别下降(6 个缩放级别),更多 abcd 被插入到每个网格中。我将它们表示为刚性网格;但是,所有网格的中心点都不同。因此,例如,从 ab 的距离与从 ac 的距离不同。

如果是刚性网格,我可以只得到最近的四个相邻网格;但是,我不能这样做,因为距离不同并且最近的邻居不一定是正交的。我从数据库中获得的唯一信息是每个网格的中心点和 geohash 键,例如aaab 等..

如何找到每个缩放级别的每个网格正北、西、东和南的网格? (有 6 个缩放级别)

如您所见,例如,以 d 结尾的单元格有一个具有相同前缀但以 b 以北结尾的单元格。这允许您设置映射 table.

在某些情况下,例如 cb 向北,您最终会到达 ad,诀窍是识别从 *b 向北您需要查看之前的字符(在本例中为 c),从该字符 (a) 向北并添加该列 (d) 的 south-most 边缘。

简而言之,就是实现一些映射 tables 和一些处理边缘的逻辑。