【问题标题】:How to calculate the geohash of the viewable area/bounding box?如何计算可视区域/边界框的geohash?
【发布时间】:2012-01-12 08:03:52
【问题描述】:

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

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

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

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

为了让我查询应该为当前可见的边界框返回哪些位置,我需要可见/可见边界框的 geohash of - 现在我知道我可以对中心位置进行 geohash可查看的地图,但我不知道要切掉多少个字母(以降低精度)以实现与实际边界框的“匹配”。 (或者也许不是这样......?)

当边界框容器到geohashes时你会怎么做? (就像在可视区域的中间它在 'dqcjr0' 和 'dqcjqb' 之间分割)

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

提前感谢您的帮助,

肯。

【问题讨论】:

    标签: google-app-engine google-maps google-maps-api-3 geolocation geohashing


    【解决方案1】:

    肯 您可能想更新您的问题,说明您是否使用 django / django-nonrel?

    我正要尝试将 Geomodel 的这个(当前存档)端口移植到 django:

    https://bitbucket.org/scotch/django-geomodel/

    Kyle 建议即将推出的 Google“全文搜索”将取代他的 Geomodel 实施。尽管如此,我需要它在接下来的几天内工作。

    (我当前的对话是:这个话题:

    https://groups.google.com/forum/#!topic/django-non-relational/WCxFjkUzw18 )

    乔恩

    【讨论】:

      【解决方案2】:

      我经常将 geohash 与谷歌应用引擎数据类型(即 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 会好得多。也许您已经评估了 geomodel 并发现它不适合您的目的,并且您绝对必须使用 geohash 我建议我们同意一个通用的 geohash 库,以便我们的坐标散列到相同的值。我确实保留了我在某处使用过的 geohash 库的一个版本,但它可能已经过时了,关于地理空间查询的 recent articles 也提到了地理模型,所以如果你还没有查看地理模型,我真的建议你查看地理模型库执行您的地理空间查询。

      【讨论】:

      • 当然,我在研究中遇到了 GeoModel,但由于我使用的是 django 和 django 模型,所以 geomodel 对我不起作用。 :(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2014-07-17
      • 1970-01-01
      • 2021-02-20
      相关资源
      最近更新 更多