我最近开始从事涉及地理位置, map (Google Maps V3)等的个人项目。

该项目是使用Python开发的,旨在在Google App Engine上运行。
我了解到,为了找到一个位置附近的标记/位置,可以使用geohash算法(这很酷)。

我不明白的是:可以说我在数据存储区中拥有所有位置(以及每个位置的纬度,经度和geohash(高精度)。)

我知道我应该使用geohash的前缀(以匹配其中的位置),但是如何计算边界框的geohash?考虑到边界框由东北和西南两点组成,所以我不知道该怎么做。

为了查询当前可见边界框应返回的位置,我需要可见/可见边界框的geohash-现在,我知道可以对可见 map 上的中心位置进行geohash了,但是我不知道如何截断许多字母(以降低精度)以实现对实际边界框的“适合”。 (或者那不是这样吗??)

当边界框容器发生geohashes时该怎么办? (就像在可见区域的中间,它在“dqcjr0”和“dqcjqb”之间分割)

另外,假设我有一个5字母的geohash,如何将其转换回可见的边框?或者换句话说,我怎么知道“包含”在哈希中,什么在相邻的哈希中?

在此先感谢您的帮助,

最佳答案

我经常将geohash与google app引擎数据类型(即db.GeoPt)一起使用,并且我经常保留一个geohash,但我发现将它与劣质的db.GeoPt结合起来效果不佳,但称为geomodel Geomodel的库有点慢,可以进行边界框和半径映射我建议您尝试使用边界框,因为它不像半径那么贵。我可以像这样执行边界框查询:

    articles = Article.bounding_box_fetch(Article.all().filter('modified >',
                          timeline).filter('published =',
                          True).filter('modified <=',
                          bookmark).order('-modified'),
                          bounds,
                          max_results=PAGESIZE + 1)

因此,即使我为每篇文章存储了geohash,在我的情况下,使用geomodel也要好得多。也许您已经评估过地理模型,发现它不符合您的目的,并且您绝对必须使用地理哈希表。我建议我们就通用的哈希表库达成共识,以使我们的坐标哈希值保持相同。我确实保留了我在某个地方使用过的geohash库的版本,但是它可能已经过时了,有关地理空间查询的recent articles也提及了geomodel,因此,如果您还没有看过geomodel,我真的建议您看一下geomodel库来执行您的地理空间查询。

10-02 07:37