如何计算 geohash 上的相邻网格。需要算法
Posted
技术标签:
【中文标题】如何计算 geohash 上的相邻网格。需要算法【英文标题】:How to calculate the neighbouring grids on geohash. Algorithms required 【发布时间】:2017-05-16 11:37:35 【问题描述】:您好,我正在使用带有 geohash 实现的数据库
如上所示,随着缩放级别下降(6 个缩放级别),更多的abcd
被插入到每个网格中。我将它们表示为一个刚性网格;但是,所有网格的中心点都不同。例如,从a
到b
的距离与从a
到c
的距离不同。
如果是刚性网格,我可以得到最近的四个相邻网格;但是,我不能这样做,因为距离不同并且最近的邻居不一定是正交的。我从数据库中获得的唯一信息是每个网格的中心点和 geohash 键,例如aa
、ab
等。
对于每个缩放级别,我如何找到位于每个网格的北、西、东和南的网格? (有 6 个缩放级别)
【问题讨论】:
【参考方案1】:如您所见,以d
结尾的单元格在其北边有一个前缀相同但以b
结尾的单元格。这允许您设置映射表。
在这种情况下,例如cb
向北,你最终到达ad
,诀窍是要认识到从*b
向北你需要查看前一个字符(在这种情况下,@ 987654326@),从该字符向北 (a
) 并添加该列的最南端 (d
)。
简而言之,就是实现一些映射表和一些处理边缘的逻辑。
【讨论】:
以上是关于如何计算 geohash 上的相邻网格。需要算法的主要内容,如果未能解决你的问题,请参考以下文章
REDIS09_LBS出现背景GEO算法介绍算法步骤剖析邻近网格位置推算