0

在 GeoHash 的情况下,靠近的两个点可以具有完全不同的哈希值,从而无法进行前缀比较之类的事情。这是因为在祖先线的某个地方,有一个分裂(在地理分组中)。

S2 如何尝试解决该问题以进行查询?我在 S2 上阅读了一堆帖子,但无法理解。

4

1 回答 1

0

我不会说 S2 解决了这个问题。两个关闭点在 S2 中也可能仍然具有完全不同的单元格 ID。可以说 S2 的希尔伯特曲线比 GeoHash 使用的 Z 曲线稍微少一些,但根本问题仍然存在。

但是,当您使用 S2 时,通常不会使用前缀比较,而是使用区间搜索。或者,您可以在一个点的特定半径内计算一些可能的前缀并搜索它们。当然,您也可以使用 GeoHash 来完成这两种方法。

S2 使用 GeoHash 解决了一个不同的问题,这使得使用 GeoHash 进行附近搜索变得不切实际,除非在本地情况下:单元格的大小和几何形状非常不同。两极附近的 GeoHash 单元比赤道附近的同级单元要小得多(实际面积)。近极地 GeoHash 单元也被拉伸。S2 细胞在全球范围内更加均匀。

于 2021-11-05T05:11:23.617 回答