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

Posted

技术标签:

【中文标题】如何计算 geohash 上的相邻网格。需要算法【英文标题】:How to calculate the neighbouring grids on geohash. Algorithms required 【发布时间】:2017-05-16 11:37:35 【问题描述】:

您好,我正在使用带有 geohash 实现的数据库

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

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

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

【问题讨论】:

【参考方案1】:

如您所见,以d 结尾的单元格在其北边有一个前缀相同但以b 结尾的单元格。这允许您设置映射表。

在这种情况下,例如cb 向北,你最终到达ad,诀窍是要认识到从*b 向北你需要查看前一个字符(在这种情况下,@ 987654326@),从该字符向北 (a) 并添加该列的最南端 (d)。

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

【讨论】:

以上是关于如何计算 geohash 上的相邻网格。需要算法的主要内容,如果未能解决你的问题,请参考以下文章

REDIS09_LBS出现背景GEO算法介绍算法步骤剖析邻近网格位置推算

Geohash 基本知识及 .NET 下计算相邻8个区域编码

地理空间索引:GeoHash原理

地理空间索引:GeoHash原理

GeoHash算法学习讲解解析及原理分析

GeoHash算法附近寻址