Cod*_*ner 5 spatial quadtree geospatial elasticsearch
我是 ElasticSearch 的新手,我想了解使用 geohashes 和四叉树之间的区别。参考文献中写道:
我不明白其中的区别,例如,如果我采取以下观点: Latitude / Longitude = 42.9123456, 21.799986 geohash 是srxs05fq8。谁能解释一下如何计算四叉树表示?
此外,什么时候选择其中一种更好?
小智 1
在 ElasticSearch 中,您可以通过将树选项设置为四叉树来选择使用四叉树
如果您想自己计算四叉树值(在 ElasticSearch 之外),我推荐使用python-geohash 模块,该模块还包含强大的四叉树实现。使用这个库,计算四叉树就像这样简单:
四边形=四叉树.编码(38.90533,-77.01965)
我创建了一个在 python 中使用四叉树库的示例
与四叉树相比,使用 geohash 有几个好处:
跨语言支持。geohash 有多种语言(c、java、python、ruby、perl、javascript)的开源实现。如果您需要外部贡献者来连接您的空间数据,您可以通过 geohash 获得最大的灵活性。如果您使用 python 作为应用程序编程语言,则有一个预构建的 c 扩展可以帮助以比四叉树更快的速度计算 geohash 值。
错误狩猎。Geohash 在开源社区(例如 ElasticSearch、MongoDB 等)中被广泛采用,在其系统中实现 geohash 索引作为空间索引的一种形式。如果您的数据遇到奇怪的情况,使用 geohash 找到问题(和解决方案)的几率会更高。
社区。您可以通过 geohash.org 上的可共享 URL 创建将 geohash 转换为可见地图的 URL。例如,这是华盛顿特区的 URL