elasticsearch ElasticSearch QuadPrefixTree与GeohashPrefixTree,elasticsearch,geospatial,spatial,quadtree,elasticsearch,Geospatial,Spatial,Quadtree" /> elasticsearch ElasticSearch QuadPrefixTree与GeohashPrefixTree,elasticsearch,geospatial,spatial,quadtree,elasticsearch,Geospatial,Spatial,Quadtree" />

elasticsearch ElasticSearch QuadPrefixTree与GeohashPrefixTree

elasticsearch ElasticSearch QuadPrefixTree与GeohashPrefixTree,elasticsearch,geospatial,spatial,quadtree,elasticsearch,Geospatial,Spatial,Quadtree,我是ElasticSearch的新手,我想了解使用Geohash和四叉树之间的区别。书中写道: GeohashPrefixTree-将GeoHash用于网格正方形。Geohash是经纬度交织位的base32编码字符串。所以散列越长,越精确。添加到geohash的每个字符表示另一个树级别,并向geohash添加5位精度。geohash表示一个矩形区域,有32个子矩形。Elasticsearch中的最大级别数为24 QuadPrefixTree-对网格正方形使用四叉树。与geohash类似,四叉树

我是ElasticSearch的新手,我想了解使用Geohash和四叉树之间的区别。书中写道:

  • GeohashPrefixTree-将GeoHash用于网格正方形。Geohash是经纬度交织位的base32编码字符串。所以散列越长,越精确。添加到geohash的每个字符表示另一个树级别,并向geohash添加5位精度。geohash表示一个矩形区域,有32个子矩形。Elasticsearch中的最大级别数为24
  • QuadPrefixTree-对网格正方形使用四叉树。与geohash类似,四叉树将纬度和经度的位交织在一起,得到的哈希是一个位集。四叉树中的树级表示该位集中的2位,每个坐标对应一位。Elasticsearch中四叉树的最大级别数为50
我不明白其中的区别,例如,如果我接受以下观点: 纬度/经度=42.9123456,21.799986 geohash是srxs05fq8。 有人能解释一下我如何计算四叉树表示吗


此外,什么时候更喜欢一个而不是另一个

在ElasticSearch中,您可以通过

如果您想自己计算四叉树值(在ElasticSearch之外),我建议使用,它还包括一个健壮的四叉树实现。使用此库,计算四叉树非常简单:

quad=quadtree.encode(38.90533,-77.01965)

我已经创建了一个使用

在四叉树上使用geohash有几个好处:

  • 跨语言支持。geohash有多种语言(c、java、python、ruby、perl、javascript)的开源实现。如果您需要外部贡献者来连接您的空间数据,您可以使用geohash获得最大的灵活性。如果您使用python作为应用程序编程语言,那么有一个预构建的c扩展,可以帮助您以比四叉树更快的速度计算geohash值

    • 虫子搜索。Geohash在开源社区(如ElasticSearch、MongoDB等)中被广泛采用,它将Geohash索引作为空间索引的一种形式在其系统中实现。如果您的数据遇到了一些奇怪的问题,那么使用geohash发现问题(和解决方案)的几率会更高

    • 社区。您可以通过geohash.org上的可共享URL创建将geohash转换为可见地图的URL。例如,这里有一个


可以实现四叉树,以更精确地交织位。四叉树几乎相同。geohash正在向数据结构中添加具有可变精度的特殊变量字符串标识符。这两种方法都通过交错位使用z阶空间填充曲线。将坐标转换为二进制并交错。将其视为基数为4的数字。

四叉树更容易预测,因为每个级别跨越一个正方形,而在geohash表示中,有时跨越正方形,有时跨越矩形

见:


因此,如果您呈现的是用户可以调整分辨率的热图,quadtree将提供一个更平滑的界面,因为用户将知道,正方形的宽度和高度将在每个级别递增/递减2倍。

Geohash是一个整数,因此您可以转换为任何其他基准。。。Geohash的层次结构基于递归的4区域分割,因此表示simmetric结构(具有可预测几何体)的正确基是base4。Geohash本身就是一种四叉树:参见“点四叉树”或“点区域四叉树”更广泛的概念。