我看过这篇关于 geohashes 的帖子。据作者介绍,计算散列的最后一步是交错 x 和 y 索引值。但这真的有必要吗?只要哈希表是根据更改后的索引规则构建的,是否有适当的理由不只是连接这些值?
问问题
292 次
2 回答
2
从维基页面
Geohashes 提供了任意精度等属性,以及逐渐从代码末尾删除字符以减小其大小(并逐渐失去精度)的可能性。
如果您只是连接 x 和 y 坐标,那么用户在尝试通过小心地从 x 和 y 坐标中删除正确数量的字符来降低精度时必须更加小心。
于 2013-07-05T12:07:18.713 回答
0
与任意精度相比,有一个相关(且更重要)的原因:具有公共前缀的 Geohashes 彼此接近。共同前缀越长,它们越接近。
54.321 -2.345 has geohash gcwm48u6
54.322 -2.346 has geohash gcwm4958
(见http://geohash.org试试这个)
此功能可以快速查找附近的点(尽管有一些复杂性),并且仅在我们将两个维度交错以获得一种近似的 2D 邻近度度量时才有效。
正如维基百科条目继续解释的那样:
在数据库中使用时,geohashed 数据的结构有两个优点。首先,由 geohash 索引的数据将在连续切片中包含给定矩形区域的所有点(切片数量取决于所需的精度和 geohash“断层线”的存在)。这在单个索引查询比多索引查询更容易或更快的数据库系统中特别有用。其次,这种索引结构可用于快速而肮脏的邻近搜索——最近的点通常在最近的地理哈希中。
请注意,反过来并不总是正确的 - 如果两个点碰巧位于细分的任一侧(例如赤道的任一侧),那么它们可能非常接近但没有共同的前缀。因此,我前面提到的并发症。
于 2014-07-21T22:04:00.510 回答