代码之家  ›  专栏  ›  技术社区  ›  Ondra

如何在AppEngine中存储和搜索地理数据?

  •  7
  • Ondra  · 技术社区  · 16 年前

    在我的应用程序中,我想存储地理数据(经度和纬度)。然后我想问“这个地区是哪个地方”。不能使用类似SQL的查询,因为gql中“只允许在一个属性上使用不平等筛选器” link text

    您知道另一个解决方案吗?如何将这些数据存储在appengine数据库中,并使用gql请求这些数据?

    2 回复  |  直到 16 年前
        1
  •  7
  •   npdoty    16 年前

    我已经成功地使用了 geomodel 用于在应用引擎数据存储中存储和查询lat/lon数据的开源项目。它使用了 geohash 为了能够在单个属性上进行查询,它既可以用于Python和Java,也可以是开源的,如果需要的话,您可以修改代码以适合您的特定情况。

    值得注意的是,几周前谷歌I/O宣布,数据存储将在某天(希望很快)使用希尔伯特曲线在内部为地理空间和日期查询提供本地支持。这将允许快速查询边界框,甚至在任意多边形查询中。你可以看 the video 关于网上讨论的更多细节,这是一个相当有趣的讨论。

        2
  •  0
  •   Drew Sears    16 年前

    你可以使用 Geohash 要将纬度和经度编码为单个字符串,然后只需使用升序和降序属性索引来查找最近的匹配项。